fix(vector_store): add null check for ANN search results before filtering

Prevents errors when HNSW search returns null/empty results due to race conditions.
Adds validation for ids and distances before zip operation.

Fixes: ISS-1766921318981-5

Solution-ID: SOL-1735386000-5
Issue-ID: ISS-1766921318981-5
Task-ID: T1
This commit is contained in:
catlog22
2025-12-29 19:53:32 +08:00
parent 66ae1972ae
commit c56104c082
2 changed files with 99 additions and 1 deletions

View File

@@ -791,7 +791,28 @@ class VectorStore:
# For cosine space: distance = 1 - similarity
ids, distances = self._ann_index.search(query_vec, effective_top_k)
if not ids:
if ids is None or distances is None:
logger.debug(
"ANN search returned null results (ids=%s, distances=%s)",
ids,
distances,
)
return []
if len(ids) == 0 or len(distances) == 0:
logger.debug(
"ANN search returned empty results (ids=%s, distances=%s)",
ids,
distances,
)
return []
if len(ids) != len(distances):
logger.warning(
"ANN search returned mismatched result lengths (%d ids, %d distances)",
len(ids),
len(distances),
)
return []
# Convert distances to similarity scores