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

1"""Dense vector recall search stage.""" 

2 

3from __future__ import annotations 

4 

5from typing import Any 

6 

7from .common import _public_module, logger 

8 

9 

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 

23 

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 {}