Milvus
Zilliz
홈페이지
  • 사용자 가이드
  • Home
  • Docs
  • 사용자 가이드

  • 색인

  • 플로팅 벡터 인덱스

  • AISAQ

AISAQCompatible with Milvus 2.6.4+

AISAQ는 디스크 기반 벡터 인덱스로, RAM 한도를 초과하지 않고 수십억 개 규모의 데이터 세트를 처리할 수 있도록 DISKANN을 확장한 것입니다. 압축된 벡터를 메모리에 보관하는 DISKANN과 달리 AISAQ는 모든 데이터를 디스크에 저장하며, 성능과 저장 비용의 균형을 맞추기 위해 두 가지 모드를 제공합니다.

벡터 데이터 세트가 너무 커서 RAM에 적합하지 않은 경우 또는 일부 쿼리 성능을 메모리 요구 사항 감소와 교환하여 인프라 비용을 최적화해야 하는 경우 AISAQ를 사용하세요.

AISAQ 작동 방식

위의 다이어그램은 DISKANN, AISAQ-PerformanceAISAQ-Scale의 스토리지 레이아웃을 비교하여 데이터(원시 벡터, 에지 목록 및 PQ 코드)가 RAM과 디스크 간에 어떻게 분산되는지 보여줍니다.

Aisaq Vs Diskann Aisaq 대 Diskann

기초: DISKANN 요약

DISKANN에서 원시 벡터와 에지 목록은 디스크에 저장되고, PQ 압축 벡터는 메모리(DRAM)에 보관됩니다.

DISKANN이 노드(예: 벡터 0)로 이동하는 경우:

  • 디스크에서 원시 벡터(raw_vector_0)와 그 에지 목록(edgelist_0)을 로드합니다.

  • 에지 목록은 다음에 방문할 이웃을 나타냅니다(이 예에서는 노드 2, 3, 5).

  • 원시 벡터는 순위를 매기기 위한 쿼리 벡터와의 정확한 거리를 계산하는 데 사용됩니다.

  • 메모리의 PQ 데이터는 대략적인 거리 필터링에 사용되어 다음 탐색을 안내합니다.

PQ 데이터는 이미 DRAM에 캐시되어 있기 때문에 각 노드 방문에는 하나의 디스크 I/O만 필요하므로 적당한 메모리 사용량으로 빠른 쿼리 속도를 달성할 수 있습니다.

이러한 구성 요소와 매개변수에 대한 자세한 설명은 DISKANN을 참조하세요.

AISAQ 모드

AISAQ는 두 가지 디스크 기반 스토리지 전략을 제공합니다. 주요 차이점은 PQ 압축 데이터가 저장되는 방식입니다.

AISAQ 성능

AISAQ-성능은 데이터 코로케이션 및 중복성을 통해 낮은 IOPS를 유지하면서 PQ 데이터를 메모리에서 디스크로 이동하여 완전한 디스크 기반 스토리지를 달성합니다.

이 모드에서는

  • 각 노드의 원시 벡터, 엣지 목록, 이웃 노드의 PQ 데이터가 디스크에 함께 저장됩니다.

  • 이 레이아웃에서는 노드(예: 벡터 0)를 방문할 때 여전히 단일 디스크 I/O만 필요합니다.

  • 하지만 PQ 데이터가 여러 노드 근처에 중복 저장되므로 인덱스 파일 크기가 크게 증가하여 디스크 공간을 더 많이 차지합니다.

AISAQ 규모

AISAQ-스케일은 모든 데이터를 디스크에 유지하면서 디스크 공간 사용량을 줄이는 데 중점을 둡니다.

이 모드에서는

  • PQ 데이터는 중복 없이 디스크에 별도로 저장됩니다.

  • 이 설계는 인덱스 크기를 최소화하지만 그래프 탐색 중에 더 많은 I/O 작업을 유발합니다.

  • IOPS 오버헤드를 완화하기 위해 AISAQ는 두 가지 최적화를 도입합니다:

    • 데이터 로컬리티를 개선하기 위해 우선순위에 따라 PQ 벡터를 정렬하는 재배열 전략.

    • 자주 액세스하는 PQ 데이터를 캐시하는 DRAM의 PQ 캐시(pq_cache_size).

결과적으로 AISAQ-스케일은 스토리지 효율성은 더 좋지만 DISKANN 또는 AISAQ-퍼포먼스보다 성능이 낮습니다.

구성 예시

# 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

AISAQ 관련 매개변수

AISAQ는 DISKANN에서 많은 매개변수를 상속합니다. 중복을 피하기 위해 AISAQ 관련 매개변수만 아래에 자세히 설명합니다. max_degree , pq_code_budget_gb_ratio, search_list_size, beam_width_ratio 과 같은 공유 매개변수에 대한 설명은 DISKANN을 참조하세요.

파라미터

설명

값 범위

튜닝 제안

inline_pq

노드당 인라인으로 저장되는 PQ 벡터의 수입니다. 스토리지 레이아웃을 결정합니다(성능 대 스케일 모드).

유형: 정수

범위: [0, 최대_각도]

기본값입니다: -1

inline_pq 에 가까울수록 성능은 좋아지는 경향이 있지만 인덱스 파일 크기는 크게 증가합니다.

inline_pq 이 0에 가까워지면 성능이 저하되고 인덱스 크기는 DISKANN과 비슷해집니다.

참고: 디스크 성능에 따라 크게 달라집니다. 디스크 성능이 좋지 않은 경우 제한된 디스크 대역폭이 병목 현상이 되어 전체 성능이 저하될 수 있으므로 이 옵션을 활성화하지 않는 것이 좋습니다.

rearrange

우선순위에 따라 PQ 벡터 정렬을 활성화하여 I/O 로캘리티를 개선합니다.

Type: 부울

범위: [참, 거짓]

기본값입니다: false

쿼리 I/O를 줄이지만 인덱스 빌드 시간이 늘어납니다.

pq_cache_size

DRAM(바이트) 단위의 PQ 캐시 크기입니다.

유형: 정수

범위: [0, 1<<30]

기본값입니다: 0

캐시가 클수록 쿼리 성능이 향상되지만 DRAM 사용량이 증가합니다.

고려 사항

  • 디스크 성능이 중요합니다. AISAQ는 SSD IOPS에 크게 의존하므로 스토리지가 부족하면 QPS가 저하될 수 있습니다.

  • AISAQ 성능 모드 ≈ DISKANN 지연 시간이 짧지만 디스크 공간이 몇 배 더 필요할 수 있습니다.

  • AISAQ 규모 모드는 QPS가 덜 중요한 오프라인 검색 또는 데이터 아카이브 워크로드에 적합합니다.

Try Managed Milvus for Free

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

Get Started
피드백

이 페이지가 도움이 되었나요?