Fix get_by_ids to return None for missing records consistently

This commit is contained in:
yangdx 2025-10-11 13:34:26 +08:00
parent b7216ede58
commit e1e4f1b02c

View file

@ -450,23 +450,23 @@ class FaissVectorDBStorage(BaseVectorStorage):
if not ids: if not ids:
return [] return []
results = [] results: list[dict[str, Any] | None] = []
for id in ids: for id in ids:
record = None
fid = self._find_faiss_id_by_custom_id(id) fid = self._find_faiss_id_by_custom_id(id)
if fid is not None: if fid is not None:
metadata = self._id_to_meta.get(fid, {}) metadata = self._id_to_meta.get(fid)
if metadata: if metadata:
# Filter out __vector__ from metadata to avoid returning large vector data # Filter out __vector__ from metadata to avoid returning large vector data
filtered_metadata = { filtered_metadata = {
k: v for k, v in metadata.items() if k != "__vector__" k: v for k, v in metadata.items() if k != "__vector__"
} }
results.append( record = {
{ **filtered_metadata,
**filtered_metadata, "id": metadata.get("__id__"),
"id": metadata.get("__id__"), "created_at": metadata.get("__created_at__"),
"created_at": metadata.get("__created_at__"), }
} results.append(record)
)
return results return results