toolcall() ← all concepts

// concept · hybrid search

Pure vector search misses exact matches.

Search a vector database for an exact error code and you get back vaguely related prose — not the doc that literally says E-4031. Hybrid search fixes that by asking two engines and merging their answers.

// why vectors miss

Vector search matches meaning. That's great for "how do I fix a timeout" — and bad for an exact token: a product code, an error code, a version string, a rare name. The embedding blurs "E-4031" into a generic semantic direction, so the doc that contains it may not surface.

query: error E-4031 pure vector -> 1 connection timeout tips 2 general error handling …the E-4031 doc is buried at rank 6

Keyword search is the opposite

Old-school keyword search — BM25 — does the exact thing vectors can't: it nails literal terms and weighs how unique each keyword is in your corpus. Its weakness is the mirror image: it misses anything worded differently.

BM25 -> 1 E-4031 fix ✓ 2 E-4031 in logs …but a re-worded question? missed

Hybrid = run both, then fuse

Hybrid search runs the keyword engine and the vector engine in parallel on one query, then fuses their two ranked lists. The common fusion is Reciprocal Rank Fusion (RRF): it scores each doc by its rank position in each list, not by raw scores — which neatly sidesteps the fact that BM25 and cosine scores live on different scales.

vector BM25 fused (RRF) 1 timeout tips E-4031 1 E-4031 ✓ 2 error guide E-40xx logs 2 error guide 6 E-4031 config 3 timeout tips score(d) = Σ 1 / (k + rank(d)) # k ≈ 60

A doc both engines rank rises to the top — so your exact code comes back first, and the meaning-matches still come along. Most vector DBs ship this built in (Qdrant, Weaviate, Pinecone, Elastic/OpenSearch).

The catch

Hybrid isn't a free win. You get a weight to tune (how much each side counts — Weaviate's alpha: 0 = keyword, 1 = vector), two indexes to run, and a fusion step's worth of latency. Wrong weight can hurt; "neither algorithm is best in all cases."

Not the same as reranking. Hybrid is retrieval-stage fusion of two ranked lists (RRF, no model). Reranking is a separate second stage that re-scores a candidate set with a cross-encoder. Different stage, different mechanism — you can use both.

Sources: Weaviate — Hybrid Search Explained · Qdrant — Hybrid Search & RRF · Cormack, Clarke & Buettcher — Reciprocal Rank Fusion (Waterloo, 2009)

One concept a week. Free.

The deeper, copy-paste version of each ToolCall short — in your inbox.

// total: 0.00 · spam: void · unsubscribe: one click