Hybrid Search: Combining Semantic and Keyword Retrieval for Better RAG Results

Hybrid Search: Combining Semantic and Keyword Retrieval for Better RAG Results

Hybrid Search for RAG: Semantic + Keyword Retrieval

⚡ Quick Answer

Hybrid search retrieves documents using both lexical and semantic signals, then fuses the two ranked lists into one. It exists because neither method is complete on its own: keyword search (BM25 or TF-IDF) is strong on exact matches like product codes, order IDs and acronyms but can struggle with paraphrasing, while vector search captures meaning but can miss precise identifiers. The two result sets get combined either by weighted score fusion, which needs both score scales normalised and tuned, or by Reciprocal Rank Fusion, which sums reciprocal rank positions across the result lists rather than comparing raw scores, using a constant k – commonly 60, though it can be tuned.

Hybrid can perform better when both lexical and semantic signals matter – for example, in a corpus that mixes precise terminology with natural language – but the gain should be validated on your own dataset. The costs are real: extra latency from running two retrievals, two systems to keep in sync, and fusion weights that need evaluation data rather than intuition.

Anyone who has spent time building RAG systems knows this pretty quickly: your model’s answers are only as good as what you feed it. You can have the smartest language model in the world, but if it’s working with the wrong context, you’re going to get answers that sound confident but miss the mark. That’s the whole game with retrieval. It’s the step where the system goes and finds the right documents or text chunks before the model even starts writing a response.

Most people building these systems start with one of two approaches, either keyword search or semantic (vector) search. Both have their moments where they shine, and both have moments where they just don’t cut it. That gap is basically why hybrid search RAG has become such a hot topic lately, especially for companies like Impressico Business Solutions that work on building serious enterprise search and AI tools. Let’s get into what hybrid search actually means, how it functions, and when combining the two methods can outperform picking just one.

Keyword search, or lexical search if you want the technical term, is the old school way of finding stuff. It matches the actual words in your search query against the words sitting in a document. This has been around for a long time, way before anyone was talking about AI-powered search.

The algorithm doing the heavy lifting here is usually BM25, or sometimes its older relative TF-IDF. The basic idea is this: BM25 checks how often a word shows up in a document, and also how rare that word is across your whole collection of documents. So if a word is uncommon overall but shows up a bunch in one particular document, that document jumps up in the rankings.

How it actually works: First, the text gets broken down into individual words or tokens. Then each word gets checked against an index that was built from all your documents ahead of time. Whichever documents contain the exact query words end up ranked higher, based on how often those words appear and how rare they are.

Where it really performs well

This is your go-to when you need exact matches. Product codes, model numbers, order IDs, acronyms, specific names, that kind of thing. If somebody types in “Invoice No. INV-2024-8891,” keyword search is well suited to finding that exact match. Semantic search, on the other hand, tends to trip over this kind of literal, precise matching.

Semantic search takes a completely different approach, and you’ll often hear it called vector search instead. Rather than looking for matching words, it tries to figure out what the query actually means. It does this by turning text into something called an embedding, which is basically a long string of numbers that represents the meaning of a sentence or paragraph.

Here’s the process: The query and the documents both get run through an embedding model. That model spits out vectors, which you can think of as points scattered across a huge multi-dimensional space. From there, the system looks for documents whose vectors sit closest to the query’s vector, usually measured using something called cosine similarity. Documents that mean similar things end up clustered close together in this space, even if they don’t share many actual words.

Where it shines

This method is great when the wording someone uses doesn’t match the document’s wording, but the underlying meaning does. Say someone types “How do I get my money back after cancelling a plan?” A good semantic search system can connect that to a document titled “Refund policy for subscription cancellations” even though barely any words overlap. This is the paraphrasing problem, and because keyword search matches terms rather than meaning, it tends to handle this poorly.

Problem Statement

Now here’s where it gets tricky. Neither of these approaches works perfectly on its own, and honestly, both have some pretty obvious blind spots.

Two Methods, Two Blind Spots

Hybrid Search

Runs both and fuses the results — each method can compensate for the other’s blind spot

Figure 1 — Where each method succeeds, where it fails, and why hybrid exists.

Pure semantic search can miss exact matches. Got a specific product code, a part number, an acronym, or some numeric value buried in your documents? Vector search might just skip right past it, because embeddings are designed to capture meaning, not exact precision. Sometimes two totally different numbers end up looking “similar” in vector space just because they show up in similarly structured sentences.

Then flip it around. Pure keyword search, whether that’s BM25 or old-school TF-IDF, does not model meaning or paraphrasing directly. If someone phrases their question differently than how it’s written in your source documents, keyword search might come back with nothing useful at all, even though the answer is sitting right there in your data.

This is basically the whole reason people keep bringing up hybrid search vs vector search in AI and RAG circles.

So what is hybrid search in RAG, really? Put simply, it’s a retrieval approach that uses both lexical (keyword) and semantic (vector) signals at the same time, then combines the results from both into one better-ranked list.

Instead of forcing you to pick a side, hybrid search grabs the strengths from each method. The keyword piece catches your exact terms, codes, and names. The semantic piece catches meaning and context. Put together, the aim is retrieval that is both precise and flexible, which is what many real-world use cases need.

Why Hybrid Search Is Particularly Useful for RAG

RAG systems get used everywhere these days, legal, healthcare, e-commerce, enterprise support, you name it. And if you look at the actual documents these industries deal with, they’re usually a mix of technical jargon, product codes, dates, and plain conversational language, often all crammed into the same knowledge base.

Think about a customer support article that explains a return policy in plain English but also lists an exact SKU number somewhere in there. Or a legal contract that mixes formal legal language with specific section numbers. A retrieval system that can only understand meaning, or only match exact words, is likely to struggle with part of that document.

This is exactly the kind of mixed content where hybrid search RAG can help. Better retrieval gives the language model more relevant context to work with, which creates the conditions for more accurate, grounded answers — though answer quality and hallucination rates still need to be evaluated separately rather than assumed.

Does your knowledge base mix codes with plain English?

Many do, and many RAG systems run vector search alone against them. Impressico can measure what your current retrieval is missing before you commit to rebuilding anything.

Talk to us about a retrieval review →

How Hybrid Search Combines Results

Once you’ve got two separate sets of results, one from keyword search and one from semantic search, you need some way to merge them into a single ranked list. There are two methods that come up most often.

A. Weighted Score Fusion

With this approach, each system assigns a score to every document it returns. Keyword search hands out a BM25 score, semantic search hands out a similarity score. Then you combine both scores using a weighted formula, something along the lines of:

Final Score = (weight1 × keyword score) + (weight2 × semantic score)

The tricky part is that BM25 scores and cosine similarity scores don’t live on the same scale at all. So before you can combine them fairly, you usually have to normalize both sets of scores first, otherwise one method ends up dominating the results just because its numbers happen to run higher. Teams usually spend a fair amount of time testing different weight combinations to see what actually works for their specific data.

B. Reciprocal Rank Fusion (RRF)

This brings up a question that comes up constantly: what is reciprocal rank fusion (RRF)? Introduced by Cormack, Clarke and Buettcher at SIGIR in 2009, RRF takes a different tack. Instead of messing with raw scores from two different systems, it only looks at where each document landed in each list, meaning its rank or position.

The formula looks like this:

RRF(d) = Σr ∈ R 1 / (k + rankr(d))

summed across every ranked list r in the set R — in a two-retriever hybrid, the keyword list and the semantic list

Here, rankr(d) is document d’s position in ranked list r — first place, second place, and so on — and the Σ means those reciprocal values are summed across every list the document appears in. In a two-retriever hybrid setup, that is one term from the keyword list plus one from the semantic list. “k” is a smoothing constant that softens the impact of very high rankings. A value of 60 is commonly used, and is the default in the original paper and many implementations, but it is a tunable parameter rather than a fixed value.

The practical advantage of RRF is that it combines rank positions rather than raw scores, so it avoids the need to directly normalize or compare BM25 and similarity scores that sit on different scales. That’s probably why so many RAG systems these days lean toward RRF over weighted fusion, particularly teams who want solid results without spending weeks fine-tuning weights. The trade-off is worth knowing: in OpenSearch’s own benchmark across six BEIR datasets, RRF scored 3.86 percent below score-based fusion on nDCG@10. That figure is specific to their benchmark and configuration rather than a general result. The broader pattern is that RRF offers convenience and robustness, while a well-tuned weighted setup may reach a higher ceiling if you have the evaluation data to get there — and the difference should be measured on your own dataset.

Figure 2 — The two fusion methods side by side, and what each one costs.

Hybrid Search Architecture in a RAG Pipeline

Here’s roughly what a hybrid search setup looks like inside a typical RAG pipeline:

The Hybrid Retrieval Pipeline

1 · Document Ingestion

Chunks stored in a search index and a vector database

↓

2 · Query Time

The same query fires at both systems simultaneously

↓

↓

5 · Fusion

Weighted score fusion or RRF

↓

6 · Re-ranking  (optional)

Sharpens the final ordering before generation

↓

7 · Generation

Top chunks go to the LLM as context

Figure 3 — The seven steps described below, as a pipeline.

Document ingestion: Your documents get split into chunks and stored in two separate places at once, a traditional search index like Elasticsearch or OpenSearch for keyword search, and a vector database like Pinecone, Weaviate, or Qdrant for the embeddings.

Query time: When someone asks a question, that same query gets fired off to both systems simultaneously.

Keyword retrieval: The keyword index sends back a list of top matches based on BM25 scoring.

Semantic retrieval: The vector database sends back its own list based on embedding similarity.

Fusion step: Both lists get merged together, either through weighted score fusion or RRF.

Re-ranking (optional): Some setups throw in an extra re-ranking model at this point to sharpen the final ordering before it goes anywhere near the language model.

Generation: The top chunks get handed off to the LLM as context, and that’s what generates the actual answer the user sees.

This setup is designed to draw on the strengths of both retrieval methods rather than forcing a choice between them.

When Hybrid Search Is Better

If you’re asking whether hybrid search is better than vector search alone, the honest answer is “it depends,” but it can perform better when both lexical and semantic signals matter to your queries — and the only reliable way to know is to validate it on your own dataset.

Hybrid search is most likely to help when your documents contain a mix of precise terminology and natural, conversational language, which is common in business knowledge bases. Picture internal documentation that combines product SKUs with plain-English explanations, or medical records that mix exact drug codes with descriptive notes about how a patient is feeling. In situations like these, vector search alone can miss exact codes, and keyword search alone can miss the natural language questions people actually type. Hybrid search is designed to draw on both signals.

Now, if your data is extremely uniform, say it’s all technical codes or all free-flowing prose, a single method might do the job just fine. But most business content is messy and mixed together, and that messiness is exactly the problem hybrid search was designed to solve.

Trade-offs and Challenges

Hybrid search brings a lot to the table, but it’s not without its downsides. Worth keeping these in mind:

Extra latency. Running two full retrieval systems, keyword and semantic, and then fusing the results, naturally takes longer than just running one. If your application is sensitive to speed, this added delay needs to be measured and dealt with directly.

More infrastructure to manage. You’re now maintaining two systems instead of one, a search index plus a vector database. Both need to stay in sync as your documents change over time, which adds real operational work.

Tuning fusion weights isn’t a guessing game. Figuring out how much weight to give keyword search versus semantic search isn’t something you can eyeball. It takes actual evaluation data and real testing. What works well for one dataset might completely flop on another, so this step needs genuine experimentation, not gut feeling.

Two systems sounds like twice the problem

It doesn’t have to be. The latency, the sync burden and the weight tuning are all manageable once they are designed for rather than discovered late. That is the part we scope first.

Book a hybrid retrieval assessment →

Evaluation - How Do We Know Hybrid Search Is Actually Better?

All of this sounds good on paper, but how do you actually prove it works? That comes down to measuring both the quality of what gets retrieved and the quality of the final answer the whole RAG system produces.

Retrieval metrics tell you how good your retrieved documents are before they even reach the language model:

Recall@K: Out of every relevant document that exists, how many did the system actually find within its top K results?

Precision@K: Out of the top K results it returned, how many were actually relevant?

Hit Rate: Did even one relevant document show up in the results at all?

MRR (Mean Reciprocal Rank): On average, how high up did the first correct result appear?

nDCG (Normalized Discounted Cumulative Gain): This checks not just whether relevant documents got found, but whether they landed near the top of the list, giving extra credit when correct results show up earlier rather than later.

RAG-level metrics go further and look at the quality of the actual generated answer:

Faithfulness: Does the generated answer line up with what’s actually in the retrieved documents, or is it making stuff up?

Context relevance: Is the retrieved context actually connected to what the user asked?

Context recall: Did retrieval manage to pull in everything needed to fully answer the question, or did it miss pieces?

Groundedness: Can you trace every claim in the final answer back to something in the retrieved context?

What the published numbers show

Published benchmarks show that hybrid setups can outperform semantic-only or keyword-only search on recall and nDCG, particularly on datasets with mixed content types — but the size of the gain depends heavily on configuration. On the WANDS e-commerce benchmark, the roughly 7.4 percent higher nDCG (reaching 0.7497) came from the final tuned hybrid configuration, which added product-name boosting on top of hybrid retrieval, rather than from basic hybrid search or RRF alone. On financial documents mixing text and tables, hybrid RRF on its own reached Recall@5 of 0.695 against 0.587 for dense-only retrieval; adding neural reranking on top lifted that to 0.816. Retrieval gains like these do not automatically translate into better faithfulness or groundedness, so those need to be evaluated separately on the full RAG output — and any of these results should be validated on your own dataset before you rely on them.

Final Thoughts

Retrieval is really the backbone of any solid RAG system, and the retrieval strategy you pick has a massive impact on the quality of answers your AI ends up giving. Pure keyword search and pure semantic search both bring real strengths to the table, but they also both come with real blind spots. Hybrid search, by pairing BM25 with vector search and using fusion techniques like reciprocal rank fusion, gives you a retrieval setup designed to handle both exact terminology and natural language questions — though how well it does so on your own data is something to measure rather than assume.

For businesses building serious AI-powered search or RAG applications, hybrid search is worth evaluating whenever both exact terminology and natural language matter to your users — with the benefit confirmed on your own data rather than assumed. At Impressico Business Solutions, we help companies design and build retrieval pipelines made for messy, real-world data, not just tidy test cases, so the AI systems you rely on give answers your team can actually trust.

Retrieval is the backbone. Build it that way.

Impressico designs and builds retrieval pipelines for messy, real-world data rather than tidy test cases — hybrid indexes, fusion tuned against your own evaluation set, and measurement that tells you whether it actually worked.

Request a hybrid search assessment →
RAG at Scale: Enterprise RAG Architecture →

IBS
Article written by

IBS

Similar articles