MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /

Como Indexar Incorporações de Vetor para Vector Search

Você pode usar o tipo knnVector para indexar incorporação de vetores. O campo vetorial pode ser representado como uma 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 MongoDB Search Visual Editor 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.

O seguinte é 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 "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, 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 normalizar seus vetores e usar dotProduct. 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 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}

Se você carregar os dados de amostra em seu cluster e criar o índice anterior do MongoDB Search para essa coleção, poderá executar $vectorSearch contra essa coleção. Para saber mais sobre os exemplos de consultas que você pode executar, consulte Exemplos de $vectorSearch.

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

Para utilizar o tipo vector para o campo plot_embedding na definição de índice de amostra para a coleção sample_mflix.embedded_movies, substitua a definição de índice pelo seguinte:

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).

Voltar

geo

Nesta página