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

Como Indexar Embeddings de Vetor para Vector Search

Você pode usar o tipo knnVector para indexar embeddings de vetores. O campo vetorial pode ser representado como um array de números dos seguintes tipos:

  • BSON int32, int64 ou double tipos de dados para consulta usando o operador knnBeta .

  • BSON double data type for querying using the $vectorSearch stage.

You can use the knnBeta operator, which is now deprecated, and the $vectorSearch stage in your aggregation pipeline to query fields indexed as knnVector.

Observação

Você não pode usar o Visual Editor do MongoDB Search na UI do Atlas para configurar campos do tipo knnVector. Em vez disso, use o JSON Editor do MongoDB Search para configurar campos do tipo knnVector.

Você também pode utilizar a Vector Search do MongoDB com implementações locais do Atlas que você cria com o Atlas CLI. Para saber mais, consulte Criar uma implantação de Atlas local.

Não é possível indexar campos dentro de arrays de documentos ou campos dentro de arrays de objetos (tipo MongoDB Search embeddedDocuments) como tipo knnVector.

The following is the JSON syntax for the knnVector type. Replace the default index definition with the following. To learn more about the fields, see Field Properties.

1{
2 "mappings": {
3 "dynamic": true|false,
4 "fields": {
5 "<field-name>": {
6 "type": "knnVector",
7 "dimensions": <number-of-dimensions>,
8 "similarity": "euclidean | cosine | dotProduct"
9 }
10 }
11 }
12}

O tipo knnVector tem as seguintes opções:

Opção
Tipo
necessidade
Propósito

type

string

Obrigatório

Etiqueta legível por humanos que identifica este tipo de campo. O valor deve ser knnVector.

dimensions

int

Obrigatório

Número de dimensões vetoriais, que o MongoDB Search impõe no momento do índice e query. Este valor não pode ser maior que 8192.

similarity

string

Obrigatório

Função de similaridade vetorial a ser usada para pesquisar os K- vizinhos mais próximos. O valor pode ser um dos seguintes:

  • euclidean - mede a distância entre as extremidades dos vetores. Isso permite medir a similaridade com base na variação de dimensões. Para saber mais, consulte Euclidiana..

  • cosine - mede a similaridade com base no ângulo entre os vetores. Isso permite medir a similaridade que não é dimensionada pela magnitude. Você não pode utilizar vetores de magnitude zero com cosine. Para medir a similaridade do cosseno, recomendamos que você normalize os seus vetores e utilize dotProduct em seu lugar. Para saber mais, consulte Cosine.

  • dotProduct - mede a similaridade como cosine, mas leva em consideração a magnitude do vetor. Isso permite medir com eficiência a similaridade com base no ângulo e na magnitude. Para saber mais, consulte Dot Product.

    Se você normalizar a magnitude, cosine e dotProduct são quase idênticos na medição de similaridade.

A seguinte definição de índice para a coleção sample_mflix.embedded_movies indexa dinamicamente todos os campos dinamicamente indexáveis na coleção e indexa estaticamente o campo plot_embedding como o tipo knnVector. O campo plot_embedding contém embeddings criados utilizando o modelo de embeddings text-embedding-ada-002 da OpenAI. A definição de índice especifica 1536 dimensões vetoriais e mede a similaridade usando euclidean.

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "plot_embedding": {
6 "type": "knnVector",
7 "dimensions": 1536,
8 "similarity": "euclidean"
9 }
10 }
11 }
12}

If you load the sample data on your cluster and create the preceding MongoDB Search index for this collection, you can run $vectorSearch queries against this collection. To learn more about the sample queries that you can run, see $vectorSearch Examples.

Para migrar seus índices de pesquisa do MongoDB para o tipo vetor, substitua o tipo knnVector em sua definição de índice para o campo de vetor pelo tipo vector.

Exemplo

To use the vector type for the plot_embedding field in the sample index definition for the sample_mflix.embedded_movies collection, replace the index definition with the following:

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "plot_embedding": {
6 "type": "vector",
7 "dimensions": 1536,
8 "similarity": "euclidean"
9 }
10 }
11 }
12}

Para executar queries no campo do tipo vector, você deve usar o vectorSearch (operador de pesquisa do MongoDB) em vez do operadorknnBeta.

Observação

Suas knnBeta operador querys existentes podem continuar a ser executadas em relação ao índice de tipo vector. Após migrar o índice, recomendamos migrar imediatamente suas queries do operador knnBeta para o vectorSearch (operador de pesquisa do MongoDB).