Você acabou de ver duas abordagens diferentes para pesquisar uma coleção de documentos, cada uma com seus próprios benefícios específicos. Se um desses métodos atender às suas necessidades, você não precisa de mais nada, mas em muitos casos cada método de busca retorna resultados valiosos que o outro não obteria, então a melhor opção é oferecer um conjunto de resultados combinados.
Para esses casos, o Elasticsearch oferece o Reciprocal Rank Fusion, um algoritmo que combina resultados de duas ou mais listas em uma única lista.
Como funciona o RRF
O Elasticsearch integra o algoritmo RRF na consulta de pesquisa. Considere o seguinte exemplo, que tem seções query e knn para solicitar pesquisas de texto completo e de vetor, respectivamente, e uma seção rrf que as combina em uma única lista de resultados.
Embora o RRF funcione razoavelmente bem para listas curtas de resultados sem qualquer configuração, existem alguns parâmetros que podem ser ajustados para fornecer os melhores resultados. Consulte a documentação para obter informações detalhadas sobre esses itens.
Implementação do RRF
Para permitir uma pesquisa combinada que retorne resultados de métodos de pesquisa de texto completo e de vetor, a lógica de pesquisa de texto completo usada anteriormente na função handle_search() precisa ser restaurada. Para implementar uma estratégia de pesquisa híbrida, o método search() deve receber os argumentos query e knn , cada um solicitando uma consulta separada. A seção rank mostrada acima também é adicionada para combinar os resultados em uma única lista classificada.
Aqui está a versão de handle_search() que implementa a estratégia de busca híbrida:
Nesta versão, os melhores resultados de cada método de busca são combinados. Clique aqui para consultar a versão completa do aplicativo com essas alterações.
Anteriormente
k-Pesquisa de Vizinhos Mais PróximosPróximo
Busca semântica