Ahora viste dos enfoques diferentes para buscar en una colección de documentos, cada uno con sus propios beneficios particulares. Si uno de estos métodos se ajusta a tus necesidades, entonces no necesitas nada más, pero en muchos casos cada método de búsqueda devuelve resultados valiosos que el otro método pasaría por alto, así que la mejor opción es ofrecer un conjunto combinado de resultados.
Para estos casos, Elasticsearch ofrece Reciprocal Rank Fusion, un algoritmo que combina resultados de dos o más listas en una sola lista.
Cómo funciona la RRF
Elasticsearch integra el algoritmo RRF en la consulta de búsqueda. Consideremos el siguiente ejemplo, que tiene secciones query y knn para aplicar búsquedas de texto completo y vectoriales respectivamente, y una sección rrf que las combina en una única lista de resultados.
Aunque RRF funciona bastante bien para listas cortas de resultados sin ninguna configuración, hay algunos parámetros que se pueden ajustar para ofrecer los mejores resultados. Consulta la documentación para conocer estos temas en detalle.
Implementación de RRF
Para permitir una búsqueda combinada que devuelva resultados tanto de métodos de búsqueda en texto completo como vectoriales, es necesario recuperar la lógica de búsqueda en texto completo empleada anteriormente en la función handle_search() . Para implementar una estrategia de búsqueda híbrida, el método search() debe recibir tanto el argumento query como el knn , cada uno solicitando una cotización separada. También se agrega la sección rank mostrada arriba para combinar los resultados en una única lista clasificada.
Aquí tienes la versión de handle_search() que implementa la estrategia de búsqueda híbrida:
Con esta versión se combinan los mejores resultados de cada método de búsqueda. Haz clic aquí para revisar la solicitud completa con estos cambios.
Previamente
k-Búsqueda de vecinos más cercanosPróximo
Búsqueda semántica