Menu Docs
Página inicial do Docs
/
Atlas
/

Como fazer a pesquisa híbrida

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.

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:

  1. 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, 60 para suavizar a pontuação (rank_constant) e, em seguida, divida 1 pela soma de r e rank_constant para a classificação recíproca do documento nos resultados. Você não pode definir o valor de rank_constant, que retorna ao padrão de 60.

    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
  2. 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.

  3. 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.

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 $vectorSearch para a pesquisa semântica e o $search para 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 namespace sample_mflix.embedded_movies e recuperar resultados combinados usando a fusão de classificação recíproca.

  • Múltiplas queries de pesquisa vetorial em uma única query: o pipeline $rankFusion do 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 $vectorSearch demonstra 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.

Ao utilizar o estágio de pipeline $rankFusion para pesquisa híbrida, leve em consideração o seguinte.

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.

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.

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.

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.

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.

Recomendamos definir limites para o número de resultados a serem retornados para cada sub-pipeline.

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:

  • $rankFusion mantém um link rastreável de volta ao documento de entrada original para cada sub-pipeline. Portanto, não é compatível com o seguinte:

  • $rankFusion sub-pipelines executam em série, não em paralelo.

  • $rankFusion não oferece suporte à paginação.

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.

  • mongosh para 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.

Voltar

Explicar os resultados da query

Nesta página