Link copied!
Home Work About Blog Career Contact

How to Stop Your RAG System from Returning Irrelevant Results

Author: 

Paresh Bhalke

Most RAG systems return irrelevant answers not because of the LLM, but because of their retrieval strategy. Hybrid RAG retrieval combines semantic search, keyword search, and re-ranking to consistently surface the right context.

The Problem Nobody Talks About With RAG Search

You have built a RAG system. Documents are indexed. Queries are coming in, and yet the answers feel off. Not always wrong, but not consistently right either. The AI is retrieving something, just not always the right thing.

 

The likely culprit is not your language model. It is your retrieval strategy.

 

Most RAG systems default to vector search only, and that decision, while easy to implement, quietly creates a ceiling on how accurate your system can ever be.

 

Here is why, and how hybrid retrieval fixes it.

Quick Answer: What Is Hybrid Retrieval in RAG?

Hybrid retrieval combines two search methods, semantic vector search and keyword search, running them at the same time and merging the results. A re-ranking model then sorts the merged results by true relevance before passing them to the language model. This approach consistently outperforms vector-only search, especially on specific, term-heavy queries.

Note: The examples are based on real health insurance policy documents from multiple companies.

First, What Does Vector Search Actually Do?

Vector search converts your query and your document chunks into numbers (called vectors or embeddings) that represent their meaning. It then finds the chunks whose meaning is closest to the meaning of your query, even if the exact words do not match.

 

Example: If you search for “coverage for pre-existing illness”, vector search might correctly return a chunk that uses the phrase “waiting period for prior health conditions”, because the meaning is similar, even though the words are different.


This is genuinely powerful. It solves the problem of exact word matching being too rigid.

But it introduces a different problem.

Where Pure Vector Search Breaks Down

Vector search is good at finding conceptual similarity — but it is not built for precision.

Here are the situations where it quietly fails:


Specific names and identifiers:
If a user asks about “Policy HE-2024-B” or a specific clause number, vector search may surface other policy documents that are semantically similar, even though the user wanted that exact document.


Technical terms with precise meanings:
In insurance, legal, or finance documents, words like “indemnity, “” subrogation, or “exclusion rider” carry exact meanings. Vector search may find documents that are topically related but use different terminology, which in these domains can mean a completely different thing.


Rare but critical terms:
If a term appears infrequently in your document corpus, its vector representation may be weak. Vector search can overlook it in favor of more common, semantically adjacent content.


In short, vector search is great at
broad conceptual retrieval, but it can miss the needle in the haystack when that needle has a specific name.

Keyword Search: The Missing Half

Keyword search is the older, simpler approach; it finds chunks that contain the exact words from the query. No interpretation, no meaning inference. Just: does this chunk contain this term?

 

It sounds basic, and it is. But that simplicity is also its strength.

 

Where vector search drifts toward similar meaning, keyword search locks onto exact terms. It will never miss a chunk because it uses different phrasing, as long as the user’s words appear in the document, the keyword search will find it.

 

The weakness of keyword search alone is the mirror image of vector search’s weakness: it cannot handle synonyms, varied phrasing, or conceptual queries. Ask it for “illness coverage,” and it might miss every chunk that says “health condition treatment”.

 

Neither approach is complete on its own. This is why the best RAG systems use both at the same time.

How Hybrid Retrieval Works

Hybrid retrieval runs vector search and keyword search in parallel on the same query, then merges the results into a single candidate pool.

 

The merged pool gives you the best of both approaches:

  • Chunks that are conceptually related to the query (from vector search)
  • Chunks that contain exact matching terms (from keyword search)

 

Together, they dramatically increase the chance that the truly relevant document is somewhere in that candidate pool, even when either method alone might have missed it.

 

But here is the next challenge: the merged pool can be large, and not everything in it is equally useful. This is where re-ranking comes in.

 

Professional pointing at a red warning alert on a laptop, symbolising irrelevant RAG search results in enterprise AI systems
Hand on a laptop keyboard with digital warning icons overlaid, illustrating retrieval failures in a RAG pipeline on mobile

The Re-Ranking Layer: Sorting Signal from Noise

After merging results from both search methods, the system passes all candidates through a re-ranker — a separate AI model whose only job is to score each candidate chunk against the original query and sort them by true relevance.

 

The re-ranker used in production RAG systems like this one is the Cohere re-ranker, a model specifically trained for this task. It does not just look at keyword overlap or vector distance; it reads the query and each candidate chunk together and asks: “How well does this chunk actually answer this question?”

 

The output is a ranked list, sorted from most to least relevant. By the time this list reaches the language model, the top results have been filtered and ordered by a dedicated relevance judge,  not just by approximate similarity scores.

 

The practical result: the language model is handed the right ingredients, in the right order, with the noise already filtered out. It does not have to guess which chunks matter.

What This Looks Like End-to-End

Here is the full retrieval flow in plain terms:

  1. User asks a question
  2. The system runs vector search, finds semantically similar chunks
  3. Simultaneously, it runs a keyword search, finds exact-term matching chunks
  4. Results from both are merged into one candidate pool
  5. The Cohere re-ranker scores every candidate against the query
  6. The top-ranked chunks are passed to the language model
  7. The language model generates an answer using only the best, most relevant evidence

Search latency across the full pipeline—from query ingestion to ranked results—scales effortlessly regardless of document volume or embedding model. Retrieval isn’t the choke point; it’s blazing fast and surgically precise.

Side-by-Side: Vector-Only vs. Hybrid Retrieval

Comparison of vector-only search and hybrid retrieval showing why hybrid RAG improves exact matching and answer accuracy.
Mobile-optimised comparison table contrasting vector-only search and hybrid retrieval on accuracy, noise, and speed metrics

The Bottom Line

Vector search is a powerful foundation, but it is not a complete retrieval strategy on its own. It handles meaning well and misses precision. Keyword search handles precision well and misses meaning. Hybrid retrieval gives you both.

 

Add a re-ranking layer on top, and you have a retrieval pipeline that finds the right information, filters out the noise, and hands the language model exactly what it needs to answer accurately.

The result is not just better answers. It is a system that earns user trust,  because it is reliably right, not just occasionally right.

 

If you are building a voice AI product and want to avoid the experiments we already ran,  or accelerate past them,  we are glad to talk through the architecture. 

FAQs

It requires more components, an embedding model for vector search, a keyword search index (such as BM25), and a re-ranking model. But modern RAG frameworks make this much more manageable than it sounds. The setup cost is a one-time investment; the accuracy improvement is permanent.

A re-ranker is a model that reads your query and each candidate result side by side, and scores how well each result answers the question. Think of it as a relevance judge who reviews all the candidates and puts them in the right order before they reach the language model. The Cohere re-ranker is one of the most widely used options for this.

Not meaningfully. Both searches run in parallel, and the re-ranking step adds very little time at typical result set sizes. In real-world testing, total retrieval time, search plus re-ranking, stays under one to two seconds. The time you notice in a RAG system is always in the generation step, not retrieval.

This depends on your top-K retrieval setting and how many candidates each search method returns before merging. A common starting point is retrieving 10–20 candidates per method (20–40 merged), then re-ranking and passing the top 5 to the language model. More candidates give the re-ranker more to work with; fewer keep the pipeline lean. Tune this based on your document complexity and query types.

Yes. Other options include BGE-Reranker and FlashRank, both of which can be run locally without sending data to an external API. For teams in regulated industries where all data must stay on-premises, local re-ranking models are the right choice, and they perform comparably to cloud-based options.

If your documents are simple and short (knowledge base articles, FAQs, product descriptions), and your users ask broad, conceptual questions rather than specific term lookups, vector-only search may be sufficient. Hybrid retrieval earns its complexity when documents are long, dense, and domain-specific, and when wrong answers have real consequences.