From f3b0f7d3583e2bfa0f186129056275276146958f Mon Sep 17 00:00:00 2001 From: psy42a Date: Tue, 5 Aug 2025 23:27:50 +1000 Subject: [PATCH] Fix syntax error where the previous use of :metadata::text in some sqlachamy/postgres versions doesn't bind at all Fix syntax error where the previous use of :metadata::text in some sqlachamy/postgres versions doesn't bind the variable at all --- backend/open_webui/retrieval/vector/dbs/pgvector.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/open_webui/retrieval/vector/dbs/pgvector.py b/backend/open_webui/retrieval/vector/dbs/pgvector.py index 465ab45dde..0d45b10f60 100644 --- a/backend/open_webui/retrieval/vector/dbs/pgvector.py +++ b/backend/open_webui/retrieval/vector/dbs/pgvector.py @@ -203,6 +203,8 @@ class PgvectorClient(VectorDBBase): for item in items: vector = self.adjust_vector_length(item["vector"]) # Use raw SQL for BYTEA/pgcrypto + # Ensure metadata is converted to its JSON text representation + json_metadata = json.dumps(item["metadata"]) self.session.execute( text( """ @@ -211,7 +213,7 @@ class PgvectorClient(VectorDBBase): VALUES ( :id, :vector, :collection_name, pgp_sym_encrypt(:text, :key), - pgp_sym_encrypt(:metadata::text, :key) + pgp_sym_encrypt(:metadata_text, :key) ) ON CONFLICT (id) DO NOTHING """ @@ -221,7 +223,7 @@ class PgvectorClient(VectorDBBase): "vector": vector, "collection_name": collection_name, "text": item["text"], - "metadata": json.dumps(item["metadata"]), + "metadata_text": json_metadata, "key": PGVECTOR_PGCRYPTO_KEY, }, ) @@ -255,6 +257,7 @@ class PgvectorClient(VectorDBBase): if PGVECTOR_PGCRYPTO: for item in items: vector = self.adjust_vector_length(item["vector"]) + json_metadata = json.dumps(item["metadata"]) self.session.execute( text( """ @@ -263,7 +266,7 @@ class PgvectorClient(VectorDBBase): VALUES ( :id, :vector, :collection_name, pgp_sym_encrypt(:text, :key), - pgp_sym_encrypt(:metadata::text, :key) + pgp_sym_encrypt(:metadata_text, :key) ) ON CONFLICT (id) DO UPDATE SET vector = EXCLUDED.vector, @@ -277,7 +280,7 @@ class PgvectorClient(VectorDBBase): "vector": vector, "collection_name": collection_name, "text": item["text"], - "metadata": json.dumps(item["metadata"]), + "metadata_text": json_metadata, "key": PGVECTOR_PGCRYPTO_KEY, }, )