Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

vectorSearch ( Operador de pesquisa MongoDB )

O operador vectorSearch executa uma pesquisa ANN ou ENN em incorporações vetoriais no campo especificado. Use esse operador para adicionar funcionalidades de texto analisado, como pesquisa difusa, correspondência de frases, filtro de localização, correspondência de padrões com wildcards e muito mais, à pesquisa semântica.

vectorSearch tem a seguinte sintaxe:

{
"$search": {
"index": "<index name>", // optional, defaults to "default"
"vectorSearch": {
"exact": true | false,
"filter": {<operator-specification>},
"limit": <number-of-results>,
"numCandidates": <number-of-candidates>,
"path": "<field-to-search>",
"queryVector": [<array-of-numbers>],
"score": {<options>}
}
}
}

vectorSearch usa os seguintes campos para construir uma query:

Campo
Tipo
necessidade
Descrição

exact

Boolean

Opcional

Isso é necessário se numCandidates for omitido.

Sinalizador que especifica se a pesquisa ENN ou ANN deve ser executada. O valor pode ser um dos seguintes:

  • false - para executar a pesquisa ANN

  • true - para executar a pesquisa ENN

Se omitido, o padrão é false.

MongoDB Vector Search supports ANN search on Atlas clusters running MongoDB v6.0.11, v7.0.2, or later and ENN search on clusters running MongoDB v6.0.16, v7.0.10, v7.3.2, or later. You can also use MongoDB Vector Search with self-managed or local Atlas deployments that you create with the Atlas CLI.

filter

Objeto

Opcional

Operador do MongoDB Search a ser usado para pré-filtrar documentos com base em metadados ou critérios de pesquisa específicos.

To learn more, see Pre-Filter.

limit

Int

Obrigatório

Número (somente do tipo int) de documentos para retornar nos resultados. Este valor não pode exceder o valor de numCandidates se você especificar numCandidates.

On sharded clusters, you must use $limit after the $search stage to limit the number of documents in the results.

numCandidates

Int

Opcional

Este campo é obrigatório se exact for false ou omitido.

Número de vizinhos mais próximos a serem utilizados durante a pesquisa. O valor deve ser menor ou igual a (<=) 10000. Você não pode especificar um número menor que o número de documentos a serem retornados (limit).

Recomendamos especificar um número pelo menos 20 vezes maior que o número de documentos a serem retornados (limit) para aumentar a precisão.

This overrequest pattern is the recommended way to trade off latency and :recall in your ANN searches, and we recommend tuning this parameter based on your specific dataset size and query requirements.

path

String

Obrigatório

Campo do tipo vetor indexado para pesquisa.

queryVector

Array de números inteiros ou de ponto flutuante

Obrigatório

Array of numbers of float32, BSON BinData vectors with subtype float32, or BSON BinData vectors with subtype int1 or int8 type that represent the query vector.

To learn more about generating BSON binData vectors with subtype float32, int8, or int1, see How to Ingest Pre-Quantized Vectors.

O tamanho da array deve corresponder ao número de dimensões do vetor (numDimensions) especificado na definição de índice para o campo.

Você deve incorporar sua query com o mesmo modelo que utilizou para incorporar os dados.

Você pode consultar seus embeddings com vetores de fidelidade total, desde que o subtipo do vetor seja o mesmo. Isso só é possível com vetores binData com subtipo float32. Se você usar qualquer outro subtipo (int8 ou int1), o MongoDB Search não retornará nenhum resultado ou erro.

score

Objeto

Opcional

Pontuação atribuída aos resultados correspondentes do termo de pesquisa. Use uma das opções seguintes para modificar a pontuação:

  • boost: multiplique a pontuação do resultado pelo número fornecido.

  • constant: substitui a pontuação do resultado pelo número fornecido.

  • function: substitua a pontuação do resultado usando a expressão fornecida.

Para obter informações sobre como utilizar o score em sua consulta, consulte Classificar os documentos nos resultados.

Você deve indexar os campos para pesquisa usando o operador vectorSearch. Você pode indexar os seguintes tipos de campo na definição do índice do MongoDB Search:

  • Campo que contém incorporações vetoriais. Este é o campo que você especifica na opção de query path.

  • Campos para pré-filtrar os documentos. São os campos que você especifica na opção de query filter.

Você pode pré-filtrar os documentos para restringir o escopo de sua pesquisa semântica. Use qualquer operador compatível do MongoDB Search no campo filter para consultar e filtrar os documentos.

Importante

As queries filtradas são normalmente mais lentas do que uma query não filtrada equivalente.

Você deve criar um índice para os campos que deseja para o filtro dos seus dados na definição do índice para o tipo vector.

You can include the score of each document in your search results. Specify the $meta expression with the searchScore value in the $project stage. You can also specify the searchScoreDetails value for the scoreDetails field $meta expression for a detailed breakdown of the score.

Para saber mais, consulte Pontuação dos documentos nos resultados e Retornar detalhes da pontuação.

O operador vectorSearch deve ser o operador de nível superior nas suas queries. Portanto, você não pode usar o operador vectorSearch dentro dos seguintes operadores do MongoDB Search:

You can't use the vectorSearch operator to query fields indexed using a vectorSearch type index.

Você não pode usar as seguintes opções $search com o operador vectorSearch:

Você não pode executar $search queries com o operador vectorSearch no MongoDB Search Playground.

The following examples use the sample_mflix.embedded_movies collection from the sample data. If you load the sample data and create the sample index on the collection, you can run the following ANN and ENN queries against the collection after replacing the <connection-string> and <index-name> placeholders in the queries.