patch vectordb methods

Signed-off-by: Francisco Javier Arceo <farceo@redhat.com>
This commit is contained in:
Francisco Javier Arceo 2025-07-14 14:56:06 -04:00
parent 061911b993
commit 3d86619361

View file

@ -216,27 +216,31 @@ class PGVectorVectorIOAdapter(OpenAIVectorStoreMixin, VectorIO, VectorDBsProtoco
log.info("Connection to PGVector database server closed") log.info("Connection to PGVector database server closed")
async def register_vector_db(self, vector_db: VectorDB) -> None: async def register_vector_db(self, vector_db: VectorDB) -> None:
start_key = VECTOR_DBS_PREFIX # Persist vector DB metadata in the KV store
end_key = f"{VECTOR_DBS_PREFIX}\xff" assert self.kvstore is not None
stored_vector_dbs = await self.kvstore.values_in_range(start_key, end_key) key = f"{VECTOR_DBS_PREFIX}{vector_db.identifier}"
for vector_db_data in stored_vector_dbs: await self.kvstore.set(key=key, value=vector_db.model_dump_json())
vector_db = VectorDB.model_validate_json(vector_db_data)
index = VectorDBWithIndex( # Upsert model metadata in Postgres
vector_db, upsert_models(self.conn, [(vector_db.identifier, vector_db)])
index=PGVectorIndex(
vector_db, # Create and cache the PGVector index table for the vector DB
vector_db.embedding_dimension, index = VectorDBWithIndex(
self.conn, vector_db,
kvstore=self.kvstore, index=PGVectorIndex(vector_db, vector_db.embedding_dimension, self.conn, kvstore=self.kvstore),
), inference_api=self.inference_api,
inference_api=self.inference_api, )
) self.cache[vector_db.identifier] = index
upsert_models(self.conn, [(vector_db.identifier, vector_db)])
self.cache[vector_db.identifier] = index
async def unregister_vector_db(self, vector_db_id: str) -> None: async def unregister_vector_db(self, vector_db_id: str) -> None:
await self.cache[vector_db_id].index.delete() # Remove provider index and cache
del self.cache[vector_db_id] if vector_db_id in self.cache:
await self.cache[vector_db_id].index.delete()
del self.cache[vector_db_id]
# Delete vector DB metadata from KV store
assert self.kvstore is not None
await self.kvstore.delete(key=f"{VECTOR_DBS_PREFIX}{vector_db_id}")
async def insert_chunks( async def insert_chunks(
self, self,