Skip to content

fix(recall): decouple temporal seed threshold - #2595

Merged
benfrank241 merged 1 commit into
vectorize-io:mainfrom
Sanderhoff-alt:fix/recall-temporal-seed-threshold
Jul 9, 2026
Merged

fix(recall): decouple temporal seed threshold#2595
benfrank241 merged 1 commit into
vectorize-io:mainfrom
Sanderhoff-alt:fix/recall-temporal-seed-threshold

Conversation

@Sanderhoff-alt

Copy link
Copy Markdown
Contributor

Summary

Fixes #2594.

This keeps min_scores.semantic scoped 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.1 while leaving semantic and BM25 request floors unchanged.

Tests

.venv/bin/python -m pytest hindsight-api-slim/tests/test_temporal_recall_selection.py

@benfrank241

Copy link
Copy Markdown
Member

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.
@Sanderhoff-alt
Sanderhoff-alt force-pushed the fix/recall-temporal-seed-threshold branch from 5d383b7 to 36fc160 Compare July 8, 2026 02:45
@Sanderhoff-alt

Sanderhoff-alt commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

@benfrank241 thanks, added the regression test you suggested. It exercises recall with min_semantic=0.5 and verifies the temporal path still gets semantic_threshold=0.1, so the semantic min score stays scoped to the semantic arm and won’t tighten temporal seeds again.

@benfrank241
benfrank241 merged commit 7bab4db into vectorize-io:main Jul 9, 2026
87 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Temporal seed threshold is unexpectedly coupled to semantic min_scores

2 participants