milvus-logo
LFAI
Home
  • Conceitos

Índice no disco

Este artigo apresenta um algoritmo de indexação em disco chamado DiskANN. Com base nos gráficos Vamana, o DiskANN permite pesquisas eficientes em grandes conjuntos de dados.

Para melhorar o desempenho da consulta, é possível especificar um tipo de índice para cada campo de vetor.

Atualmente, um campo vetorial apenas suporta um tipo de índice. O Milvus exclui automaticamente o índice antigo ao alternar o tipo de índice.

Pré-requisitos

Para usar o DiskANN, observe que

  • DiskANN é ativado por padrão. Se preferir um índice na memória em vez de um índice no disco, é aconselhável desativar esta funcionalidade para obter um melhor desempenho.
    • Para a desativar, pode alterar queryNode.enableDisk para false no seu ficheiro de configuração milvus.
    • Para a ativar novamente, pode definir queryNode.enableDisk para true.
  • A instância do Milvus é executada no Ubuntu 18.04.6 ou numa versão posterior.
  • O caminho de dados do Milvus deve ser montado em um SSD NVMe para obter desempenho total:
    • Para uma instância Milvus Standalone, o caminho de dados deve ser /var/lib/milvus/data no contentor onde a instância é executada.
    • Para uma instância de Milvus Cluster, o caminho de dados deve ser /var/lib/milvus/data nos contentores onde são executados os QueryNodes e os IndexNodes.

Limites

Para utilizar o DiskANN, certifique-se de que

  • Utilize apenas vectores de flutuação com pelo menos 1 dimensão nos seus dados.
  • Utilize apenas a Distância Euclidiana (L2) ou o Produto Interno (IP) para medir a distância entre vectores.

Definições de índice e pesquisa

  • Parâmetros de criação de índices

    Ao construir um índice DiskANN, utilize DISKANN como o tipo de índice. Não são necessários parâmetros de índice.

  • Parâmetros de pesquisa

    ParâmetroDescriçãoIntervaloValor por defeito
    search_listTamanho da lista de candidatos, um tamanho maior oferece uma taxa de recuperação mais elevada com desempenho degradado.[topk, int32_max]16

A DiskANN pode ser afinada. Pode modificar os parâmetros relacionados com a DiskANN em ${MILVUS_ROOT_PATH}/configs/milvus.yaml para melhorar o seu desempenho.

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBugetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
ParâmetroDescriçãoIntervalo de valoresValor predefinido
MaxDegreeGrau máximo do gráfico Vamana.
Um valor mais elevado oferece uma taxa de recuperação mais elevada, mas aumenta o tamanho e o tempo de criação do índice.
[1, 512]56
SearchListSizeTamanho da lista de candidatos.
Um valor maior aumenta o tempo despendido na construção do índice, mas oferece uma taxa de recuperação mais elevada.
Defina-o para um valor inferior a MaxDegree a menos que precise de reduzir o tempo de construção do índice.
[1, int32_max]100
PQCodeBugetGBRatioLimite de tamanho do código PQ.
Um valor maior oferece uma taxa de recuperação mais elevada, mas aumenta a utilização de memória.
(0.0, 0.25]0.125
SearchCacheBudgetGBRatioRácio de números de nós em cache para dados em bruto.
Um valor maior melhora o desempenho da construção de índices com maior utilização de memória.
[0.0, 0.3)0.10
BeamWidthRatioRácio entre o número máximo de pedidos IO por iteração de pesquisa e o número de CPU.[1, max(128 / número da CPU, 16)]4.0

Resolução de problemas

  • Como lidar com o erro io_setup() failed; returned -11, errno=11:Resource temporarily unavailable?

    O kernel Linux fornece o recurso AIO (Asynchronous non-blocking I/O) que permite que um processo inicie várias operações de E/S simultaneamente sem ter que esperar que qualquer uma delas seja concluída. Isso ajuda a melhorar o desempenho de aplicativos que podem sobrepor processamento e E/S.

    O desempenho pode ser ajustado usando o arquivo virtual /proc/sys/fs/aio-max-nr no sistema de arquivos proc. O parâmetro aio-max-nr determina o número máximo de pedidos simultâneos permitidos.

    O parâmetro aio-max-nr é predefinido para 65535, pode ser configurado para 10485760.

Traduzido porDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?