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 marcação de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL .
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Menu Docs

Executar queries no Vector Search

Uma query do MongoDB Vector Search assume a forma de um agregação pipeline que utiliza como o primeiro estágio. Esta página explica $vectorSearch $vectorSearch a sintaxe, as opções e o comportamento do estágio.

$vectorSearch

O estágio $vectorSearch recebe um documento com os seguintes campos:

Ao definir um estágio$vectorSearch, você pode usar o campo exact para especificar se deseja executar uma pesquisa ANN ou ENN.

Pesquisa de Vizinhos Mais Próximos Aproximados (ANN)

Para a pesquisa ANN, o MongoDB pesquisa vetorial encontra incorporações vetoriais em seus dados que estão mais próximas da incorporação vetorial em sua query com base em sua proximidade no espaço multidimensional e com base no número de vizinhos que considera. Ele usa o algoritmo Hierarchical Navigable Small Worlds e encontra as incorporações vetoriais mais semelhantes à incorporação vetorial em sua query sem digitalizar todos os vetores. Portanto, a pesquisa ANN é ideal para consultar grandes conjuntos de dados sem filtro significativo.

Observação

Normalmente, considera-se que a recuperação ideal para a pesquisa ANN esteja em torno de 90a95% de sobreposição nos resultados com a pesquisa ENN, mas com latência significativamente menor. Isso fornece um bom equilíbrio entre precisão e desempenho. Para conseguir isso com a Vector Search do MongoDB , ajuste o numCandidates parâmetro no momento da query.

Você deve especificar o campo numCandidates para executar a pesquisa ANN. Este campo determina quantos vizinhos mais próximos a pesquisa vetorial MongoDB considera durante a pesquisa.

Recomendamos que você especifique um número numCandidates pelo menos 20 vezes maior que o número de documentos a serem devolvidos (limit) para aumentar a precisão e reduzir as discrepâncias entre os resultados da consulta ENN e ANN. Por exemplo, se você definir limit para retornar 5 resultados, considere definir numCandidates como 100 como ponto de partida. Para saber mais, veja Como medir a precisão dos resultados da sua query.

Esse padrão de solicitação excessiva é a maneira recomendada de compensar a latência e a recuperação em suas pesquisas de ANN. No entanto, recomendamos ajustar o parâmetro numCandidates com base no tamanho específico do conjunto de dados e nos requisitos de query. Para garantir que você obtenha resultados precisos, considere as seguintes variáveis:

Pesquisa de vizinhos mais próximos exatos (ENN)

Para uma pesquisa ENN (ENN), a pesquisa vetorial do MongoDB pesquisa exaustivamente todas as incorporações de vetor indexadas calculando a distância entre todas as incorporações e encontra o vizinho mais próximo exato para a incorporação do vetor em sua query. Isso é computacionalmente intensivo e pode impacto negativamente a latência da query. Portanto, recomendamos pesquisas ENN para os seguintes casos de uso:

$vectorSearch deve ser o primeiro estágio de qualquer pipeline onde aparece.

$vectorSearch não pode ser usado na definição de exibição e nos seguintes estágios de pipeline:

[1] Você pode passar os resultados de $vectorSearch para este estágio.

Para saber mais sobre esses tipos de campo do MongoDB Vector Search, consulte Como indexar campos para o Vector Search.

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

A pré-filtragem de seus dados não afeta a pontuação que o MongoDB Vector Search retorna usando vectorSearchScore para $vectorSearch consultas.

Importante

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

  • O MongoDB Vector Search suporta a forma abreviada de $eq. Na forma abreviada, você não precisa especificar $eq na 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") }
  • Você pode usar o $and operador MQL para especificar uma array de filtros em uma única query.

    Por exemplo, considere o seguinte pré-filtro para documentos com um campo genres igual a Action e um campo year com o valor 1999, 2000 ou 2001:

    "filter": {
    "$and": [
    { "genres": "Action" },
    { "year": { "$in": [ 1999, 2000, 2001 ] } }
    ]
    }
  • Para funcionalidades avançadas de filtragem, como pesquisa difusa, correspondência de frases, filtragem de localização e outros textos analisados, use o operador vectorSearch em um estágio $search.

Antes de executar estes exemplos, realize as seguintes ações: