Eight notebooks, eight capabilities that turn a guessing LLM into a grounded one. Five interview questions wait at every station below.
Ask any LLM about your internal policy and it answers instantly and confidently, using patterns from its training data instead of your actual document. Three failure modes, one root cause: it has never read your world.
Scroll this into view to watch the measured gap between closed-book and grounded answers.
A table read as flat text loses its meaning before chunking ever begins. Once parsing is right, six chunking strategies compete on the same tradeoff: precision vs. context.
Move the slider and this paragraph gets re-cut live. Watch the chunk count change.
We built the same ingestion and chunking pipeline twice: once in LangChain, once in LlamaIndex. The parser mattered. The framework mostly didn't, except for one thing.
SentenceWindowNodeParser in one lineHierarchicalNodeParser builds parent/child automaticallyScroll into view: same three retrieval patterns, counted in each framework.
Toggle the embedding model used at query time and watch the "nearest neighbours" scatter.
Watch the marker slide along the recall/latency curve as you turn the search-width dial.
We already had dense embeddings. So why does every major search engine still run a keyword scorer underneath? Because raw counts have no ceiling, and BM25 fixes that.
Drag to repeat a keyword in a document N times. Watch TF-IDF run away while BM25 tops out.
Across 16 real queries, dense and sparse each won on different questions, and each went completely blind on the other's home turf.
Drag alpha from pure sparse to pure dense and watch these three documents reorder live.
Same transformer architecture, two completely different jobs: encode once vs. compare directly.
Every method trades accuracy against latency differently. Click one to see the trade live.