milvus-logo
LFAI
홈페이지
  • 개념

온디스크 인덱스

이 문서에서는 DiskANN이라는 온디스크 인덱싱 알고리즘을 소개합니다. DiskANN은 Vamana 그래프를 기반으로 대규모 데이터 세트 내에서 효율적인 검색을 지원합니다.

쿼리 성능을 향상시키기 위해 각 벡터 필드에 대해 인덱스 유형을 지정할 수 있습니다.

현재 벡터 필드는 하나의 인덱스 유형만 지원합니다. Milvus는 인덱스 유형을 전환할 때 이전 인덱스를 자동으로 삭제합니다.

전제 조건

DiskANN을 사용하려면 다음 사항에 유의하세요.

  • DiskANN은 기본적으로 비활성화되어 있습니다. 온디스크 인덱스보다 인메모리 인덱스를 선호하는 경우 더 나은 성능을 위해 이 기능을 비활성화하는 것이 좋습니다.
    • 이 기능을 비활성화하려면 milvus 구성 파일에서 queryNode.enableDiskfalse 으로 변경하면 됩니다.
    • 다시 활성화하려면 queryNode.enableDisktrue 으로 설정하면 됩니다.
  • Milvus 인스턴스는 Ubuntu 18.04.6 이상 릴리스에서 실행됩니다.
  • Milvus 데이터 경로는 전체 성능을 위해 NVMe SSD에 마운트해야 합니다:
    • Milvus 독립 실행형 인스턴스의 경우, 데이터 경로는 인스턴스가 실행되는 컨테이너의 /var/lib/milvus/data여야 합니다.
    • Milvus 클러스터 인스턴스의 경우, 데이터 경로는 쿼리 노드 및 인덱스 노드가 실행되는 컨테이너의 /var/lib/milvus/data여야 합니다.

제한 사항

DiskANN을 사용하려면 다음 사항을 준수해야 합니다.

  • 데이터에 차원이 1개 이상인 플로트 벡터만 사용하세요.
  • 벡터 사이의 거리를 측정할 때는 유클리드 거리(L2), 내적 곱(IP) 또는 COSINE만 사용하세요.

색인 및 검색 설정

  • 인덱스 구축 매개변수

    DiskANN 인덱스를 구축할 때 인덱스 유형으로 DISKANN 을 사용합니다. 인덱스 매개변수는 필요하지 않습니다.

  • 검색 매개변수

    파라미터설명범위기본값
    search_list후보 목록의 크기로, 크기가 클수록 리콜률이 높아지지만 성능이 저하됩니다.[TOPK, INT32_MAX]16

DiskANN은 조정할 수 있습니다. ${MILVUS_ROOT_PATH}/configs/milvus.yaml 에서 DiskANN 관련 매개변수를 수정하여 성능을 개선할 수 있습니다.

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBugetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
파라미터설명값 범위기본값
MaxDegreeVamana 그래프의 최대 정도.
값이 클수록 리콜률이 높아지지만 인덱스의 크기와 구축 시간이 늘어납니다.
[1, 512]56
SearchListSize후보 목록의 크기.
값이 클수록 인덱스 구축에 소요되는 시간은 증가하지만, 리콜률은 높아집니다.
인덱스 구축 시간을 줄여야 하는 경우가 아니라면 MaxDegree 보다 작은 값으로 설정하세요.
[1, int32_max]100
PQCodeBugetGBRatioPQ 코드의 크기 제한입니다.
값이 클수록 리콜률이 높아지지만 메모리 사용량이 증가합니다.
(0.0, 0.25]0.125
SearchCacheBudgetGBRatio원시 데이터에 대한 캐시된 노드 번호의 비율입니다.
값이 클수록 메모리 사용량이 증가하여 인덱스 구축 성능이 향상됩니다.
[0.0, 0.3)0.10
BeamWidthRatio검색 반복당 최대 IO 요청 수와 CPU 수 사이의 비율입니다.[1, 최대(128 / CPU 수, 16)]4.0

문제 해결

  • io_setup() failed; returned -11, errno=11:Resource temporarily unavailable 오류를 어떻게 처리하나요?

    Linux 커널은 프로세스가 여러 I/O 작업이 완료될 때까지 기다릴 필요 없이 동시에 시작할 수 있는 비동기 비차단 I/O(AIO) 기능을 제공합니다. 이를 통해 처리와 I/O가 겹칠 수 있는 애플리케이션의 성능을 향상시킬 수 있습니다.

    proc 파일 시스템의 /proc/sys/fs/aio-max-nr 가상 파일을 사용하여 성능을 조정할 수 있습니다. aio-max-nr 매개 변수는 허용되는 최대 동시 요청 수를 결정합니다.

    aio-max-nr 기본값은 65535 이며 10485760 로 설정할 수 있습니다.

번역DeepL

Try Managed Milvus for Free

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

Get Started
피드백

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