Build Status: Released v0.1.0

Retrieval Lab

Watch how chunking, embedding, and ranking choices change what a retrieval system actually returns.

Runs in your browser. Nothing you enter is sent to a server, and nothing is stored unless you save it to this device.

Note

What is actually running on this page

Every score below comes from BM25, TF-IDF cosine similarity, or character trigram overlap, computed in this browser from the text you can see. None of the three understands meaning, and none of them is a neural embedding model. Pick a ranking method below to read exactly what it can and cannot do. Whatever you paste into the text field below is chunked and ranked the same way, in this tab, and is never transmitted, logged, or stored anywhere else.

Runs against whichever corpus is selected above. Nothing you type here leaves this browser.

Config A

Config B

Compare Config A and Config B

What each configuration retrieved that the other did not, for the same query and corpus. This is the point of running two configurations at once.

Idle

Stale Inputs changed after this result was produced. Run it again to see numbers that match what is on screen.

Config A results

The chunks this configuration produced, what it retrieved, and what it left out. Every entry names its document and the exact characters it covers.

Idle

Stale Inputs changed after this result was produced. Run it again to see numbers that match what is on screen.

Not a generated answer. Exactly top k numbered citation slots, each bound to a retrieved chunk or marked GAP when nothing cleared the current settings. A GAP is the shape of a hallucination before it happens, not an error.

Config B results

The chunks this configuration produced, what it retrieved, and what it left out. Every entry names its document and the exact characters it covers.

Idle

Stale Inputs changed after this result was produced. Run it again to see numbers that match what is on screen.

Not a generated answer. Exactly top k numbered citation slots, each bound to a retrieved chunk or marked GAP when nothing cleared the current settings. A GAP is the shape of a hallucination before it happens, not an error.

Note Why does the same query return different evidence in Config A and Config B?

Chunking decides the unit retrieval ranks against. A small sentence sized chunk is precise but can split one idea across two chunks. A paragraph sized chunk keeps an idea together but drags in whatever else was in the paragraph. Neither is correct in general. The retention and encryption sample query above shows both sides of that trade at once, on the same corpus.

Note What BM25 and TF-IDF can and cannot see

Both score a chunk higher when it repeats words from the query, weighted so a rare word counts for more than a common one. That is genuinely useful: it is why the rollback sample query works well. It is also a hard limit: a rare word shared by coincidence, refund appearing once in an unrelated sentence about compute credits, can outweigh an entire document that answers the question without ever using that word. The refund sample query above is that exact failure, reproduced on purpose, not asserted.

Note What trigram overlap can and cannot see

Trigram overlap compares three character sequences instead of whole words, so it can catch a shared word stem or a spelling variant that BM25 and TF-IDF would treat as two unrelated tokens. It still has no notion of meaning. Refund and reimbursement share almost no three character sequences, so this method does not reliably close the gap either. A real dense embedding model, which this tool cannot run locally without a network call, is the tool that would.