A MongoDB Vector Search query takes the form of an aggregation pipeline that uses $vectorSearch as the first stage. This page explains the syntax, options, and behavior of the $vectorSearch stage.
Clientes aceitos
Sintaxe
Campos
O estágio $vectorSearch recebe um documento com os seguintes campos:
Tipos de pesquisas vetoriais
When you define a $vectorSearch stage, you can use the exact field to specify whether to run an ANN or ENN search.
Considerações
$vectorSearch deve ser o primeiro estágio de qualquer pipeline onde
aparece.
Limitações
$vectorSearch can't be used in view definition and the following pipeline stages:
$facetestágio do pipeline
| [1] | You can pass the results of $vectorSearch to this stage. |
Proteção contra sobrecarga
Quando as queries chegam mais rápido do que o processo de pesquisa pode executá-las, o Atlas coloca o excesso de queries na fila e pode rejeitar queries com um erro 489. Para saber mais, consulte Redução de carga de query e Rejeição de query.
Indexação de pesquisa vetorial do MongoDB
Para saber mais sobre esses tipos de campo do MongoDB Vector Search, consulte Como indexar campos para o Vector Search.
Pontuação da pesquisa vetorial do MongoDB
O MongoDB Vector Search atribui uma pontuação, em um intervalo fixo de 0 a 1 (onde 0 indica baixa similaridade e 1 indica alta similaridade), a cada documento retornado.
Observação
Pre-filtering your data doesn't affect the score that MongoDB Vector Search returns using vectorSearchScore for $vectorSearch queries.
Filtro de pesquisa vetorial MongoDB
MongoDB pesquisa vetorial suporta filtro de dados. Você pode:
Pre-filter your data by using the
filteroption in your MongoDB Vector Search query.post-filter the results of your MongoDB Vector Search query by using
$matchand other supported aggregation pipeline stages.

A pesquisa vetorial do MongoDB executa operações de pré-filtro e publicação-filtro independentemente em segmentos de dados. O grafo HNSW para cada segmento é baseado apenas nos vetores nesse segmento. A pesquisa vetorial do MongoDB aplica os filtros aos documentos de cada segmento para eliminar documentos que não atendem aos critérios de filtro. A pré-filtragem garante que os documentos sejam eliminados antes que a pesquisa vetorial do MongoDB percorra o grafo HNSW e a filtragem após a publicação garante que documentos ou campos irrelevantes nos documentos sejam eliminados dos resultados da pesquisa vetorial.
Dados de pesquisa de pré-filtro
Você pode pré-filtrar seus dados para restringir o escopo da sua pesquisa semântica e garantir que apenas vetores relevantes sejam considerados para comparação. Quando você pré-filtra seus dados usando a opção filter, a pesquisa vetorial do MongoDB executa a pesquisa semântica em apenas um subconjunto de seus dados, o que aumenta a precisão dos resultados da pesquisa.
A pré-filtragem pode ser muito restritiva, pois o pré-filtro pode excluir dados que não correspondem exatamente ao pré-filtro, mas são semanticamente semelhantes à query que você deseja considerar durante a pesquisa vetorial. Para atenuar isso, recomendamos definir um critério de filtro amplo para garantir que sua query faça o seguinte:
Inclui o máximo de resultados relevantes possível.
Exclui dados irrelevantes dos resultados.
Retorna o número solicitado de documentos nos resultados.
Importante
As queries filtradas são normalmente mais lentas do que uma query não filtrada equivalente.
Resultados da pesquisa de publicação-filtro
If your index size isn't optimal for pre-filtering or if you set broad pre-filtering criteria, you can post-filter your vector search results to return only relevant data. To filter the results of your vector search, you can use any supported aggregation pipeline stage, such as the $match stage, after the $vectorSearch stage. To learn more, see Additional Performance Recommendations.
To select the fields to return in the results, use the $project stage unless you need all the fields in the results. We recommend excluding the vector field in the $project stage to improve query performance.
For example, you can use the $project stage to include the vectorSearchScore and then use the $match stage to return only documents above a certain score threshold.
Considerações de filtro
MongoDB Vector Search supports the short form of
$eq. In the short form, you don't need to specify$eqin the query.Por exemplo, considere o seguinte filtro com
$eq:"filter": { "_id": { "$eq": ObjectId("5a9427648b0beebeb69537a5") } Isso equivale ao seguinte filtro, que usa a forma abreviada de
$eq:"filter": { "_id": ObjectId("5a9427648b0beebeb69537a5") } You can use the
$andMQL operator to specify an array of filters in a single query.Por exemplo, considere o seguinte pré-filtro para documentos com um campo
genresigual aActione um campoyearcom o valor1999,2000ou2001:"filter": { "$and": [ { "genres": "Action" }, { "year": { "$in": [ 1999, 2000, 2001 ] } } ] } For advanced filtering capabilities such as fuzzy search, phrase matching, location filtering, and other analyzed text, use the vectorSearch operator in a
$searchstage.
Exemplos
Pré-requisitos
Antes de executar estes exemplos, realize as seguintes ações:
Add the sample dataset used in the query to your cluster.
Crie índices de pesquisa vetorial do MongoDB para a coleção. Para obter instruções, consulte o procedimento Criar um índice de pesquisa vetorial do MongoDB e configure o índice para as query de amostra na linguagem desejada.
Consultas
Saiba mais
Os tutoriais a seguir demonstram casos de uso adicionais para o estágio $vectorSearch.