diff --git a/backend/open_webui/retrieval/vector/dbs/pgvector.py b/backend/open_webui/retrieval/vector/dbs/pgvector.py index 9deb61f5a3..4c5d1f7dcd 100644 --- a/backend/open_webui/retrieval/vector/dbs/pgvector.py +++ b/backend/open_webui/retrieval/vector/dbs/pgvector.py @@ -111,11 +111,27 @@ 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(