Menu Docs
Página inicial do 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 curingas 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.

O MongoDB Vector Search suporta pesquisa ANN em clusters do Atlas executando o MongoDB6.0.11 v, v7.0.2 ou posterior e pesquisa ENN em clusters executando o MongoDB v.., v.., 6 0v..16 7010732ou posterior. Você também pode usar a Vector Search do MongoDB com sistemas autogerenciados ou locais do Atlas que você cria com o Atlas CLI.

filter

Objeto

Opcional

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

Saiba mais em 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 $search para limitar o número de documentos nos 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 de ponto flutuante

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.

Saiba mais sobre como gerar vetores BSON binData com subtipo float32, int8 ou int1, em Como ingerir vetores pré-quantizados.

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 da sua pesquisa semântica e garantir que nem todos os vetores sejam considerados para comparação. Você pode usar qualquer operador do MongoDB Search aceito no campo filter para fazer query e filtrar os documentos.

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.

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

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:

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

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

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

Os exemplos a seguir usam a coleção sample_mflix.embedded_movies dos dados de amostra. Se você carregar os dados de amostra e criar o índice de amostra na coleção, você pode executar as seguintes ANN e ENN queries na coleção após trocar os espaços reservados <connection-string> e <index-name> nas queries.

Voltar

text

Nesta página