diff --git a/backend/open_webui/retrieval/vector/dbs/pgvector.py b/backend/open_webui/retrieval/vector/dbs/pgvector.py index 9deb61f5a3..d978f0c824 100644 --- a/backend/open_webui/retrieval/vector/dbs/pgvector.py +++ b/backend/open_webui/retrieval/vector/dbs/pgvector.py @@ -111,11 +111,35 @@ class PgvectorClient(VectorDBBase): try: # Ensure the pgvector extension is available - self.session.execute(text("CREATE EXTENSION IF NOT EXISTS vector;")) + # Use a conditional check to avoid permission issues on Azure PostgreSQL + self.session.execute( + text( + """ + DO $$ + BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'vector') THEN + CREATE EXTENSION IF NOT EXISTS vector; + END IF; + END $$; + """ + ) + ) if PGVECTOR_PGCRYPTO: # Ensure the pgcrypto extension is available for encryption - self.session.execute(text("CREATE EXTENSION IF NOT EXISTS pgcrypto;")) + # Use a conditional check to avoid permission issues on Azure PostgreSQL + self.session.execute( + text( + """ + DO $$ + BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_extension WHERE extname = 'pgcrypto') THEN + CREATE EXTENSION IF NOT EXISTS pgcrypto; + END IF; + END $$; + """ + ) + ) if not PGVECTOR_PGCRYPTO_KEY: raise ValueError(