Menu Docs
Página inicial do Docs
/ /

Como indexar campos de vetor

Você pode usar o vector tipo 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, em seu pipeline de agregação do$searchpara consultar campos indexados como o tipo vector.

Aplicam-se as seguintes limitações:

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

  • Você não pode definir storedSource como true em definições de índice que contenham vector o tipo. Em vez disso, utilize include para especificar os campos para armazenar em mongot ou utilize exclude para excluir o vector campo do tipo do armazenamento.

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

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 no momento da consulta. Você pode definir este campo somente para campos 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 visualização. Modificar os valores padrão pode impacto negativamente o índice e as consultas 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 maior melhora a recuperação (precisão dos resultados da pesquisa) porque o gráfico está mais bem conectado. No entanto, isso também aumenta o tempo de query e indexação, aumentando o número de vizinhos para avaliar por nó do gráfico e requer mais memória para armazenar os nós adicionais para cada conexão no gráfico 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 maior 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 abaixo utiliza a sample_mflix.embedded_movies collection nos dados de amostra. Depois de carregar a coleção, você pode usar o exemplo a seguir para indexar o plot_embedding_voyage_3_large campo como o vector tipo para executar queries usando o vectorSearch (operador de pesquisa do MongoDB). Para que uma consulta de exemplo seja executada em relação a esse índice, consulte Exemplos.

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

  • 2048 número de dimensões

  • dotProduct função de similaridade

  • scalar quantização

Voltar

uuid

Nesta página