What is hybrid search? How it works, and support in FAISS, Qdrant, Chroma, pgvector

Hybrid search combines keyword and vector search. How it works, why it helps RAG, BM25's role, and support in FAISS, Qdrant, Chroma, pgvector and Pinecone.

Walking a room through the products he has shipped
Walking a room through the products he has shipped

Key takeaways

  • Hybrid search runs keyword search, such as BM25, and vector search together, then merges the results.
  • Reciprocal-rank fusion is the simplest robust way to merge, because it uses ranks rather than incompatible scores.
  • It fixes the main weakness of each method: keywords miss paraphrases, vectors miss exact terms.
  • Qdrant and Pinecone support hybrid search natively; with pgvector, combine PostgreSQL full-text search; with FAISS, add a separate keyword index.
  • Add a reranker after fusion for the biggest quality gain in RAG.

Hybrid search combines two kinds of retrieval: keyword search, usually BM25, which matches exact words, and vector search, which matches meaning through embeddings. Running both and merging the results gives better retrieval than either alone, which is why it is standard in serious RAG systems; RAG.NextUpgrad uses dense plus BM25 retrieval merged with reciprocal-rank fusion before re-ranking. This page explains how hybrid search works, why it helps, BM25's role, support in FAISS, Qdrant, Chroma, pgvector and Pinecone, and the unrelated meaning of hybrid in job search.

Hybrid search is a retrieval approach that runs a keyword search and a semantic vector search for the same query and combines their results into one ranked list.

Each method catches what the other misses. Keyword search finds exact terms such as product codes, error messages, names and acronyms, but misses paraphrases. Vector search understands meaning and paraphrases, but often blurs specific identifiers and rare terms. Combining them gives robust retrieval across question styles, which matters in real systems where users mix natural questions with exact codes, such as "why does ERR_SSL_PROTOCOL_ERROR appear on login?".

How does hybrid search work?

The query goes to a keyword index and a vector index in parallel; each returns its top candidates; a fusion method merges the two lists; optionally a reranker reorders the merged candidates; the top results are returned or passed to an LLM.

Reciprocal-rank fusion is the most common merge: each document's fused score is the sum over lists of 1 divided by a constant plus its rank, so documents ranked well in either list rise to the top. It needs no score calibration, since BM25 scores and cosine similarities are on different scales. Weighted score fusion is an alternative, but requires normalising scores and tuning weights. Retrieve generously from each list, such as the top 20 to 50, before fusing.

Because real queries need both exact matching and semantic understanding, and hybrid search consistently improves recall over either method alone, especially on technical, product and enterprise content full of codes and names.

Benefits:

  • Fewer misses: exact identifiers found by keywords, paraphrases by vectors.
  • Robustness: works across short keyword queries and long natural questions.
  • Better RAG answers: the right passage reaches the prompt more often.
  • Low cost: BM25 is cheap; fusion is simple arithmetic.

Measure recall at 5 on your own test questions with vector-only, keyword-only and hybrid retrieval; the gain is usually clear, and it tells you where to invest next, such as reranking or chunking.

No. BM25 is a keyword ranking function, one half of hybrid search. Hybrid search combines BM25, or another keyword method, with vector search based on embeddings.

BM25 scores documents by matching query terms, weighted by how rare they are and normalised for document length. On its own, it is lexical search. Some systems implement the keyword half with learned sparse vectors instead of BM25, which can capture some synonyms while keeping exact matching. Either way, the "hybrid" part comes from combining a lexical or sparse method with dense vectors.

Not natively. FAISS is a library for dense vector similarity search and has no built-in keyword or BM25 search. You implement hybrid search by pairing FAISS with a separate keyword index, such as BM25 in Python or a search engine, and fusing the results in your code.

A simple setup: index embeddings in FAISS, index the same chunks with a BM25 library, query both with the same question, and merge with reciprocal-rank fusion. Frameworks such as LangChain provide ensemble retrievers that combine a FAISS retriever with a BM25 retriever. For larger systems, a database with native hybrid support reduces the glue code you maintain.

Yes. Qdrant supports hybrid search by storing dense and sparse vectors for each point and combining results in a single query with fusion methods such as reciprocal-rank fusion, plus payload filters.

You generate sparse vectors with a keyword method or a learned sparse model and dense vectors with an embedding model, store both under named vectors, then use Qdrant's query API to prefetch candidates from each and fuse them. Reranking can follow in your application. This keeps hybrid retrieval inside one database, which simplifies operations compared with running a separate search engine.

Chroma's core strength is vector search with metadata filters, and it supports filtering by document text content. For full BM25-style hybrid ranking, many projects combine Chroma with a separate keyword index and fuse results; check current Chroma documentation, as search features have been expanding.

A practical pattern: store chunks and embeddings in Chroma, keep a BM25 index of the same chunk IDs, query both, and merge with reciprocal-rank fusion in a small function. Because both indexes share IDs, merging is straightforward. For prototypes this works well; for production at scale, consider a store with native hybrid support.

pgvector provides vector search, and PostgreSQL provides full-text search with tsvector and ranking functions, so you can build hybrid search entirely in PostgreSQL by running both queries and fusing their rankings in SQL or in your application.

A typical approach: add a tsvector column with a GIN index alongside the embedding column with an HNSW index; run a full-text query and a vector query, each returning the top candidates with ranks; then combine with reciprocal-rank fusion. This keeps everything in one database with transactions and row-level security, which suits many applications. PostgreSQL's built-in ranking is not identical to BM25, but works well, and extensions offer BM25 if you need it.

Yes. Pinecone supports hybrid search with sparse-dense vectors: you store a dense embedding and a sparse vector, such as BM25-style weights, for each record, and query with both, weighting their influence.

You can tune the balance between semantic and keyword matching by scaling the dense and sparse query vectors with an alpha parameter. Pinecone also offers integrated features for reranking in some setups. As with any approach, evaluate the weighting on your own queries: technical content with many identifiers often benefits from more keyword weight, while conversational questions benefit from more semantic weight.

In job search, hybrid refers to a work arrangement that mixes working from the office and working remotely, such as three days in the office and two at home. It is unrelated to hybrid search in information retrieval.

Also asked as: what is hybrid in job search

On job portals, you can filter listings by on-site, remote or hybrid. Hybrid roles are common in tech companies, offering collaboration days in the office and focus days at home. Check the specific expectations in each offer: required office days, location, and flexibility. If you came here for hybrid search in AI and databases, the sections above cover it.

Sources

  1. Cormack, Clarke & Buettcher, Reciprocal Rank Fusion (SIGIR 2009)plg.uwaterloo.ca
  2. Qdrant, Hybrid queries documentationqdrant.tech
  3. Pinecone, documentationdocs.pinecone.io
  4. pgvector, repositorygithub.com
  5. PostgreSQL, Full text searchpostgresql.org
Pranjul Rathour
Pranjul Rathour
GenAI Engineer · India

GenAI engineer and AI product builder with 2+ years shipping production-grade AI systems: RAG pipelines, fine-tuned LLMs, hybrid retrieval and multi-modal apps across vision, speech and OCR, architected end to end from ingestion to deployment. Leads engineering for SCULT INDIA's 14-member team, founded the 500+ member TechVerse Enclave community and has mentored 200+ students. Three hackathon first prizes: Changethon 2025 (IIT Roorkee), Product Genesis at Vividhotsava 2025 (CSJMU) and BYTEBATTLE (MeetKats).

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges. For campus sessions the inviting institution covers the visit end to end: travel (a First AC train ticket for journeys up to five hours, a flight for anything longer), accommodation, meals, and pickup and drop; the honorarium and workshop fees are negotiable on WhatsApp or on the call, and requests are welcome from institutions that can cover the visit this way. Email pranjulrathour41@gmail.com.

Keep reading

More on RAG & retrieval

All RAG & retrieval guides →
Campus talks · hackathon judging · mentoring

Want this as a live session at your college?

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges. For campus sessions the inviting institution covers the visit end to end: travel (a First AC train ticket for journeys up to five hours, a flight for anything longer), accommodation, meals, and pickup and drop; the honorarium and workshop fees are negotiable on WhatsApp or on the call, and requests are welcome from institutions that can cover the visit this way.

Pranjul Rathour, GenAI engineer in India