Como Indexar Incorporações de Vetor para Vector Search
Nesta página
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
oudouble
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 implantações locais do Atlas que você cria com o Atlas CLI. Para saber mais, consulte Criar uma implantação de Atlas local.
knnVector
Revisar Limitações de Tipo
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
.
Definir o índice para o tipo <a class=\" \" href=\"knnVector
\" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
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 "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 }
Configurar knnVector
propriedades do campo
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:
|
Experimente um exemplo para o knnVector
tipo de
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.