Inicio / Artículos

Búsqueda híbrida para RAG: BM25, vectores y fusión de rango recíproco en la práctica

Búsqueda híbrida para RAG: por qué la recuperación basada únicamente en vectores pierde los IDs exactos, cómo la Fusión de Rango Recíproco combina BM25 con embeddings, y en qué aspectos la búsqueda híbrida sigue siendo insuficiente.

Editor: REACTAPP.TOP11 min de lectura2624 palabras

Fuentes: Hybrid Search in RAG — BM25, Vectors, and Reciprocal Rank Fusion in Practice

Añadir búsquedas por palabras clave a un sistema de recuperación basado únicamente en vectores es una de las formas más económicas de mejorar la precisión en los sistemas RAG, y Anthropic lo midió en sus propios corpus: el algoritmo BM25 contextual aplicado sobre embeddings contextuales redujo en hasta un 49 por ciento los casos en que no se recuperaban los 20 resultados principales, sin necesidad de modificar el modelo de embeddings.

Considere las causas detrás de esta cifra. Un usuario escribe un identificador de vehículo como GX-V5-5N. Un sistema puramente vectorial devuelve instrucciones genéricas de registro e historiales de servicio, y el documento correcto no aparece ni siquiera entre los primeros diez resultados. Los embeddings capturan perfectamente el contexto automotriz, y esa es precisamente la razón por la cual descartan la cadena de texto literal. No se trata de embeddings débiles; se trata de un problema estructural que afecta a cualquier sistema RAG construido únicamente con vectores, algo que describe lo que producen la mayoría de los tutoriales por defecto.

A continuación: por qué combinar la búsqueda léxica y la vectorial requiere matemáticas diferentes a las del promedio de puntuaciones, qué hace la Fusión de Rango Recíproco, dónde deja de ser útil el enfoque híbrido y qué medir antes de activarlo.

La idea en dos minutos

La búsqueda vectorial pura pierde sistemáticamente coincidencias exactas como códigos de error, identificadores de productos y nombres propios. La representación vectorial no es mala; la cercanía semántica y la coincidencia literal son simplemente propiedades diferentes.

BM25, una función de clasificación léxica de la década de 1990, aporta lo que carecen los vectores. Detecta tokens raros y específicos casi sin esfuerzo, pero pierde de vista las paráfrasis y sinónimos a cambio. Los dos métodos fallan en direcciones opuestas, lo cual es la razón estructural para combinarlos, y no una moda pasajera en ingeniería.

La complicación es que sus resultados no se pueden sumar. Las puntuaciones de BM25 son ilimitadas y dependen del corpus, mientras que la similitud coseno está entre -1 y 1. Una suma de 15.3 y 0.82 no significa nada. Por eso los motores modernos no fusionan las puntuaciones; en su lugar, fusionan las posiciones de ranking mediante la Fusión de Rangos Recíprocos.

No obstante, el enfoque híbrido no siempre gana. En consultas basadas en identificadores exactos, BM25 por sí sola puede superar a toda la técnica de fusión. La pregunta relevante no es si utilizar un enfoque híbrido, sino qué porcentaje de las consultas realmente lo necesitan, y eso es algo que se puede medir.

Dos puntos ciegos complementarios

Imagínese a dos colegas junior con debilidades opuestas.

El primero es tan literal como Ctrl+F. Al pedir la página del código de error ERR_CONNECTION_RESET, la encuentra al instante. Al preguntarle sobre problemas de conexión, pasa por alto el documento sobre pérdida de sesión, ya que ninguna de las palabras de la consulta aparece en él.

El segundo interpreta entre líneas. Sabe que los problemas de conexión y la pérdida de sesión describen lo mismo. Sin embargo, al pedirle un código de error preciso, le entrega una nota genérica sobre fallos de red, ya que esa cadena poco común se diluyó en el significado general de toda la oración.

Ninguno de los dos es suficiente por sí solo. Ese es todo el argumento en dos párrafos.

Qué cuenta BM25

BM25 no es ni mágico ni obsoleto. Funciona con un índice invertido, una tabla que relaciona cada palabra con los documentos que la contienen, de modo que el motor nunca escanea toda la colección. El ranking se basa en tres intuiciones:

  • Los términos poco comunes tienen más peso. El identificador GX-V5-5N dice mucho más que la palabra “vehículo”.
  • La repetición provoca saturación. La décima aparición de una palabra aporta mucho menos que la segunda, ya que la curva se plana después de unos pocos usos.
  • La longitud es desventajosa. Los documentos largos no deberían ganar solo porque tienen más espacio para coincidencias aleatorias.

Un modelo vectorial funciona según otro principio. El texto se convierte en una lista de números que codifican el significado, y el ranking se basa en la cercanía en ese espacio, independientemente de si la consulta y el documento comparten alguna palabra. Un motor mide la cobertura de caracteres y el otro mide la cobertura de significado.

Un error de categorización que vale la pena evitar

Es tentador ver la búsqueda vectorial como una versión mejorada de la búsqueda de texto completo, más moderna e inteligente, y el destino natural. Eso es un error de categorización. Los vectores no reemplazan a la búsqueda léxica; resuelven un problema diferente y, al hacerlo, pierden una habilidad que la búsqueda léxica tenía de forma gratuita.

Si un corpus contiene códigos, identificadores o nombres propios, un mero embedding los perderá, por mejor que sea el modelo. El límite proviene de lo que representa un vector. El enfoque adecuado consiste en determinar qué consultas necesitan qué nivel de intensidad, lo que plantea el problema de combinar dos listas de resultados medidos en unidades no relacionadas.

Por qué las puntuaciones no pueden sumarse simplemente

El instinto natural en ingeniería es normalizar, ponderar y sumar. Pero eso choca con un hecho que el ajuste no puede eliminar.

BM25 no tiene un techo teórico. Su resultado aumenta con la cantidad de términos de consulta que coinciden, su rareza en el corpus y la longitud del documento, por lo que el mismo documento recibe un valor diferente después de que lleguen diez mil archivos nuevos. La similitud coseno, que compara el ángulo entre dos vectores, permanece dentro del rango de de uno negativo a uno.

Sumar 15.3 a 0.82 es como sumar kilogramos a libras sin realizar la conversión: aritméticamente posible, pero informativamente vacío. Se puede utilizar la normalización min-max o z-score, pero entonces ambos sistemas de puntuación necesitan ser recalibrados cada vez que cambie el corpus, el modelo de embedding o la combinación de consultas. La recalibración que debe realizarse después de cada reindexación es una deuda diferida.

Votación por posición

La Fusión de Rangos Recíprocos evita el problema ignorando las puntuaciones. Solo considera el rango que cada motor asignó a un documento. La fórmula es sencilla: la puntuación fusionada de un documento es la suma, para cada motor, de uno dividido entre (k más su rango en la lista de ese motor). Un documento que no aparece en una lista no aporta nada.

Por lo tanto, un documento que ocupa uno de los tres primeros puestos en ambas listas supera a uno que está en primer lugar en una lista pero ausente en la otra. RRF premia la coincidencia en el orden y no la certeza, y la posición de rango es una unidad que cada motor de clasificación genera de la misma manera.

El método proviene de Cormack, Clarke y Büttcher en SIGIR 2009, mucho antes que RAG. Su razonamiento: los rangos más altos deberían contar más, los rangos más bajos no deberían desaparecer por completo, y la constante k atenúa la influencia de cualquier sistema aislado.

Una nota al pie que surge en las revisiones de diseño: el valor estándar de k igual a 60 provino de un único ensayo piloto y no fue revisado en las validaciones posteriores. Los propios autores lo describieron como una elección sin análisis crítico. Con k=60, el primer puesto obtiene una puntuación aproximadamente un 1,6 por ciento mayor que el segundo, mientras que el puesto sesenta recibe aproximadamente la mitad de la puntuación del primer puesto.

En la práctica, k funciona como un regulador suave y no como una palanca. Lo que importa más es cuántos candidatos aporta cada categoría. Si el lado vectorial proporciona cincuenta candidatos, un documento en la posición cincuenta y uno aporta exactamente cero.

Cómo el método híbrido se convirtió en el predeterminado

Las cifras más claras provienen de los experimentos de recuperación contextual de Anthropic en 2024, realizados con sus propios conjuntos de datos, que midieron con qué frecuencia faltaba el fragmento correcto entre los veinte primeros resultados. Los embeddings contextuales por sí solos redujeron esas omisiones en un 35 por ciento. Al aplicar encima los BM25 contextuales, la reducción alcanzó el 49 por ciento, lo que significa que la parte léxica aportó una gran parte del beneficio que brindó la actualización de los embeddings.

Hay que evitar una interpretación errónea: el mismo informe indica una reducción del 67 por ciento al añadir el proceso de reclasificación, pero esta es una etapa separada que utiliza otro tipo de modelo. La fusión y la reclasificación no son sinónimos, y mezclarlas en una misma diapositiva es un error común en las presentaciones.

La convergencia entre los proveedores dice más que cualquier prueba de rendimiento individual. Elasticsearch, OpenSearch, Weaviate, Qdrant y Azure AI Search incluyen nativamente la función RRF. La búsqueda híbrida ha pasado de ser una opción avanzada a ser la configuración predeterminada.

El costo de un segundo índice

Hay un precio que debe considerarse antes de tomar la decisión y no después del primer incidente:

  • más espacio en disco, en una cantidad que depende de la configuración,
  • algunos milisegundos adicionales en el paso de fusión,
  • y, lo más importante, otro elemento que puede desincronizarse. Si un documento se elimina del índice vectorial pero permanece en el léxico, sigue apareciendo una y otra vez como un fantasma.

Los equipos que ya utilizan Postgres a menudo pueden aprovechar la búsqueda léxica combinando pgvector con la búsqueda de texto completo integrada, todo en SQL y sin necesidad de nueva infraestructura. Si el sistema RAG actual solo utiliza índices vectoriales, la mejor pregunta es por qué carece de BM25, lo cual se debe a deudas técnicas y no a falta de innovación.

Dónde pierde el enfoque híbrido

La unanimidad de los proveedores podría hacer pensar que el enfoque híbrido siempre gana. Las pruebas directas son más complejas, y aparecen resultados sorprendentes cuando se desglosan las puntuaciones por tipo de consulta en lugar de promediarlas.

En la comparación de Azure AI Search de Microsoft de 2023, la recuperación híbrida superó a la basada únicamente en vectores en conjunto. Al analizarlo por categorías, el patrón es menos claro: en consultas puramente basadas en palabras clave, el motor léxico individual puede obtener una puntuación más alta que el resultado fusionado. El promedio oculta lo que revela un análisis por segmento.

Un segundo motor no siempre aporta valor adicional

Dondequiera que el motor léxico tenga razón, una segunda evaluación la diluye. Supongamos que BM25 coloca al documento correcto en primer lugar y los vectores en décimo. La fusión lo sitúa por debajo de un documento que ambos motores ubican en tercer lugar. La concordancia prevalece sobre la precisión, lo cual está previsto, pero conlleva ciertas desventajas en algunos tipos de consulta.

También es importante cuán buena sea la segunda etapa del proceso. Pruebas de recuperación en la primera fase realizadas en un corpus científico mostraron que un modelo híbrido basado en un modelo de embedding débil obtuvo resultados por debajo de los obtenidos con BM25 únicamente, mientras que la misma configuración con un modelo más potente logró resultados claramente superiores. La fusión no crea nada nuevo; solo combina las pruebas existentes, y el ruido recibe el mismo peso que la señal.

Esto no contradice el punto inicial. La calidad del embedding determina cuánto aporta la etapa vectorial, pero incluso el mejor embedding no puede recuperar un identificador exacto que no represente. Se trata de dos ejes separados.

Ninguno de los resultados se opone a la búsqueda híbrida. Ambos se oponen a habilitarla sin medir primero la distribución de las consultas propias. Muchos equipos eligen la búsqueda híbrida como opción predeterminada obvia y nunca consideran dicha distribución.

La medición es económica. Divida los registros de consultas en aquellas con un identificador exacto y en otras puramente conceptuales, y calcule una métrica para cada grupo por separado. Eso lleva horas y no es algo que se pueda resolver rápidamente, mientras que un único número agregado oculta la regresión que más tarde causará problemas en la producción.

El problema del consenso

La fusión de rankings presenta un defecto más sutil que se manifiesta cuando los motores están de acuerdo y no cuando no lo están.

Tomemos una búsqueda en documentación técnica, con una consulta sobre cómo configurar OAuth mediante variables de entorno. La opción basada en vectores devuelve una guía general de seguridad: relevante en esencia, pero sin detalles específicos sobre OAuth. BM25 devuelve un resultado preciso relacionado con OAuth, pero corresponde a un registro de cambios de hace tres años. Ninguna de las dos es la mejor respuesta, y la fusión sigue clasificando primero al resultado menos adecuado.

Esto es un resultado directo de cómo funciona RRF. El registro de cambios obsoleto recibió una calificación de nivel medio por parte de ambos motores, por lo que sus dos rangos recíprocos sumaron más que la página reciente que solo le gustó a un único motor. Dos opiniones tibias superan a una opinión segura y correcta.

Filtrado antes de la fusión

La solución se encuentra antes del cálculo matemático. En la mayoría de los casos, los filtros estrictos de metadatos, como la frescura, los permisos y el estado del documento, deben aplicarse antes de la fusión y no después. La fusión no debería considerar candidatos a los que nunca se les permitió participar. Algunos sistemas en producción filtran después y obtienen buenos resultados, por lo que esta es una decisión arquitectónica que debe probarse en su propio corpus y no una ley universal.

La secuencia no es cuestión estética aquí. El filtrado después de la fusión elimina de la salida la página obsoleta, pero la página nueva que ya perdió el voto y quedó por debajo del umbral sigue sin aparecer. El filtrado antes de la fusión modifica el conjunto de candidatos sobre los que votan ambos motores desde un principio.

En la práctica, se deben aplicar tres filtros al mismo tiempo en la entrada de ambas etapas: permisos de usuario, estado del documento y un período de actualidad adecuado al dominio. Ambas etapas deben recibir exactamente los mismos filtros. De lo contrario, una llenará su lista de candidatos con documentos que la otra nunca vio, y la fusión convertirá esa asimetría en una ventaja en el ranking.

Otro punto a favor de los idiomas con riqueza morfológica. La marcación gramatical intensa dificulta la coincidencia léxica. Sin una buena lematización, BM25 pierde gran parte de su eficacia, ya que las variantes en caso de una misma palabra, como umowy y umowie en polaco o Vertrags y Verträgen en alemán, se consideran tokens completamente diferentes. Este es un caso raro en el que el enfoque vectorial salva al enfoque léxico y no al revés.

Por lo tanto, los métodos híbridos corrigen un tipo de errores al tiempo que generan otros nuevos, y nada en una pila de recuperación puede considerarse fiable por defecto sin verificarlo.

Qué aprender de esto

La disminución del 49 por ciento en las recuperaciones fallidas no se debió a un modelo más grande ni a un mayor presupuesto para GPUs. Se debió a darse cuenta de que una sola representación de texto no puede servir para dos tipos de consultas fundamentalmente diferentes.

  • BM25 y los vectores fallan en direcciones opuestas, lo cual es la razón estructural para combinarlos.
  • RRF fusiona las posiciones de rango y no las puntuaciones, ya que las escalas de BM25 y coseno son incompatibles y la normalización nunca elimina por completo el costo de calibración.
  • La búsqueda híbrida es la opción predeterminada entre los proveedores de infraestructura, por lo que omitir el segundo paso constituye una deuda técnica y no un enfoque conservador.
  • Lo predeterminado no significa necesariamente mejor en todos los casos. En consultas con identificadores exactos, BM25 por sí solo puede superar a la fusión, y una métrica promedio ocultará eso.
  • Aplicar filtros de metadatos antes de la fusión evita que la concordancia entre los motores de búsqueda priorice a un documento obsoleto sobre uno nuevo.

Para la próxima semana, tome las últimas mil consultas reales, clasifique cada una como que contiene un identificador exacto o como siendo puramente conceptual, y calcule la proporción. Luego evalúe la precisión por separado para ambos grupos y mantenga dos filas de resultados en lugar de un promedio combinado. Esa tabla, mucho más que cualquier referencia de proveedores, muestra si el enfoque híbrido mejorará su sistema o simplemente le proporcionará un segundo índice del que ocuparse. El resultado también le indica qué porcentaje de su tráfico depende de cadenas exactas, algo que rara vez alguien ha contado.

Leer más

  • Notas prácticas: RAG nativo en vectores en Oracle: embeddings, HNSW/IVF y híbrido — Guía paso a paso de las Notas prácticas: RAG nativo en vectores en Oracle: embeddings, HNSW/IVF y híbrido: contratos, verificaciones y espacios de código listos para usar para los equipos que implementan este patrón.
  • Cinco formas de indexar vectores para RAG, probadas con un millón de embeddings de Wikipedia — Búsqueda plana, IVFFlat, HNSW, híbrido BM25 y DiskANN comparados en términos de latencia, precisión y mantenimiento del índice, con cifras medidas y una regla práctica para elegir uno.
  • Spring AI: Mejores resultados RAG con búsqueda híbrida utilizando Lucene y RRF — Combine la búsqueda vectorial con Lucene BM25 en un recuperador de Spring AI y fusione las clasificaciones con Reciprocal Rank Fusion para que RAG coincida tanto con el significado como con los términos exactos.
  • Creación de RAG para múltiples arrendatarios en Amazon S3 Vectors: El pipeline — Un diseño de índice por arrendatario en S3 Vectors: credenciales STS específicas, eliminación basada en claves, auditoría de CloudTrail y los límites de aislamiento que aún existen en el código de la aplicación.
  • Isolacion de inquilinos para RAG en Amazon S3 Vectors: Por qué es importante el ARN — Por qué un índice por inquilino con su propio ARN es mejor que los filtros de metadatos para lograr una isolacion, residencia, eliminacion, auditoria y trazabilidad de nivel GDPR en Amazon S3 Vectors.
  • RAG local sin vectores: SQLite FTS5 y BM25 para la búsqueda de código — Por qué los índices vectoriales densos sobrecargan las máquinas de los desarrolladores, y cómo SQLite FTS5 con BM25 permite una recuperación de código más rápida y precisa con una fracción de la memoria.
  • Más allá del Naive RAG: Costos de memoria de HNSW, búsqueda híbrida y contexto largo — Por qué los índices vectoriales en memoria chocan con limitaciones a gran escala, donde falla la recuperación de coincidencias exactas, y cómo los híbridos BM25, RRF y PostgreSQL se adaptan a un mundo de contexto largo.
  • Búsqueda híbrida para un homelab: Qdrant RRF, BM25 y truncamiento personalizado — Un asistente de homelab autohospedado que divide en fragmentos notas, hojas de cálculo, diagramas de Draw.io y registros de Loki, y luego realiza búsquedas con vectores densos y dispersos, RRF y reclasificación mediante cross-encoder.