Búsqueda híbrida revisitada: ¡presentando el retriever lineal en Elasticsearch!

Descubre cómo el retriever lineal mejora la búsqueda híbrida aprovechando puntajes ponderados y la normalización MinMax para clasificaciones más precisas y consistentes, y aprende a usarlo.

Elasticsearch está repleto de características nuevas que te ayudarán a desarrollar las mejores soluciones de búsqueda para tu caso de uso. Aprende a ponerlas en práctica en nuestro webinar práctico sobre crear una experiencia moderna de búsqueda con IA. También puedes iniciar una prueba gratuita en el cloud o prueba Elastic en tu máquina local ahora mismo.

En nuestra publicación de blog anterior , presentamos el marco de recuperadores rediseñado desde cero, que permite la creación de canalizaciones de clasificación complejas. También exploramos cómo el recuperador Reciprocal Rank Fusion (RRF) permite la búsqueda híbrida al fusionar resultados de diferentes consultas. Si bien RRF es fácil de implementar, tiene una limitación notable: se enfoca puramente en rangos relativos, ignorando los puntajes reales. Esto hace que el ajuste y la optimización sean un desafío.

¡Conoce al retriever lineal!

En esta publicación, presentamos el  linear retriever, ¡nuestra última incorporación para apoyar la búsqueda híbrida! A diferencia de rrf, el recuperador de linear calcula una suma ponderada en todas las consultas que coinciden con un documento. Este enfoque conserva la importancia relativa de cada documento dentro de un conjunto de resultados al tiempo que permite un control preciso sobre la influencia de cada consulta en el puntaje final. Como resultado, proporciona una forma más intuitiva y flexible de ajustar la búsqueda híbrida.

Definición de un recuperador lineal donde el puntaje final se calculará como:

score=5knn+1.5bm25score = 5 * knn + 1.5 * bm25

Es tan simple como:

¿Notas lo simple e intuitivo que es? (¡y muy similar a rrf!) Esta configuración le permite controlar con precisión cuánto contribuye cada tipo de consulta a la clasificación final, a diferencia de rrf, que se basa únicamente en clasificaciones relativas.

Queda una advertencia: knn puntajes pueden estar estrictamente limitados, dependiendo de la métrica de similitud empleada. Por ejemplo, con la similitud del coseno o el producto punto de los vectores estandarizados por unidades, los puntajes siempre estarán dentro del rango [0, 1] . Por el contrario, bm25 puntajes son menos previsibles y no tienen límites claramente definidos.

Escalando los puntajes: kNN vs BM25

Un desafío de la búsqueda híbrida es que diferentes recuperadores producen puntajes en diferentes escalas. Considere, por ejemplo, el siguiente escenario:

Puntajes de la consulta A:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251001.510.5

Puntajes de la consulta B:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm250.630.010.30.4

Puede ver la disparidad arriba: kNN puntajes oscilan entre 0 y 1, mientras que bm25 puntajes pueden variar enormemente. Esta diferencia hace que sea difícil establecer pesos óptimos estáticos para combinar los resultados.

Normalización al rescate: el normalizador MinMax

Para solucionar esto, introdujimos un normalizador de minmax opcional que escala los puntajes, de forma independiente para cada consulta, al rango de [0, 1] mediante la siguiente fórmula:

normalizedscore=(scoremin)/(maxmin)normalized_score = (score - min) / (max - min)

Esto conserva la importancia relativa de cada documento dentro del conjunto de resultados de una consulta, lo que facilita la combinación de puntajes de diferentes recuperadores. Con la normalización, los puntajes se convierten en:

Puntajes de la consulta A:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251.000.010.0050.000

Puntajes de la consulta B:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251.000.0000.4650.645

Todos los puntajes ahora se encuentran en el rango de [0, 1] y optimizar la suma ponderada es mucho más sencillo, ya que ahora capturamos la importancia (relativa a la consulta) de un resultado en lugar de su puntaje absoluto y mantenemos la coherencia entre las consultas.

Ejemplo de recuperador lineal

Veamos un ejemplo ahora para mostrar cómo se ve lo anterior y cómo el linear retriever aborda algunas de las deficiencias de rrf. RRF se basa únicamente en rangos relativos y no considera las diferencias de puntaje reales. Por ejemplo, dadas estos puntajes:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm251001.510.5
puntaje de la fuerza de avance0.032260.032520.032000.03125

RRF clasificaría los documentos como:

doc2>doc1>doc3>doc4doc2 > doc1 > doc3 > doc4

Sin embargo, doc1 tiene un puntaje de bm25 significativamente más alta que los demás, que rrf no logra capturar porque solo analiza los rangos relativos. El recuperador de linear , combinado con la normalización, explica correctamente tanto los puntajes como sus diferencias, produciendo una clasificación más significativa:

doc1doc2doc3doc4
knn0.3470.350.3480.346
bm2510.010.0050

Como podemos ver en lo anterior, la gran clasificación y score de doc1 para bm25 se contabiliza adecuadamente y se refleja en los puntajes finales. Además de eso, todos los puntajes se encuentran ahora en el rango [0, 1] para que podamos compararlas y combinarlas de una manera mucho más intuitiva (e incluso construir procesos de optimización offline).

Poniéndolo todo junto

Para aprovechar al máximo el recuperador de linear con normalización, la solicitud de búsqueda tendría el siguiente aspecto:

Este enfoque combina lo mejor de ambos mundos: conserva la flexibilidad y el puntaje intuitivo del recuperador de linear , al tiempo que garantiza una escala de puntaje consistente con la normalización MinMax.

Al igual que con todos nuestros retrievers, el linear retriever se puede integrar en cualquier nivel de un árbol jerárquico de retriever, con soporte para explicabilidad, resaltado de coincidencias, colapso de campo y más.

Cuándo elegir el retriever lineal y por qué marca la diferencia

El linear retriever:

  • Preserva la importancia relativa al aprovechar los puntajes reales, no solo los rangos.
  • Permite el ajuste fino con contribuciones ponderadas de diferentes consultas.
  • Mejora la coherencia mediante la normalización, lo que hace que la búsqueda híbrida sea más estable y previsible.

Conclusión

El recuperador de linear ya está disponible en Elasticsearch Serverless y en las versiones 8.18 y 9.0. También se pueden encontrar más ejemplos y parámetros de configuración en nuestra documentación. Pruébelo y vea cómo puede mejorar su experiencia de búsqueda híbrida: esperamos sus comentarios. ¡Feliz búsqueda!

Preguntas frecuentes

¿Cómo mejora el recuperador lineal la búsqueda híbrida en comparación con el enfoque anterior de fusión de rango recíproco (RRF)?

El recuperador lineal ofrece varios beneficios sobre el RRF en la búsqueda híbrida. Mientras que RRF se centra únicamente en los rangos relativos e ignora los puntajes reales, el recuperador lineal calcula una suma ponderada en todas las consultas, preservando la importancia relativa de cada documento. Este enfoque permite un control más preciso sobre cómo los diferentes tipos de consulta contribuyen a la clasificación final. Además, el recuperador lineal admite técnicas de normalización como MinMax, lo que facilita la combinación de puntajes de diferentes recuperadores y optimiza el resultado final de la búsqueda. Esta flexibilidad y control proporcionan una experiencia de búsqueda híbrida más intuitiva y ajustada.

Contenido relacionado

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo