← Data Science Signal over noise.

How search actually works: keyword, semantic and hybrid

🌳 Evergreen
#rag#retrieval#bm25#embeddings#search
TL;DR

Keyword search matches exact words (BM25). Semantic search matches meaning (embeddings). Each fails where the other shines, so the honest default is hybrid: run both and fuse the rankings. This is the retrieval layer under any system that answers from a document base.

Method note: these retrieval methods are cited to their primary sources. I studied them in the DeepLearning.AI RAG course; nothing proprietary is reproduced. The diagram is my own.

Context

Before a language model can answer from a set of documents, something has to find the right passages. That “something” is retrieval, and it is where most systems quietly succeed or fail. The generation gets the attention, but if the wrong passage comes back, a fluent, wrong answer is the result.

The concept

There are two honest ways to find text, and they see the world differently.

Keyword search represents a query as a sparse vector, one dimension per word, mostly zeros. BM25 is the workhorse here: it scores a document by how often the query terms appear, dampened so a word repeated ten times does not count ten times, and normalized for document length (Robertson and Zaragoza, 2009). It is precise when the exact term matters, like a drug name or a spinal level, and blind when the user says something with different words than the document.

Semantic search represents text as a dense vector from a neural embedding model, and ranks by cosine similarity. Similar meaning lands nearby even with different words (Reimers and Gurevych, 2019). It handles paraphrase and synonyms, and it can drift on exact terms, matching “close in meaning” when you needed “exactly this”.

MethodMatches onStrong whenWeak when
Keyword (BM25)Exact termsA drug name, code or exact phrase mattersThe user uses different words
Semantic (embeddings)MeaningParaphrase, synonyms, lay languageAn exact token is the whole point
Hybrid (fused)BothAlmost always, in practiceAdds a little complexity

The fix is not to pick one. Hybrid search runs both and fuses the rankings. Reciprocal Rank Fusion is the clean way: a document’s score is the sum of 1/(k + rank) across each list, so appearing near the top of either list helps, and a constant k keeps any single list from dominating (Cormack, Clarke and Büttcher, 2009).

Keyword (BM25) 1. doc A 2. doc C 3. doc B Semantic 1. doc B 2. doc A 3. doc D Fused (RRF) 1. doc A 2. doc B 3. doc C Appearing near the top of either list lifts a document in the fused ranking.
Reciprocal rank fusion merges two rankings into one. My own diagram.

To know if any of this works, you measure it. Precision@k is the fraction of the top k that is relevant, recall@k is the fraction of all relevant items you found in the top k, and MRR rewards putting the first relevant hit high. Retrieval is judged before generation, because a good answer over the wrong passage is still wrong.

Where this connects

  • Data science. This is classic information retrieval meeting modern embeddings. The sparse-versus-dense trade-off, and fusing rankings, is a reusable pattern well beyond language models: recommendation, deduplication, record linkage.
  • Clinical AI. In a system that answers from guidelines or papers, keyword search protects the exact terms that carry clinical meaning (a level, a dose, a scale), while semantic search rescues the queries a patient phrases in plain words. Hybrid is what lets lay language reach a specialized corpus without losing the exact match. And because you can measure recall, you can be honest about what the system might be missing.

Nota de método: estos métodos de recuperación están citados a sus fuentes primarias. Los estudié en el curso de RAG de DeepLearning.AI; no se reproduce nada propietario. El diagrama es propio.

Contexto

Antes de que un modelo de lenguaje pueda responder desde un conjunto de documentos, algo tiene que encontrar los pasajes correctos. Ese “algo” es la recuperación, y es donde la mayoría de los sistemas triunfan o fracasan en silencio. La generación se lleva la atención, pero si vuelve el pasaje equivocado, el resultado es una respuesta fluida y falsa.

El concepto

Hay dos formas honestas de encontrar texto, y ven el mundo de manera distinta.

La búsqueda por keyword representa la consulta como un vector disperso, una dimensión por palabra, casi todo ceros. BM25 es el caballo de batalla: puntúa un documento según cuántas veces aparecen los términos de la consulta, amortiguado para que una palabra repetida diez veces no cuente diez, y normalizado por la longitud del documento (Robertson y Zaragoza, 2009). Es precisa cuando importa el término exacto, como el nombre de un fármaco o un nivel espinal, y ciega cuando el usuario dice algo con palabras distintas a las del documento.

La búsqueda semántica representa el texto como un vector denso de un modelo de embeddings, y ordena por similitud coseno. El significado parecido queda cerca aunque las palabras cambien (Reimers y Gurevych, 2019). Maneja las paráfrasis y los sinónimos, y puede desviarse en los términos exactos, emparejando “cerca en significado” cuando necesitabas “exactamente esto”.

MétodoEmpareja porFuerte cuandoDébil cuando
Keyword (BM25)Términos exactosImporta un fármaco, código o frase exactaEl usuario usa otras palabras
Semántica (embeddings)SignificadoParáfrasis, sinónimos, lenguaje legoUn token exacto es todo el punto
Híbrida (fusionada)AmbosCasi siempre, en la prácticaAgrega algo de complejidad

El arreglo no es elegir una. La búsqueda híbrida corre ambas y fusiona los rankings. Reciprocal Rank Fusion es la forma limpia: el score de un documento es la suma de 1/(k + rango) en cada lista, así que aparecer arriba en cualquiera de las dos ayuda, y una constante k evita que una sola lista domine (Cormack, Clarke y Büttcher, 2009).

Keyword (BM25) 1. doc A 2. doc C 3. doc B Semántica 1. doc B 2. doc A 3. doc D Fusionado (RRF) 1. doc A 2. doc B 3. doc C Aparecer arriba en cualquiera de las listas sube un documento en el ranking fusionado.
Reciprocal rank fusion combina dos rankings en uno. Diagrama propio.

Para saber si algo de esto funciona, se mide. Precision@k es la fracción del top k que es relevante, recall@k es la fracción de todo lo relevante que encontraste en el top k, y MRR premia poner el primer acierto relevante bien arriba. La recuperación se juzga antes que la generación, porque una buena respuesta sobre el pasaje equivocado sigue siendo equivocada.

Dónde conecta

  • Data science. Esto es recuperación de información clásica encontrándose con los embeddings modernos. El trade-off disperso versus denso, y fusionar rankings, es un patrón reutilizable mucho más allá de los modelos de lenguaje: recomendación, deduplicación, enlace de registros.
  • Clinical AI. En un sistema que responde desde guías o papers, la búsqueda por keyword protege los términos exactos que cargan el significado clínico (un nivel, una dosis, una escala), mientras la semántica rescata las consultas que un paciente formula con palabras llanas. La híbrida es lo que deja que el lenguaje lego llegue a un corpus especializado sin perder el emparejamiento exacto. Y como puedes medir el recall, puedes ser honesto sobre lo que el sistema podría estar dejando fuera.

Sources

  • The Probabilistic Relevance Framework: BM25 and Beyond . Robertson S, Zaragoza H. Foundations and Trends in IR, 2009
  • Reciprocal Rank Fusion outperforms Condorcet and individual rank learning methods . Cormack GV, Clarke CLA, Büttcher S. SIGIR 2009
  • Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks . Reimers N, Gurevych I. EMNLP 2019
  • Retrieval Augmented Generation (RAG) course (learning context) . DeepLearning.AI, Zain Hasan