Coverage for node / src / stigmem_node / routes / recall / vector.py: 32%
18 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-25 01:49 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-25 01:49 +0000
1"""Dense vector recall search stage."""
3from __future__ import annotations
5from typing import Any
7from .common import _public_module, logger
10def _semantic_search(
11 conn: Any,
12 query: str,
13 scope: str,
14 tenant_id: str,
15 k: int,
16) -> dict[str, float]:
17 """Return {fact_id: cosine_similarity}. Returns {} when embed_enabled=False."""
18 if not _public_module().settings.embed_enabled: 18 ↛ 20line 18 didn't jump to line 20 because the condition on line 18 was always true
19 return {}
20 try:
21 from ...embedding import get_embedding_model
22 from ...recall.vector_search import vector_search
24 model = get_embedding_model()
25 vecs = model.embed([query])
26 if not vecs:
27 return {}
28 results = vector_search(vecs[0], k=k, scope_filter=scope, tenant_id=tenant_id, conn=conn)
29 return {record.id: float(sim) for record, sim in results}
30 except Exception as exc:
31 logger.warning("Semantic search failed: %s", exc)
32 return {}