Milvus
Zilliz
Home
  • Guia do utilizador
  • Home
  • Docs
  • Guia do utilizador

  • Índices

  • Índices de vectores flutuantes

  • AISAQ

AISAQCompatible with Milvus 2.6.4+

O AISAQ é um índice vetorial baseado em disco que estende o DISKANN para lidar com conjuntos de dados de milhares de milhões de escalas sem exceder os limites da RAM. Ao contrário do DISKANN, que mantém os vectores comprimidos na memória, o AISAQ armazena todos os dados no disco, oferecendo dois modos para equilibrar o desempenho e os custos de armazenamento.

Utilize o AISAQ quando o seu conjunto de dados vectoriais for demasiado grande para caber confortavelmente na RAM, ou quando precisar de otimizar os custos de infraestrutura trocando algum desempenho de consulta por requisitos de memória reduzidos.

Como funciona o AISAQ

O diagrama acima compara os layouts de armazenamento do DISKANN, AISAQ-Performance e AISAQ-Scale, mostrando como os dados (vetores brutos, listas de bordas e códigos PQ) são distribuídos entre a RAM e o disco.

Aisaq Vs Diskann Aisaq Vs Diskann

Fundação: Recapitulação do DISKANN

No DISKANN, os vectores brutos e as listas de arestas são armazenados no disco, enquanto os vectores comprimidos PQ são mantidos na memória (DRAM).

Quando o DISKANN atravessa para um nó (por exemplo, vetor 0):

  • Carrega o vetor bruto(raw_vector_0) e a sua lista de arestas(edgelist_0) a partir do disco.

  • A lista de arestas indica quais vizinhos devem ser visitados em seguida (nós 2, 3 e 5 neste exemplo).

  • O vetor bruto é utilizado para calcular a distância exacta ao vetor de consulta para classificação.

  • Os dados PQ na memória são usados para filtragem de distância aproximada para guiar a próxima travessia.

Como os dados de PQ já estão armazenados em cache na DRAM, cada visita ao nó requer apenas uma E/S de disco, alcançando alta velocidade de consulta com uso moderado de memória.

Para uma explicação pormenorizada destes componentes e parâmetros, consulte DISKANN.

Modos do AISAQ

O AISAQ oferece duas estratégias de armazenamento baseadas em disco. A principal diferença é a forma como os dados comprimidos PQ são armazenados.

Desempenho do AISAQ

O AISAQ-performance consegue um armazenamento totalmente baseado em disco, movendo os dados PQ da memória para o disco e mantendo um baixo IOPS através da colocação e redundância de dados.

Neste modo:

  • O vetor bruto de cada nó, a lista de arestas e os dados de PQ de seus vizinhos são armazenados juntos no disco.

  • Esse layout garante que visitar um nó (por exemplo, vetor 0) ainda requer apenas uma única E/S de disco.

  • No entanto, como os dados PQ são armazenados de forma redundante perto de vários nós, o tamanho do ficheiro de índice aumenta significativamente, consumindo mais espaço em disco.

Escala AISAQ

A escala AISAQ concentra-se na redução da utilização do espaço em disco, mantendo todos os dados no disco.

Neste modo:

  • Os dados PQ são armazenados separadamente no disco, sem redundância.

  • Este design minimiza o tamanho do índice, mas leva a mais operações de E/S durante a travessia do gráfico.

  • Para reduzir o excesso de IOPS, o AISAQ introduz duas optimizações:

    • Uma estratégia de reorganização que ordena os vectores PQ por prioridade para melhorar a localização dos dados.

    • Uma cache PQ na DRAM (pq_cache_size) que armazena em cache os dados PQ frequentemente acedidos.

Como resultado, o AISAQ-scale obtém uma melhor eficiência de armazenamento, mas um desempenho inferior ao do DISKANN ou do AISAQ-Performance.

Exemplo de configuração

# milvus.yaml
knowhere:
  AISAQ:
    build:
      max_degree: 56 # Maximum degree of the Vamana graph
      pq_code_budget_gb_ratio: 0.125 # Size limit on the PQ code (compared with raw data)
      search_list_size: 100 # Size of the candidate list during building graph
    search:
      beam_width_ratio: 4 # Ratio between the maximum number of IO requests per search iteration and CPU number

Parâmetros específicos do AISAQ

O AISAQ herda muitos parâmetros da DISKANN. Para evitar redundância, apenas os parâmetros específicos do AISAQ são descritos a seguir. Para descrições de parâmetros partilhados, tais como max_degree, pq_code_budget_gb_ratio, search_list_size, e beam_width_ratio, consulte DISKANN.

Parâmetro

Descrição

Intervalo de valores

Sugestão de afinação

inline_pq

Número de vectores PQ armazenados em linha por nó. Determina a disposição do armazenamento (modo Desempenho vs. Escala).

Tipo: Inteiro

Intervalo: [0, max_degree]

Valor predefinido: -1

Quanto mais inline_pq se aproximar de max_degree, melhor tende a ser o desempenho, mas o tamanho do ficheiro de índice aumenta significativamente.

Quando inline_pq se aproxima de 0, o desempenho diminui e o tamanho do índice torna-se semelhante ao de DISKANN.

Nota: É altamente dependente do desempenho do disco. Se o desempenho do disco for fraco, não é aconselhável ativar esta opção, uma vez que a largura de banda limitada do disco pode tornar-se um estrangulamento e degradar o desempenho geral.

rearrange

Habilita a ordenação do vetor PQ por prioridade para melhorar a localidade de E/S.

Tipo: Booleano

Intervalo: [true, false]

Valor predefinido: false

Reduz a E/S da consulta, mas aumenta o tempo de criação do índice.

pq_cache_size

Tamanho da cache PQ em DRAM (bytes).

Tipo: Inteiro

Range: [0, 1<<30]

Valor padrão: 0

Uma cache maior melhora o desempenho da consulta, mas aumenta o uso de DRAM.

Considerações

  • O desempenho do disco é importante. O AISAQ depende muito do IOPS do SSD; um armazenamento deficiente pode reduzir o QPS.

  • O modo de desempenho do AISAQ ≈ latência do DISKANN, mas pode exigir várias vezes mais espaço em disco.

  • O modo de escala do AISAQ é adequado para pesquisa offline ou cargas de trabalho de arquivamento de dados em que o QPS é menos crítico.

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?