9.8 C
Canberra
Tuesday, May 26, 2026

Implementing Hybrid Semantic-Lexical Search in RAG


On this article, you’ll learn to implement a hybrid search technique for RAG techniques by combining BM25 lexical search with semantic search, fused collectively utilizing Reciprocal Rank Fusion.

Subjects we’ll cowl embody:

  • Why hybrid search outperforms both lexical or semantic search alone in retrieval-augmented technology techniques.
  • implement BM25 lexical search and dense vector semantic search as impartial retrieval engines in Python.
  • merge each rankings utilizing Reciprocal Rank Fusion (RRF) to provide a remaining, balanced retrieval consequence.

Let’s get straight to it.

Implementing Hybrid Semantic-Lexical Search in RAG

Implementing Hybrid Semantic-Lexical Search in RAG

Introduction

Implementing hybrid search methods is a important step in constructing fashionable RAG (Retrieval-Augmented Era) techniques, particularly when shifting from prototype to production-ready options.

There’s little argument towards semantic search — fueled by dense vectors or embeddings, that are numerical representations of textual content — being extremely helpful at understanding semantics, synonyms, and context. Nonetheless, lexical, keyword-based search with approaches like BM25 covers a small blind spot uncared for by semantic search. Combining the most effective of each worlds is due to this fact the proper recipe to take your RAG system’s retrieval mechanism the additional mile.

Let’s discover find out how to implement such a hybrid search technique by a delicate coding instance, guiding you thru each step of the method!

Word: If you’re unfamiliar with RAG techniques, chances are you’ll discover the “Understanding RAG” article sequence remarkably insightful for getting essentially the most out of this learn. Specifically, I like to recommend buying an understanding of vector databases first by this text.

Step-by-Step Implementation

Step one is to make sure all the required exterior Python libraries are put in, particularly these three:

  • rank_bm25: an implementation of the BM25 lexical search algorithm for data retrieval (BM stands for “Finest Matching”).
  • sentence-transformers: offers pre-trained language fashions for producing textual content embeddings. In an actual setting, chances are you’ll have already got your personal vector database containing many doc embeddings and never want this, however we’ll use it right here to simulate the development of a toy vector database and illustrate hybrid search on it.
  • requests: used to fetch the uncooked dataset bundle from a public GitHub datasets repository ready for this instance.

With these substances at hand, we begin by loading the dataset and storing the uncooked texts in an inventory (we accomplish that as a result of it’s a small dataset).

The hybrid search course of is split into three levels: two of them happen in parallel, or independently from one another. The third is the place the fusion of each approaches occurs, utilizing a merging technique referred to as Reciprocal Rank Fusion (RRF).

Let’s cowl lexical search with BM25 first:

The lexical search course of has been encapsulated in a perform referred to as search_bm25(). This perform takes two enter arguments: a string containing the consumer’s question to the RAG system, and the variety of prime outcomes to retrieve. The rank_bm25 library offers a get_scores() technique that computes, for every doc — handled as a group of tokens — a lexical relevance rating. We then rank paperwork by reducing rating, choose the top-ok, and return them.

In the meantime, the semantic search engine first makes use of a sentence transformer mannequin to acquire embedding vectors for the texts and the consumer question, then applies a vector similarity metric like cosine similarity to rank texts by semantic relevance and retrieve essentially the most related ok:

Time to place all of it collectively. The 2 scores calculated for every doc can not merely be added, as a result of they function on very completely different numeric scales. As an alternative, we carry out the fusion based mostly on ranks quite than uncooked similarity or relevance scores. For this, RRF is the gold business normal for fusing rating data: it calculates an total rating for every doc by rewarding people who seem in excessive positions throughout each lists. The underlying logic is considerably just like that of the harmonic imply operator in statistics.

The overarching hybrid search course of is carried out as follows:

Now it’s time to strive all of it out. Let’s formulate a consumer question and see what outcomes we get.

The outcomes will not be glorious in comparison with a manufacturing RAG system, however keep in mind we examined this on a tiny, nine-document dataset. With that context, the end result is sort of cheap.

Attempt modifying the question and changing it with others associated to temples, seashores, mountains, or the rest that involves thoughts when serious about japanese locations. Are you able to discover a state of affairs during which each the semantic outcomes and the BM25 outcomes are extremely per one another?

Wrapping Up

This text guided you thru implementing a hybrid search mechanism for the retrieval stage of RAG techniques. Selecting to not rely solely on semantic search is a vital consideration when scaling RAG options to manufacturing environments.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

[td_block_social_counter facebook="tagdiv" twitter="tagdivofficial" youtube="tagdiv" style="style8 td-social-boxed td-social-font-icons" tdc_css="eyJhbGwiOnsibWFyZ2luLWJvdHRvbSI6IjM4IiwiZGlzcGxheSI6IiJ9LCJwb3J0cmFpdCI6eyJtYXJnaW4tYm90dG9tIjoiMzAiLCJkaXNwbGF5IjoiIn0sInBvcnRyYWl0X21heF93aWR0aCI6MTAxOCwicG9ydHJhaXRfbWluX3dpZHRoIjo3Njh9" custom_title="Stay Connected" block_template_id="td_block_template_8" f_header_font_family="712" f_header_font_transform="uppercase" f_header_font_weight="500" f_header_font_size="17" border_color="#dd3333"]
- Advertisement -spot_img

Latest Articles