fix(vector_stores): return None from get() for missing IDs (milvus/weaviate/supabase) (#5562)

Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com>
This commit is contained in:
ly-wang19
2026-06-16 11:52:59 +05:30
committed by GitHub
co-authored by ly-wang19
parent b55c51e004
commit bb69b036b5
6 changed files with 29 additions and 15 deletions
+4 -2
View File
@@ -290,7 +290,7 @@ class MilvusDB(VectorStoreBase):
schema = {"id": vector_id, "vectors": vector, "metadata": payload, "text": text}
self.client.upsert(collection_name=self.collection_name, data=schema)
def get(self, vector_id):
def get(self, vector_id) -> Optional[OutputData]:
"""
Retrieve a vector by ID.
@@ -298,9 +298,11 @@ class MilvusDB(VectorStoreBase):
vector_id (str): ID of the vector to retrieve.
Returns:
OutputData: Retrieved vector.
Optional[OutputData]: Retrieved vector, or None if the ID is not found.
"""
result = self.client.get(collection_name=self.collection_name, ids=vector_id)
if not result:
return None
output = OutputData(
id=result[0].get("id", None),
score=None,
+1 -1
View File
@@ -176,7 +176,7 @@ class Supabase(VectorStoreBase):
"""
result = self.collection.fetch([(vector_id,)])
if not result:
return []
return None
record = result[0]
return OutputData(id=str(record.id), score=None, payload=record.metadata)
+4 -5
View File
@@ -305,7 +305,7 @@ class Weaviate(VectorStoreBase):
existing_payload: Mapping[str, str] = existing_data
collection.data.update(uuid=vector_id, properties=existing_payload, vector=vector)
def get(self, vector_id):
def get(self, vector_id) -> Optional[OutputData]:
"""
Retrieve a vector by ID.
@@ -313,7 +313,7 @@ class Weaviate(VectorStoreBase):
vector_id: ID of the vector to retrieve.
Returns:
dict: Retrieved vector and metadata.
Optional[OutputData]: Retrieved vector, or None if the ID is not found.
"""
vector_id = get_valid_uuid(vector_id)
collection = self.client.collections.get(str(self.collection_name))
@@ -322,9 +322,8 @@ class Weaviate(VectorStoreBase):
uuid=vector_id,
return_properties=["hash", "created_at", "updated_at", "user_id", "agent_id", "run_id", "data", "category"],
)
# results = {}
# print("reponse",response)
# for obj in response.objects:
if response is None:
return None
payload = response.properties.copy()
payload["id"] = str(response.uuid).split("'")[0]
results = OutputData(