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,int64oudoubletipos de dados para consulta usando o operador knnBeta .BSON
doubletipo 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.
knnVector Limitações de tipo
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.
Definir o índice para o 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 }
Configurar propriedades de campo do knnVector
O tipo knnVector tem as seguintes opções:
Opção | Tipo | necessidade | Propósito |
|---|---|---|---|
| string | Obrigatório | Etiqueta legível por humanos que identifica este tipo de campo. O valor deve ser |
| 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 |
| 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:
|
Experimente um exemplo para o tipo knnVector
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.