Antes de usar o Vector Retrieval Service for Milvus (Milvus), estime suas necessidades de recursos computacionais para garantir a estabilidade do sistema e controlar custos. O Milvus oferece uma calculadora de recursos para auxiliar na estimativa com base em dados experimentais, como quantidade de vetores, dimensão dos vetores e tipo de índice. No entanto, ajuste a configuração da implantação real conforme os resultados dos seus testes.
Calculadora de recursos
O Milvus mantém uma proporção de CPU para memória de 1:4. Para assegurar a estabilidade da instância, o serviço provisiona mais memória do que o estritamente necessário.
Use a calculadora de recursos para estimar os recursos necessários da instância. Insira a quantidade e a dimensão dos vetores, selecione um tipo de índice e o sistema recomendará uma configuração adequada. Por exemplo, para um conjunto de dados com 8 milhões de vetores de 768 dimensões cada, usando o tipo de índice HNSW com o parâmetro M definido como 4, a calculadora exibe uma recomendação em tempo real. Use essas sugestões como ponto de partida para selecionar a instância e realizar testes de desempenho. A calculadora aceita os seguintes parâmetros de entrada: seletor High Availability, Vector Count (Millions), Vector Dimension, Index Type (como HNSW), Index Parameter M (número de vizinhos por nó, variando de 4 a 64) e seletor Scalar Field. Como ilustração, para 8 milhões de vetores de 768 dimensões com índice HNSW (M=4), a ferramenta estima 31,2 GB de memória necessária e 22,9 GB para dados brutos, sugerindo um cluster com 40 núcleos de CPU e 160 GB de memória. A configuração recomendada para cada componente do Milvus é: serviço de metadados (1 instância de 4 núcleos, 16 GB), Proxy (1 instância de 2 núcleos, 8 GB), Query Node (2 instâncias de 4 núcleos, 16 GB), Index Node (1 instância de 4 núcleos, 16 GB) e Data Node (1 instância de 2 núcleos, 8 GB). Essas estimativas derivam de dados experimentais. Recomendamos ajustar a configuração com base nos seus testes antes da implantação em produção.
Parâmetros de recursos
Configuração de alta disponibilidade
A configuração de alta disponibilidade estabiliza o cluster online por meio de um mecanismo de réplica de nó duplo. Ela também carrega duas réplicas dos dados por padrão, o que melhora significativamente a tolerância a falhas e a confiabilidade do sistema. Observe que ativar a alta disponibilidade dobra os requisitos de recursos em comparação a uma configuração sem HA. Antes de ativar esse recurso, avalie e planeje cuidadosamente as necessidades de recursos do cluster de produção.
Escala de recursos de entrada
|
Parâmetro |
Descrição |
|
Vector Count (Millions) |
A quantidade de vetores determina diretamente o tamanho do índice e o volume de dados a serem varridos durante as consultas. Um número maior exige mais armazenamento, aumenta a complexidade computacional na criação do índice e nas buscas, resultando em tempos de processamento mais longos e maior demanda de hardware. |
|
Vector Dimension |
A dimensão do vetor influencia a complexidade e a precisão do índice. Vetores com mais dimensões elevam a complexidade e o custo computacional das buscas por similaridade. Isso impacta tanto os custos de armazenamento quanto a velocidade da consulta, especialmente sem estratégias eficazes de redução de dimensionalidade ou quantização. |
Tipo de índice
O tipo de índice é um fator determinante para os requisitos de recursos e o desempenho das consultas. Algoritmos diferentes apresentam demandas distintas de memória, CPU e tempo de resposta. Os tipos suportados estão descritos abaixo.
|
Parâmetro |
Descrição |
|
HNSW |
O HNSW (Hierarchical Navigable Small World) é um índice baseado em grafos que oferece alta eficiência de consulta, especialmente em espaços de dados de alta dimensão. Contudo, exige mais recursos computacionais e memória. Indicado para cenários que demandam máxima velocidade de busca, possuem recursos abundantes e envolvem processamento de dados multidimensionais. |
|
IVF_FLAT |
Oferece equilíbrio entre precisão e velocidade, sendo adequado para a maioria dos casos. Reduz a complexidade computacional via clustering, proporcionando ganho significativo de desempenho sobre o índice FLAT com consumo moderado de recursos. Ideal para grandes conjuntos de dados onde se busca balancear desempenho e custos. |
|
DISKANN |
Técnica de busca aproximada de vizinhos mais próximos (ANN) baseada em disco, projetada para recuperação rápida e eficiente em larga escala. Utiliza o algoritmo de grafo Vamana para indexar e recuperar vetores mesmo com memória limitada, sendo apropriado para dados massivos de alta dimensão. |
|
SCANN |
Estrutura de índice eficiente para busca aproximada de vizinhos mais próximos (ANN), voltada para grandes volumes de dados que priorizam velocidade em detrimento de precisão absoluta. Equilibra rapidez e consumo de recursos por meio de poda do espaço de busca e quantização, com foco em busca de produto interno máximo (MIPS). |
|
FLAT |
Garante a maior precisão possível ao realizar correspondência exata, mas compromete a velocidade. O desempenho pode ser insatisfatório em grandes bases de dados. Recomendado para volumes menores (ex.: dezenas de milhões) com exigências rigorosas de precisão e tolerância a buscas mais lentas. |
|
IVF_SQ8 |
Acelera a recuperação por meio de quantização, adequando-se a cenários com recursos limitados que necessitam de alto recall. Porém, a precisão pode ser inferior à do HNSW. Excelente opção para aplicações em larga escala com restrições de infraestrutura e necessidade de alta taxa de recall. |
|
AUTOINDEX |
Tipo exclusivo do kernel comercial Zilliz que aprimora substancialmente o desempenho de busca. Em comparação aos índices do Milvus open source, o AUTOINDEX apresenta vantagem clara. Testes de benchmark demonstram que, em certos conjuntos de dados, ele atinge 3x mais QPS que outros tipos. |
Parâmetros de índice
HNSW: Defina o valor M, que estabelece o número de vizinhos para cada nó. Valores maiores aumentam o recall e a precisão, mas também elevam o tempo de construção do índice e o uso de memória. Valores menores aceleram a criação e economizam memória, podendo sacrificar parte da precisão. Um valor inicial sugerido para M é
lg(N), onde N representa o total de vetores. Ajuste esse valor posteriormente conforme o desempenho real das consultas. Por exemplo, teste M igual a 16, 32 ou 64 e refine com base nos resultados.IVF_FLAT e IVF_SQ8: Configure o número de clusters (listas invertidas) para particionar o espaço vetorial. Mais clusters melhoram a precisão e o recall, porém incrementam o tempo de indexação e o custo computacional da busca. Menos clusters reduzem a complexidade, mas podem diminuir a precisão.
SCANN: Use o parâmetro
with_raw_datapara definir se os dados brutos serão armazenados no índice. Caso o sistema foque em buscas rápidas e aproximadas, sem acesso frequente aos dados originais, defina comoFalse. Do contrário, configure comoTrue.
Campos escalares
Ao ativar a opção Scalar Fields, configure o parâmetro Average Size of Data per Row. Isso permite que o sistema de indexação aloque memória, armazenamento e recursos de sharding de forma eficiente, otimizando o desempenho das consultas.