A hybrid search over a folder of your own notes, with a scorecard that shows whether each part earns its place.
Split a folder of your notes (or a project's docs) into pieces of about 300 words, each keeping its file name and heading.
Build a keyword index with BM25 and an embedding index with a small local model.
Combine the two rankings with reciprocal rank fusion.
Write 20 questions and, for each, the piece that answers it; measure recall at 5 for keywords, embeddings and the hybrid.
Read the misses, fix one cause (piece size, a missing synonym, a heading boost) and measure again.
How you'll know it worksA table of recall at 5 for all three, before and after your fix, and one sentence on which change helped and why.
Python, rank_bm25, sentence-transformers with all-MiniLM-L6-v2 (runs locally, no API) and NumPy. Uses lessons 01 to 14.
Project: Search over your own notes
From insideout, Search and Retrieval: A hybrid search over a folder of your own notes, with a scorecard that shows whether each part earns its place.
Steps:
1. Split a folder of your notes (or a project's docs) into pieces of about 300 words, each keeping its file name and heading.
2. Build a keyword index with BM25 and an embedding index with a small local model.
3. Combine the two rankings with reciprocal rank fusion.
4. Write 20 questions and, for each, the piece that answers it; measure recall at 5 for keywords, embeddings and the hybrid.
5. Read the misses, fix one cause (piece size, a missing synonym, a heading boost) and measure again.
How you'll know it works: A table of recall at 5 for all three, before and after your fix, and one sentence on which change helped and why.
Runs on: Python, rank_bm25, sentence-transformers with all-MiniLM-L6-v2 (runs locally, no API) and NumPy.
Help me build this on my machine, one step at a time. Ask what I've tried first, give hints before full answers, and check my work against "How you'll know it works".