"""PGVector store setup for document embeddings.""" from langchain_postgres import PGVector from langchain_openai import AzureOpenAIEmbeddings from src.config.settings import settings from src.db.postgres.connection import _pgvector_engine # Initialize embeddings embeddings = AzureOpenAIEmbeddings( azure_deployment=settings.azureai_deployment_name_embedding, openai_api_version=settings.azureai_api_version_embedding, azure_endpoint=settings.azureai_endpoint_url_embedding, api_key=settings.azureai_api_key_embedding ) # Use psycopg3 connection string (not asyncpg engine) with async_mode=True. # psycopg3 supports multi-statement SQL, which PGVector needs for # advisory_lock + CREATE EXTENSION vector. asyncpg rejects this as a prepared statement. vector_store = PGVector( embeddings=embeddings, connection=_pgvector_engine, collection_name="document_embeddings", use_jsonb=True, async_mode=True, create_extension=False, # Extension pre-created in init_db.py (avoids multi-statement asyncpg bug) ) def get_vector_store(): """Get the vector store instance.""" return vector_store