Página inicial do Docs → Iniciar e gerenciar o MongoDB → MongoDB Atlas
Como indexar campos para o Vector Search
Nesta página
Você pode utilizar o tipo vectorSearch
para indexar campo para executar query do $vectorSearch
. Você pode definir o índice para as incorporações vetoriais que deseja fazer a query e os valores booleanos, numéricos ou de cadeia de caracteres que deseja usar para pré-filtrar seus dados. É útil filtrar os dados para restringir o escopo da pesquisa semântica e garantir que determinadas incorporações vetoriais não sejam consideradas para comparação, como em um ambiente de vários inquilinos.
Você pode utilizar a interface de usuário do Atlas e a API de Administração do Atlas para criar seu índice do Atlas Vector Search.
Observação
Você não pode usar o operador knnBeta obsoleto para consultar campos indexados usando a definição de índice do tipo vectorSearch
.
Considerações
Você não pode indexar campos dentro de arrays de documentos ou campos dentro de arrays de objetos em uma definição de índice do tipo vectorSearch
. Você pode indexar campos dentro de documentos usando a notação de ponto.
Sintaxe
A seguinte sintaxe define o tipo de índice vectorSearch
:
1 { 2 "fields":[ 3 { 4 "type": "vector", 5 "path": "<field-to-index>", 6 "numDimensions": <number-of-dimensions>, 7 "similarity": "euclidean | cosine | dotProduct" 8 }, 9 { 10 "type": "filter", 11 "path": "<field-to-index>" 12 }, 13 ... 14 ] 15 }
Sobre o tipo vector
O campo vetorial deve conter uma array de números do tipo de dados BSON double
para consulta usando o estágio de pipeline $vectorSearch
. Você deve indexar o campo vetorial como o tipo vector
dentro da array fields
.
A seguinte sintaxe define o tipo de campo vector
:
1 { 2 "fields":[ 3 { 4 "type": "vector", 5 "path": <field-to-index>, 6 "numDimensions": <number-of-dimensions>, 7 "similarity": "euclidean | cosine | dotProduct" 8 }, 9 ... 10 ] 11 }
Sobre o tipo filter
Opcionalmente, você pode indexar valores booleanos, numéricos e de string para pré-filtrar seus dados. É útil filtrar os dados para restringir o escopo da pesquisa semântica e garantir que nem todos os vetores sejam considerados para comparação. Você deve indexar seus campos booleanos, numéricos e de cadeia de caracteres usando o tipo filter
dentro da array fields
.
A seguinte sintaxe define o tipo de campo filter
:
1 { 2 "fields":[ 3 { 4 "type": "vector", 5 ... 6 }, 7 { 8 "type": "filter", 9 "path": "<field-to-index>" 10 }, 11 ... 12 ] 13 }
Observação
A pré-filtragem de seus dados não afeta a pontuação que o Atlas Vector Search retorna usando $vectorSearchScore
para $vectorSearch
consultas.
Campos de índice do Atlas Vector Search
A definição do índice do Atlas Vector Search usa os seguintes campos:
Opção | Tipo | necessidade | Propósito | ||||||
---|---|---|---|---|---|---|---|---|---|
fields | matriz de documentos | Obrigatório | Campos de vetor e filtro para indexar, um por documento. Pelo menos um documento deve conter a definição de campo para o campo de vetor. Opcionalmente, você também pode indexar campos de número, booleanos e strings, um por documento, para pré-filtrar os dados. | ||||||
fields.type | string | Obrigatório | Tipo de campo a ser usado para indexar campos para
| ||||||
fields.path | string | Obrigatório | Nome do campo a ser indexado. Para campos aninhados, utilize notação de ponto para especificar o caminho para campos incorporados. Você não pode indexar nomes de campos com dois pontos consecutivos (
| ||||||
fields.numDimensions | int | Obrigatório | Número de dimensões vetoriais que o Atlas Vector Search impõe no momento do índice e no momento da query. Você deve especificar um valor menor ou igual a 4096 . Você pode definir este campo somente para campos do tipo vector . | ||||||
fields.similarity | string | Obrigatório | Função de similaridade vetorial a ser usada para procurar os K- vizinhos mais próximos. Você pode definir este campo somente para campos do tipo
ObservaçãoSe você normalizar a magnitude, |
Crie e gerencie índices do Atlas Vector Search
Você pode criar e gerenciar índices do Atlas Vector Search a partir da UI do Atlas e da API de administração do Atlas. Para saber mais, consulte:
Status do nó
Quando você cria o Atlas Vector Search, a coluna Status mostra o estado atual do índice no nó primário do cluster. Clique no link View status details abaixo do status para visualizar o estado do índice em todos os nós do cluster.
Quando a coluna Status lê Active, o índice está pronto para utilizar. Em outros estados, queries em relação ao índice podem retornar resultados incompletos.
Status | Descrição |
---|---|
Não iniciado | Atlas ainda não começou a construir o índice. |
Sincronização inicial | O Atlas está construindo o índice ou reconstruindo o índice após uma edição. Quando o índice está neste estado:
|
Ativo | O índice está pronto para uso. |
Recuperando | A denúncia encontrou um erro. Esse estado geralmente ocorre quando o ponto de replicação atual não está mais disponível no oplog mongod . Você ainda pode fazer query no índice existente até que ele atualize e seu status mude para Active. Use o erro na janela modal View status details para solucionar o problema. Para saber mais, consulte Corrigir problemas do Atlas Search. |
Falhou | O Atlas não conseguiu criar o índice. Use o erro na janela modal View status details para solucionar o problema. Para saber mais, consulte Corrigir problemas do Atlas Search. |
Exclusão em Andamento | O Atlas está excluindo o índice dos nós de cluster. |
Enquanto o Atlas constrói o índice e após a conclusão da construção, a coluna Documents mostra a porcentagem e o número de documentos indexados. A coluna também mostra o número total de documentos na coleção.