Menu Docs
Página inicial do Docs
/ /

vectorSearch ( Operador de pesquisa MongoDB )

O vectorSearch operador executa uma pesquisa ANN ou ENN em incorporações vetoriais no campo especificado. Use esse operador para adicionar recursos de texto analisados, como pesquisa difusa, correspondência de frases, filtragem de localização, correspondência de padrões curingas e assim por diante, juntamente com a 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.

O MongoDB Vector Search suporta pesquisa ANN em clusters que executam o MongoDB v6.0.11, v7.0.2, ou posterior e pesquisa ENN em clusters que executam o MongoDB v6.0.16, v7.0.10, v7.3.2, ou mais tarde.

filter

Objeto

Opcional

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

Para saber mais,consulte Pré-filtro.

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.

Em clusters fragmentados, você deve usar $limit após o estágio para limitar o número de documentos nos $search resultados.

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.

Esse padrão de solicitação excessiva é a maneira recomendada de equilibrar a latência e recall em suas pesquisas ANN, e recomendamos ajustar esse parâmetro com base no tamanho específico do seu conjunto de dados e nos requisitos de query.

path

String

Obrigatório

Campo do tipo vetor indexado para pesquisa.

queryVector

Array de números inteiros ou flutuantes

Obrigatório

Array de números de float32, vetores BSON BinData com subtipo float32, ou vetores BSON BinData com subtipo int1 ou tipo int8 que representam o vetor de consulta.

Para saber mais sobre como gerar binData vetores BSON com subtipo,float32 int8ou,int1 consulte Como alimentar vetores pré-quantizados.

O tamanho da matriz deve corresponder ao número de dimensões vetoriais ()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 executar query de suas incorporações com vetores de fidelidade total, desde que o subtipo de 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 pesquisar usando o operador vectorSearch. Você pode indexar os seguintes tipos de campos na definição de í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. Estes 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 e garantir que nem todos os vetores sejam considerados para comparação. Você pode usar qualquer operador compatível do MongoDB Search no campo filter para consultar e filtrar os documentos.

Você deve indexar os campos nos quais deseja filtrar seus dados na definição de vector índice para o tipo.

Você pode incluir a pontuação de cada documento nos resultados da pesquisa. Especifique a expressão $meta com o searchScore valor no estágio. Você também pode especificar $project o searchScoreDetails valor para a expressão scoreDetails $meta do campo para obter uma análise detalhada da pontuação.

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

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

Você não pode utilizar o vectorSearch operador para campos de query indexados utilizando um índice do tipo vectorSearch.

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

Você não pode executar queries com $search o vectorSearch operador utilizando o Testador de Pesquisa.

Os exemplos seguintes utilizam a sample_mflix.embedded_movies coleção a partir dos dados de amostra. Se você carregar os dados de amostra e criar o índice de amostra na coleção, poderá executar as seguintes queries de ANN e ENN na coleção depois de substituir os espaços reservados <connection-string> e <index-name> nas queries.

Voltar

text

Nesta página