mediumAI Engineering

What is hybrid search and why combine BM25 with vector search?

226 views
01

Understand the problem

Lexical + semantic retrieval fused with RRF: covering each method's blind spots.

hybrid-searchbm25rrfretrieval
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

Reciprocal Rank Fusion
function rrf(lists: string[][], k = 60): string[] {
  const score = new Map<string, number>();
  for (const list of lists)
    list.forEach((id, rank) =>
      score.set(id, (score.get(id) ?? 0) + 1 / (k + rank + 1)));
  return [...score.entries()].sort((a, b) => b[1] - a[1]).map(([id]) => id);
}

const fused = rrf([await bm25(q, 50), await vector(q, 50)]).slice(0, 20);
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.