Este tutorial demonstra uma pesquisa híbrida que é uma agregação de pesquisa de texto completo e pesquisa semântica para os mesmos critérios da query. Embora o texto completo seja eficaz para encontrar correspondências exatas para termos de query, a pesquisa semântica oferece o benefício adicional de identificar documentos semanticamente semelhantes, mesmo que os documentos não contenham o termo de query exato. Isso garante que correspondências sinônimas e contextualmente semelhantes também sejam incluídas nos resultados combinados de ambos os métodos de pesquisa.
Por outro lado, se você tiver tokens para nomes próprios ou palavras-chave específicas em seu conjunto de dados que não espera que sejam considerados no treinamento de um modelo de incorporação no mesmo contexto em que são usados em seu conjunto de dados, sua pesquisa vetorial poderá se beneficiar da combinação com uma pesquisa de texto completo.
Você também pode definir pesos para cada método de pesquisa por query. Com base no fato de os resultados da pesquisa de texto completo ou semântica serem mais relevantes e apropriados para uma query, você pode aumentar o peso desse método de pesquisa por query.
Você pode reordenar os documentos nos resultados com base na relevância para a query usando o estágio $rerank após o estágio $rankFusion ou $scoreFusion. O estágio $rerank reordena os documentos com base em um modelo de reranker da Voyage AI.
Sobre o tutorial
Este tutorial demonstra como executar uma pesquisa híbrida combinando queries do MongoDB Vector Search e do MongoDB Search na collection sample_mflix.embedded_movies, que contém detalhes sobre filmes, para obter resultados de pesquisa unificados. Especificamente, este tutorial orienta você pelas seguintes etapas:
Crie um índice do MongoDB Vector Search no campo
plot_embedding_voyage_4_large. Este campo contém incorporações vetoriais que representam o resumo da trama de um filme.Crie um índice de Pesquisa MongoDB no campo
fullplotna coleçãosample_mflix.embedded_movies. Este campo contém o nome do filme como uma string de texto.Execute uma query que use
$rankFusionou$scoreFusionpara combinar os resultados de uma query$vectorSearchno campoplot_embedding_voyage_4_largee de uma query$searchno campofullplote, em seguida, reordene os documentos nos resultados com base na relevância para a query usando o estágio$rerank.
Pré-requisitos
Antes de começar, conclua os pré-requisitos.