Skip to content

feat: hybrid search with LanceDB FTS + RRF reranking#6

Merged
tobocop2 merged 3 commits intomainfrom
feature/hybrid-search
Mar 16, 2026
Merged

feat: hybrid search with LanceDB FTS + RRF reranking#6
tobocop2 merged 3 commits intomainfrom
feature/hybrid-search

Conversation

@tobocop2
Copy link
Copy Markdown
Owner

@tobocop2 tobocop2 commented Mar 16, 2026

Hybrid search using LanceDB's built-in tantivy FTS index and RRFReranker. No new dependencies or config needed.

  • Combines vector similarity with keyword matching via RRF reranking
  • FTS index rebuilds automatically after sync
  • Falls back to vector-only when FTS index is unavailable or hybrid search fails
  • Replaces SearchChunk TypedDict with a Pydantic model — dot access everywhere, no more underscore-prefixed LanceDB field names leaking through

Also, redesign website 😬

Combine vector similarity with keyword matching using LanceDB's
built-in tantivy FTS index and RRFReranker. FTS index rebuilds
automatically after sync. Falls back to vector-only when unavailable.
No new dependencies or config needed.
@tobocop2 tobocop2 force-pushed the feature/hybrid-search branch from 6b37f25 to e5e1172 Compare March 16, 2026 18:54
Convert SearchChunk from a TypedDict (dict with type hints) to a proper
Pydantic BaseModel. LanceDB dicts are converted at the store boundary
via _from_row(). All downstream code uses dot access instead of bracket
access. clean_result() simplifies to model_dump(exclude_none=True).

Eliminates underscore-prefixed field names (_distance, _relevance_score)
that were LanceDB artifacts leaking through the entire codebase.
@tobocop2 tobocop2 force-pushed the feature/hybrid-search branch 2 times, most recently from 543c4ff to 847c417 Compare March 16, 2026 19:55
@tobocop2 tobocop2 force-pushed the feature/hybrid-search branch from b2c03ab to fdf8f43 Compare March 16, 2026 20:35
@tobocop2 tobocop2 merged commit 2b724d7 into main Mar 16, 2026
11 checks passed
@tobocop2 tobocop2 deleted the feature/hybrid-search branch March 17, 2026 16:42
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.

1 participant