Uma pesquisa híbrida é uma agregação de diferentes métodos de pesquisa ou queries de pesquisa para critérios de query iguais ou semelhantes. Essa técnica utiliza algoritmos para classificar resultados e retornar resultados unificados dos diferentes métodos de pesquisa. Você pode usar o $rankFusion para realizar uma pesquisa híbrida.
O que é a fusão de classificação recíproca?
A fusão de classificação recíproca é uma técnica para combinar resultados de diferentes métodos de pesquisa em um único conjunto de resultados, executando as seguintes ações:
Calcula a classificação recíproca dos documentos nos resultados.
Para cada documento classificado em cada resultado da pesquisa, primeiro adicione a classificação (
r) do documento com um número constante,60para suavizar a pontuação (rank_constant) e, em seguida, divida1pela soma dererank_constantpara a classificação recíproca do documento nos resultados. Você não pode definir o valor derank_constant, que retorna ao padrão de60.reciprocal_rank = 1 / ( r + rank_constant ) Para cada método de pesquisa, aplique pesos diferentes (
w) para dar mais importância a esse método de pesquisa. Para cada documento, a classificação recíproca ponderada é calculada multiplicando o peso pela classificação recíproca do documento.weighted_reciprocal_rank = w x reciprocal_rank Combine as pontuações ponderadas e derivadas da classificação dos documentos nos resultados.
Para cada documento em todos os resultados de pesquisa, adicione as classificações recíprocas calculadas para uma única pontuação para o documento.
Classifique os resultados pela pontuação combinada dos documentos nos resultados.
Classifique os documentos nos resultados com base na pontuação combinada entre os resultados para obter uma lista única e combinada de documentos classificados nos resultados.
Sobre os diferentes casos de uso da pesquisa híbrida
Você pode usar o Atlas Vector Search para realizar vários tipos de pesquisa híbrida. Especificamente, o Atlas Vector Search suporta os seguintes casos de uso:
Pesquisa de texto completo e pesquisa vetorial em uma única query: é possível combinar resultados de diferentes métodos de pesquisa, como pesquisa semântica e de texto completo. Você pode usar o
$vectorSearchpara a pesquisa semântica e o$searchpara os resultados da pesquisa de texto completo e combinar os resultados usando a técnica de fusão de classificação recíproca. Para aprender mais, veja o tutorial Executar pesquisa híbrida com Atlas Vector Search e Atlas Search, que demonstra como realizar uma pesquisa semântica e uma pesquisa de texto completo no namespacesample_mflix.embedded_moviese recuperar resultados combinados usando a fusão de classificação recíproca.Múltiplas queries de pesquisa vetorial em uma única query: o pipeline
$rankFusiondo MongoDB suporta múltiplos sub-pipelines que contêm queries de pesquisa vetorial executadas na mesma coleção e combinam seus resultados usando a técnica de fusão de classificação recíproca. O tutorial Como combinar múltiplas queries$vectorSearchdemonstra os seguintes tipos de pesquisa vetorial:Realize uma pesquisa abrangente no seu conjunto de dados por termos semanticamente semelhantes na mesma query.
Pesquise vários campos no seu conjunto de dados para determinar quais deles retornam os melhores resultados para a query.
Pesquise usando incorporações de diferentes modelos de incorporação para determinar as diferenças de interpretação semântica entre os diferentes modelos.
Considerações
Ao utilizar o estágio de pipeline $rankFusion para pesquisa híbrida, leve em consideração o seguinte.
Conjuntos de Resultados Disjuntos
Se você deseja capturar falsos negativos que uma metodologia de pesquisa não conseguiu detectar, pode ser aceitável ter resultados desconexos de sub-pipelines individuais. Quando há resultados disjuntos, a maioria ou todos os resultados podem parecer ter sido retornados de um dos pipelines e não do outro. No entanto, se você deseja que todas as sub-pipelines retornem resultados semelhantes, tente aumentar o número de resultados por sub-pipeline.
Pesos
Recomendamos atribuir pesos às queries lexicais e vetoriais individualmente, em vez de usar pesos estáticos para todas as queries. Essa prática melhora a relevância dos resultados para cada query. Isso também aprimora a utilização dos recursos de computação, alocando os recursos para a query mais necessitada.
Múltiplos Pipelines
Você pode combinar um número arbitrário de sub-pipelines no estágio $rankFusion, mas todos devem ser executados na mesma coleção. Não é possível usar o estágio $rankFusion para pesquisar em coleções. Utilize o estágio $unionWith com $vectorSearch para pesquisa entre coleções.
Pipelines que não são de pesquisa
Recomendamos usar $match, $sort, e assim por diante em seu pipeline para impulsionar campos específicos na sua coleção sem precisar de um pipeline de pesquisa.
Relevância geoespacial
Você pode usar o $geoNear e o operador near em $search para uma pesquisa de localização geográfica no estágio $rankFusion. No entanto, o $geoNear e o operador near utilizam diferentes sistemas de referência de coordenadas. Portanto, os ordinais dos resultados e as pontuações podem não ser idênticos.
Limite os resultados
Recomendamos definir limites para o número de resultados a serem retornados para cada sub-pipeline.
Limitações
As seguintes limitações se aplicam à pesquisa híbrida usando $rankFusion:
$rankFusioné compatível apenas com o MongoDB 8.1+ (incluindo a versão mais recente do Rapid Release).$rankFusioné um sub-pipeline que pode conter apenas os seguintes estágios nos sub-pipelines:$rankFusionmantém um link rastreável de volta ao documento de entrada original para cada sub-pipeline. Portanto, não é compatível com o seguinte:$projectestágioCampos storedSource
$rankFusionsub-pipelines executam em série, não em paralelo.$rankFusionnão oferece suporte à paginação.
Pré-requisitos
Para experimentar estes tutoriais, você deve ter o seguinte:
Um cluster do Atlas com o MongoDB versão v8.1.0 ou posterior.
O banco de dados sample_mflix carregado no seu cluster do Atlas.
mongoshpara experimentar as queries no seu cluster do Atlas.Observação
Também é possível experimentar esses casos de uso de pesquisa híbrida com implementações locais do Atlas que você cria com a Atlas CLI. Para saber mais, consulte Como criar uma implantação local do Atlas.