fix(recall): decouple temporal seed threshold - #2595
Conversation
|
lgtm — right call. min_scores.semantic should scope to the semantic arm, not silently tighten temporal seeds, and 0.1 was already the default so non-min_scores callers see no change. also lines it up with graph, which keeps its own fixed 0.3 seed. one ask before merge: add a test that pins the decoupling. test_temporal_recall_selection.py doesn't currently touch min_semantic, so nothing stops this getting re-coupled later. a small one — recall with min_scores.semantic=0.5 and assert the temporal call still gets semantic_threshold=0.1 — is enough add that and i'll merge. |
Keep recall min_scores.semantic scoped to the semantic retrieval arm. Temporal retrieval uses embeddings only to choose time-window entry points. Reusing the request-level semantic floor there made temporal recall unexpectedly narrower. Callers that only wanted to prune weak semantic matches could also narrow temporal recall. That made the min_scores contract surprising and inconsistent with graph seed selection. Use the temporal entry-point default instead. Semantic and BM25 request floors remain unchanged.
5d383b7 to
36fc160
Compare
|
@benfrank241 thanks, added the regression test you suggested. It exercises recall with |
Summary
Fixes #2594.
This keeps
min_scores.semanticscoped to the semantic retrieval arm. Temporal retrieval uses embeddings only to choose time-window entry points, so reusing the request-level semantic floor there made temporal recall unexpectedly narrower when callers only wanted to prune weak semantic matches.The change restores the temporal entry-point default threshold of
0.1while leaving semantic and BM25 request floors unchanged.Tests
.venv/bin/python -m pytest hindsight-api-slim/tests/test_temporal_recall_selection.py