Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/

Melhorar o desempenho da pesquisa vetorial

Nesta página

  • Reduzir as dimensões do vetor
  • Evite indexar vetores ao executar queries
  • Dados pré-filtro
  • Usar nós de pesquisa dedicados
  • Excluir campos vetoriais dos resultados
  • Tenha memória suficiente.
  • Aqueça o cache do sistema de arquivos
  • Use vetores binData
  • Quantize as incorporações vetoriais

Atlas Vector Search permite que você execute queries deANN em que o Atlas Search busca resultados semelhantes a um produto selecionado, Atlas Search por imagens e assim por diante. Para melhorar a velocidade de indexação e o desempenho da consulta, revise as seguintes práticas recomendadas.

O Atlas Vector Search suporta até 4096 dimensões vetoriais inclusivas. No entanto, a indexação e as queries vetoriais do Atlas Search são computacionalmente intensivas, pois vetores maiores exigem mais comparações de pontos flutuantes. Portanto, sempre que possível, recomendamos reduzir o número de dimensões depois de garantir que você possa medir o impacto da alteração dos modelos de incorporação na precisão das suas queries vetoriais.

A incorporação de vetores consome recursos computacionais durante a indexação. Recomendamos evitar a indexação e a reindexação durante uma pesquisa vetorial. Se você decidir alterar o modelo de incorporação que produz os vetores para indexar, recomendamos reindexar os novos vetores em um novo índice em vez de atualizar o índice que está em uso atualmente.

Se você tiver mais vetores ou vetores com dimensões maiores, poderá restringir o escopo da pesquisa semântica e garantir que nem todos os vetores sejam considerados para comparação. Recomendamos incluir a filter opção dentro do $vectorSearch pipeline do, que executa a pré-filtragem para reduzir o número de documentos para realizar a pesquisa vetorial. Além disso, considere o impacto no desempenho de vetores de dimensionamento muito alto, pois o desempenho da consulta pode degradar com arrays grandes.

Se você implantar os processos mongod e mongot no mesmo nó, poderá haver contenção de recursos entre os processos. Para otimizar o desempenho de suas queries do Atlas Vector Search , recomendamos que você implemente o mongot processo em nós de pesquisa dedicados. Isso não apenas ajuda a evitar a contenção de recursos entre os mongot mongod processos e, mas também permite a pesquisa de segmentos paralelos por padrão para consultas nos nós $vectorSearch de pesquisa.

Você pode solicitar campos existentes dos documentos nos resultados e campos recém-calculados para serem retornados no estágio $project . Para melhorar o desempenho da query, utilize o estágio $project para selecionar criteriosamente os campos para retornar nos resultados, a menos que você precise de todos os campos nos resultados. Recomendamos excluir o campo de vetor no estágio $project porque as incorporações de vetores podem ser grandes e afetar a latência da query ao retornar os resultados.

O hierárquico de mundos pequenos navegáveis funciona eficientemente quando dados vetoriais são mantidos na memória. Você deve garantir que os nós de dados tenham RAM suficiente para manter os dados e índices vetoriais. Recomendamos implantar nós de pesquisa separados para isolamento do volume de trabalho sem isolamento de dados, o que permite um uso mais eficiente da memória para casos de uso de pesquisa vetorial.

Quando você realiza uma pesquisa vetorial, suas queries inicialmente realizam buscas aleatórias no disco conforme você percorre o gráfico de Hierarchical Navigable Small World e os valores do vetor são lidos na memória. Isso causa uma latência muito alta para queries iniciais. A latência melhora quando Hierarchical Navigable Small Worlds traversal lê todos os vetores indexados na memória, o que permite que eles sejam acessados muito mais rapidamente para queries subsequentes.

No entanto, esse processo de aquecimento de cache deve ser repetido em gravações grandes ou quando o índice for recriado.

Os subtipos de vetores BinData fornecem 3x de economia de armazenamento ao usar vetores flutuantes em mongod e também oferecem suporte a vetores de indexação com tipos alternativos, como int8 vetores e int1 vetores. Esse perfil de recurso significativamente reduzido acelera o caminho de query interno que mongod o utiliza para recuperar documentos do banco de dados para cada query $vectorSearch do. O uso de vetores binData, mesmo quando você está usando binData flutuadores, acelera materialmente a latência da query, especialmente quando o limit (número de resultados) é maior que 20.

A quantização escalar reduz a precisão de cada dimensão individual, como a conversão de números de ponto flutuante de 32bits para inteiros de 8bits. No entanto, ele mantém a capacidade de recuperar bem as informações relevantes para a maioria dos modelos de incorporação. Por outro lado, a quantização binária reduz os vetores 1 para 0 ou, que tem melhor desempenho para modelos de incorporação QAT.

A Quantização escalar é boa para preservar a recuperação para vetores da maioria dos modelos de incorporação. Se você tiver vetores de modelos de incorporação do QAT, a quantização binária poderá fornecer melhor desempenho porque o processo de treinamento instrui o modelo a se adaptar à redução extrema da precisão.

Voltar

Avalie os resultados