Você pode medir a precisão de sua consulta do MongoDB Vector Search avaliando se os resultados de uma pesquisa ANN correspondem aos resultados de uma pesquisa ENN em relação a vetores quantizados usando os mesmos critérios de query. Ou seja, você pode comparar os resultados da pesquisa ANN com os resultados da pesquisa ENN e medir com que frequência os resultados da pesquisa ANN incluem os vizinhos mais próximos nos resultados da pesquisa ENN.
Casos de uso
Talvez você queira medir a precisão dos resultados se tiver alguma das seguintes opções:
vetores quantizados
Um grande número de vetores
Vetor de baixa dimensionamento
Pré-requisitos
Para experimentar os exemplos desta página, você precisa do seguinte:
Um cluster com, opcionalmente, o conjunto de dados de amostra.
Procedimentos
Para avaliar a precisão dos $vectorSearch resultados da query, você deve fazer o seguinte:
Crie um índice do MongoDB Vector Search no campo de vetor e em quaisquer outros campos pelos quais você deseja pré-filtrar os dados.
Recomendamos o uso de vetores quantizados para melhorar o armazenamento de seus vetores e a velocidade de suas queries. Se você não tiver vetores quantizados, poderá ativar a quantização automática ao indexar seu campo do tipo
vector.Construa e execute a query ENN seguida pela query ANN.
Compare os resultados da query ANN com os resultados da query ENN para avaliar as similaridades e diferenças nos resultados.
Esta seção demonstra como executar as etapas anteriores do 3 em relação aos dados na coleção sample_mflix.embedded_movies. Se não quiser usar o conjunto de dados de amostra, você poderá executar os procedimentos em seus próprios dados.
Crie o índice de Vector Search do MongoDB
Esta seção demonstra como criar um índice do MongoDB Vector Search para executar queries ANN e ENN do MongoDB Vector Search.
Executar as queries
Compare os resultados
Os nove principais documentos no exemplo de resultados de query ENN e ANN são os mesmos e têm a mesma pontuação. Isso mostra um alto nível de similaridade nos principais resultados da query. No entanto, o décimo documento nos resultados das queries ENN e ANN é diferente, o que reflete uma leve variação na pesquisa exata e aproximada do vizinho mais próximo.
ENN search examines all possible candidates and returns the closest match to the query based on the similarity score. ANN search uses approximations to speed up the search, which might alter the score of the documents. If you increase the numCandidates value in the ANN query, the results will be a closer match to the ENN query results. However, this would consume additional computational resources and might reduce query speed. The tenth document in the results reflects the trade-off between accuracy and speed.
Depois de avaliar numericamente os resultados em relação à verdade fundamental do ENN, recomendamos testar um conjunto de queries 100 da mesma maneira e calcular a similaridade do "jaccard" entre os conjuntos de resultados. A similaridade de Jaccard pode ser calculada dividindo a interseção entre dois conjuntos, ou seja, os itens sobrepostos, pelo tamanho total do conjunto. Isso dá uma noção do desempenho de recuperação das queries de ANN, incluindo aquelas realizadas em vetores quantizados.
If you notice large discrepancies between your ENN and ANN query results, we recommend tuning the numCandidates value to strike an ideal balance between accuracy and speed for your application.
Recomendamos que você use listas de julgamento para uma lista estruturada de queries com seus resultados ideais para a query ANN ou valores de verdade de base ENN. Você pode usar os resultados da consulta ENN como lista de julgamento de referência e, em seguida, avaliar os resultados da consulta ANN em relação a essa lista de julgamento para medir o recall, a sobreposição e o desempenho. As listas de julgamento fornecem uma maneira de avaliar se as queries ANN atendem aos limites desejados de precisão ou recall em comparação com a linha de base ENN. Use LLMs para gerar as queries de exemplo.
Melhore a precisão com a reclassificação
Para melhorar a precisão dos resultados da $vectorSearch, você pode reclassificá-los por relevância semântica para a query. A reclassificação reordena seus resultados para priorizar os documentos mais pertinentes. Você pode aplicar o estágio $rerank após o estágio $vectorSearch para reordenar os resultados usando um modelo de reclassificação.
Para saber mais, consulte fases do pipeline de agregação$rerank.