Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / / /

Como Indexar Incorporações de Vetor para Vector Search

Nesta página

  • Revise as limitações de tipo knnVector
  • Defina o índice para o tipo knnVector
  • Configurar propriedades do campo knnVector
  • Experimente um exemplo para o tipo de knnVector

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 tipo de dados para consultas utilizando o estágio $vectorSearch.

Você pode usar o knnBeta operador, que agora está obsoleto, e o estágio $vectorSearch em seu pipeline de agregação para consultar campos indexados como knnVector.

Observação

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

Você também pode utilizar a Pesquisa de Vetor do Atlas 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 embeddedDocuments do Atlas Search) como tipo knnVector.

A seguir está a sintaxe JSON para o tipo knnVector . Substitua a definição de índice padrão pelo seguinte. Para saber mais sobre os campos, consulte Propriedades do campo.

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

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 Atlas Search impõe no momento do índice e consulta. Este valor não pode ser maior que 4096.
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, veja Euclidiano.

  • cosine - mede a similaridade com base no ângulo entre os vetores. Isso permite que você meça 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 Cosseno..

  • dotProduct - mede a similaridade como cosine, mas leva em conta a magnitude do vetor. Isso permite medir com eficiência a similaridade com base no ângulo e na magnitude. Para saber mais, consulte Produto pontual.

    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 incorporações criadas utilizando o modelo de incorporações text-embedding-ada-002 do 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}

Se você carregar os dados de amostra em seu cluster e criar o índice de pesquisa anterior do Atlas Search para essa coleção, você pode executar consultas $vectorSearch nessa coleção. Para saber mais sobre as queries de amostra que você pode executar, consulte Exemplos de $vectorSearch.

Voltar

geo