Melhorar o desempenho da pesquisa vetorial
Nesta página
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.
Reduzir as dimensões do vetor
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.
Evite indexar vetores ao executar queries
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.
Dados pré-filtro
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.
Usar nós de pesquisa dedicados
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.
Excluir campos vetoriais dos resultados
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.
Tenha memória suficiente.
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.
Aqueça o cache do sistema de arquivos
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.
Usar binData
vetores
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.
Quantize as incorporações vetoriais
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.