Menu Docs
Página inicial do Docs
/ /

Como criar índice em campos vetoriais

Você pode usar o tipo vector para indexar embeddings de vetores. O campo vetorial deve conter uma array de números dos seguintes tipos:

  • BSON int32, int64, ou double tipos de dados

  • BSON double Tipo de Dados

Você pode usar o operador vectorSearch, semelhante ao estágio $vectorSearch, no seu $search pipeline de agregação para fazer uma query em campos indexados como o tipo vector.

Aplicam-se as seguintes limitações:

  • Você não pode ter índices em campos com arrays de objetos (tipo embeddedDocuments de MongoDB Search) como tipo vector.

  • Não é possível definir storedSource como true em definições de índice que contenham o tipo vector. Em vez disso, use include para especificar os campos a serem armazenados em mongot ou use exclude para excluir o campo do tipo vector do armazenamento.

  • Você não pode usar o estágio $vectorSearch para consultar campos indexados como o tipo vector.

  • Você pode indexar campos como o tipo vector no MongoDB Search Playground.

O tipo MongoDB Search vector usa os seguintes parâmetros:

Opção
Tipo
necessidade
Descrição

type

vector

Obrigatório

Etiqueta legível por humanos que identifica este tipo de campo. O valor deve ser vector.

numDimensions

Int

Obrigatório

Número de dimensões vetoriais que o MongoDB Search impõe no momento do índice e da query. Você pode definir este campo somente para campos do tipo vector. Você deve especificar um valor menor ou igual a 8192.

Para indexar vetores quantizados ou BinData, você pode especificar um dos seguintes valores:

  • 1 a 8192 para int8 vetores para ingestão.

  • Múltiplo de 8 para int1 vetores para ingestão.

  • 1 a 8192 para binData(float32) e array(float32) vetores para quantização escalar automática.

  • Múltiplo de 8 para binData(float32) e array(float32) vetores para quantização binária automática.

O modelo de incorporação escolhido determina o número de dimensões em suas incorporações vetoriais, com alguns modelos tendo múltiplas opções para quantas dimensões são geradas. Para saber mais, consulte Escolher um método para criar incorporações.

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 tipo vector.

Você pode especificar um dos seguintes valores:

  • euclidean - mede a distância entre as extremidades dos vetores.

  • cosine - mede a similaridade com base no ângulo entre os vetores.

  • dotProduct - mede a similaridade como cosine, mas leva em conta a magnitude do vetor.

Para saber mais, consulte Sobre as funções de similaridade.

quantization

String

Opcional

Tipo de quantização vetorial automática para seus vetores. Use essa configuração somente se suas incorporações forem float ou double vetores.

Você pode especificar um dos seguintes valores:

  • none - Indica que não há quantização automática para as incorporações vetoriais. Use essa configuração se você tiver vetores pré-quantizados para ingestão. Se omitido, este é o valor padrão.

  • scalar - Indica a quantização escalar, que transforma valores em inteiros de 1 bytes.

  • binary - Indica a quantização binária, que transforma valores em um único bit. Para usar esse valor, numDimensions deve ser um múltiplo de 8.

    Se a precisão for crítica, selecione none ou scalar em vez de binary.

Para saber mais, consulte Quantização vetorial.

hnswOptions

Objeto

Opcional

Parâmetros a serem usados na construção do grafo Hierarchical Navigable Small Worlds. Se omitido, usa os valores padrão para os parâmetros maxEdges e numEdgeCandidates.

IMPORTANTE: isso está disponível como um recurso de prévia. A modificação dos valores padrão pode ter impacto adverso no índice de pesquisa e nas queries do MongoDB Search.

hnswOptions.
maxEdges

Int

Opcional

Número máximo de arestas (ou conexões) que um nó pode ter no grafo Hierarchical Navigable Small Worlds. O valor pode estar entre 16 e 64, ambos incluídos. Se omitido, o padrão é 16. Por exemplo, para um valor de 16, cada nó pode ter um máximo de dezesseis arestas de saída em cada camada do grafo Hierarchical Navigable Small Worlds.

Um número mais alto melhora o recall (precisão dos resultados da pesquisa) porque o grafo está mais bem conectado. No entanto, isso também aumenta o tempo de query e indexação ao aumentar o número de vizinhos a serem avaliados por nó de grafo e exige mais memória para armazenar os nós adicionais para cada conexão no grafo Hierarchical Navigable Small Worlds.

hnswOptions.
numEdgeCandidates

Int

Opcional

Analogamente a numCandidates no momento da query, este parâmetro controla o número máximo de nós a serem avaliados para encontrar os vizinhos mais próximos para se conectar a um novo nó. O valor pode estar entre 100 e 3200, ambos incluídos. Se omitido, o padrão é 100.

Um número mais alto fornece um grafo com conexões de alta qualidade, o que pode melhorar a qualidade da pesquisa (recall), mas também pode aumentar a latência da query.

O exemplo de definição de índice a seguir usa a coleção sample_mflix.embedded_movies nos dados de amostra. Depois de carregar a coleção, você pode usar o exemplo a seguir para indexar o campo plot_embedding_voyage_3_large como o tipo vector para executar queries usando o vectorSearch (MongoDB Search Operador). Para que uma query de amostra seja executada com base nesse índice, consulte Exemplos.

Esta definição de índice indexa automaticamente todos os campos indexáveis dinamicamente usando o padrão typeSet e também indexa o campo plot_embedding_voyage_3_large como tipo vector com as seguintes configurações:

  • 2048 número de dimensões

  • dotProduct função de similaridade

  • scalar quantização

Voltar

uuid

Nesta página