Hybrid recall (BM25 + vector)
Search inside the vault uses two indexes, lexical (Tantivy/BM25) and semantic (vector embeddings), and fuses their results with Reciprocal Rank Fusion. Either alone misses things; together they catch most queries.
Use it
Returns chunks (typically H2-bounded sections) ranked by combined score, with a snippet and the originating file path.
The two indexes
Lexical
β Tantivy BM25 tokenizer, good at exact matches, names, code
Vector
β fastembed (gated under the embed feature). Stored in plain SQLite with a cosine table; no native vector extension required.
RRF fusion
Reciprocal Rank Fusion needs no calibration between scores, it just trusts ranks. That keeps it robust when the vector model is swapped out (different score distributions).
Indexing
The watcher reindexes incrementally on every save. To force a full rebuild: mddock reindex.
Related