The literal librarian — search by shared words
Classic search (BM25, the engine behind decades of search boxes) scores a document by which of your query words it contains, weighting rare words more than common ones. Below are the 9 articles in our help-desk KB. Type a query: matched words light up, and the score is the fraction of your query's weight the document covers.
The meaning map — words as points in space
Vector search starts by giving every word (and document) coordinates in a “meaning space”, so that similar meanings sit close together. This map shows our vocabulary's hand-built vectors, flattened to 2D. Click any word — its nearest neighbours by cosine similarity light up. Then click “charge” and look closely at who its neighbours are.
Vectors here are hand-built over 7 topic dimensions so the demo is transparent — real embeddings learn 1,000+ dimensions from data, but distance means the same thing.
Head-to-head — “car won't start” meets its true answer
Same query, same 9 documents, both librarians side by side. Keyword scores by shared words; vector search embeds your query and ranks by cosine similarity to each document's vector. The ★ marks the document a human would want. Try “car won't start” — it shares zero content words with “Engine fails to turn over on cold mornings”.
The revenge of the exact string — error 0x80070057
Now flip the tables. You hit error 0x80070057 and paste it into search. That hex code has no “meaning” — it's an arbitrary identifier the embedding has essentially never seen, so it contributes almost nothing to the query vector. Watch the vector librarian confidently hand you the thematically similar but wrong article, while boring keyword search nails it.
Hire both librarians — the hybrid dial
Production search blends both scores: final = (1−α)·keyword + α·vector. Drag α and watch two hard queries at once: one needs meaning, one needs an exact string. Green means the blended ranking puts the correct document first; red means it doesn't. Find the zone where both are green.