Merge pull request #1013 from MemPalace/fix/layer3-search-raw-none-guard-1011
fix: guard Layer3.search_raw against None doc/meta from ChromaDB (#1011)
This commit is contained in:
@@ -281,6 +281,8 @@ class Layer3:
|
|||||||
|
|
||||||
lines = [f'## L3 — SEARCH RESULTS for "{query}"']
|
lines = [f'## L3 — SEARCH RESULTS for "{query}"']
|
||||||
for i, (doc, meta, dist) in enumerate(zip(docs, metas, dists), 1):
|
for i, (doc, meta, dist) in enumerate(zip(docs, metas, dists), 1):
|
||||||
|
meta = meta or {}
|
||||||
|
doc = doc or ""
|
||||||
similarity = round(1 - dist, 3)
|
similarity = round(1 - dist, 3)
|
||||||
wing_name = meta.get("wing", "?")
|
wing_name = meta.get("wing", "?")
|
||||||
room_name = meta.get("room", "?")
|
room_name = meta.get("room", "?")
|
||||||
@@ -327,6 +329,13 @@ class Layer3:
|
|||||||
_first_or_empty(results, "metadatas"),
|
_first_or_empty(results, "metadatas"),
|
||||||
_first_or_empty(results, "distances"),
|
_first_or_empty(results, "distances"),
|
||||||
):
|
):
|
||||||
|
# ChromaDB may return None for doc/meta when a drawer's HNSW entry
|
||||||
|
# exists but its metadata/document rows haven't been materialized
|
||||||
|
# (partial-flush states, mid-delete, schema upgrade boundaries).
|
||||||
|
# Degrade gracefully — the hit still appears with real distance;
|
||||||
|
# storage fields show their fallback where content is missing.
|
||||||
|
meta = meta or {}
|
||||||
|
doc = doc or ""
|
||||||
hits.append(
|
hits.append(
|
||||||
{
|
{
|
||||||
"text": doc,
|
"text": doc,
|
||||||
|
|||||||
Reference in New Issue
Block a user