systemdesign.academyAI EngineeringFree lessonsSign inGet the course
  1. Home
  2. AI Engineering: Data, RAG and Agents
Previous lessonReranking: The Highest-Return Change in Your RAG StackNext lessonDocument Ingestion: The Layer That Quietly Caps Everything

System Design

  • Foundation
  • Intermediate
  • Advanced
  • Capstone

AI Engineering

  • Foundation
  • Data, RAG and Agents
  • Evaluation, LLM Ops and Security

systemdesign.academy

  • Home
  • Glossary
  • Interview prep
  • Reviews
  • About
  • Pricing
  • Privacy
  • Terms
  • Refunds
  • Delivery
  • Contact
  • Retrieval and RAG in Production
  • Hybrid Retrieval: When Keyword Search Beats Your Embeddings
  • AI Engineering · Retrieval Rag

    Hybrid Retrieval: When Keyword Search Beats Your Embeddings

    Free preview: the first part of this 11-part lesson.

    Already bought the course? Sign in to read the whole lesson.

    this lesson is part of

    AI Engineering

    Unlock this lesson and the 199 other paid lessons

    • 210 lessons in 16 chapters
    • 118 lessons built on a lab that really ran
    • An AI tutor beside every lesson that answers and draws
    • Lifetime access, every new lesson included

    $49 once, by PayPal

    See the AI Engineering course

    The rest of this lesson

    1. Two Search Methods, Two Opposite Blind Spots
    2. How BM25 Rewards the Rare Exact Term
    3. Fusing Two Ranked Lists Without Comparing Their Scores
    4. Run RRF and Watch Both Winners Surface
    5. Where Hybrid Sits: In Front of the Reranker
    6. The Cost: Two Indexes to Keep in Sync
    7. Hybrid Plus a Metadata Filter
    8. When the Second Index Is Worth It, and When It Is Not
    9. How This Shows Up in Real Systems
    10. Knowledge Check

    read the rest of this lesson in

    AI Engineering

    Unlock this lesson and the 199 other paid lessons

    • 210 lessons in 16 chapters
    • 118 lessons built on a lab that really ran
    • An AI tutor beside every lesson that answers and draws
    • Lifetime access, every new lesson included

    $49 once, by PayPal

    See the AI Engineering course

    Continue this lesson

    in Retrieval Rag

    This lesson is part of the AI Engineering course. Unlock the full course, a separate one-time payment, for lifetime access.

    One-time payment. Lifetime access. No subscription.
    Global
    $49/lifetime

    One-time payment via PayPal

    Get Lifetime Access
    Foundation lessons free, try before you buy
    India Special
    India
    ₹999/lifetime

    One-time payment: UPI, card or netbanking

    Get Lifetime Access
    Foundation lessons free, try before you buy
    Every ML Platform lesson, Foundation to Advanced
    Real architecture diagrams with real tool logos
    MLOps, LLMOps, and data engineering in depth
    Quizzes with instant feedback
    Built and reviewed by senior engineers
    Lifetime access, all future content included

    Foundation lessons of this course are free, no payment needed. Try them now

    The Error Code Your Vector Search Could Not Find

    A support engineer types an exact Oracle error into your shiny new search box: ORA-01555 snapshot too old. There is one runbook in the knowledge base that fixes exactly this error. It does not come back. The top result is a general page about database tuning, the second is about connection pooling, and the runbook that names the error is somewhere on page three, below things that have nothing to do with it.

    Nothing failed. The vector search ran, the model worked, the latency was fine. The system returned five confident results and the one document that mattered was not among them. To the model reading that context, the runbook does not exist, so the answer it gives is generic and wrong. This is the quiet kind of retrieval failure: no exception, no alert, just a slightly worse answer that nobody can trace back to a missing document.

    Here is the part that stings. Before you replaced it, the old keyword search box found that runbook instantly, because the runbook contains the literal string ORA-01555 and so did the query. You upgraded to embeddings to catch the questions users phrase in their own words, and in doing so you broke the questions that are just an exact string. You did not trade a worse system for a better one. You traded one set of blind spots for a different set, and the new blind spot happens to sit exactly where your most precise users live: the ones who paste an error code, a SKU, or a function name and expect the machine to find the one document that names it.

    This is not a bug in your embedding model. It is what embeddings are. This lesson is about why dense search and keyword search fail in opposite places, why you cannot tune your way out of either gap, and why the fix that production teams reach for is not choosing one but running both and merging the results into a single ranked list.