온디스크 인덱스
이 문서에서는 DiskANN이라는 온디스크 인덱싱 알고리즘을 소개합니다. DiskANN은 Vamana 그래프를 기반으로 대규모 데이터 세트 내에서 효율적인 검색을 지원합니다.
쿼리 성능을 향상시키기 위해 각 벡터 필드에 대해 인덱스 유형을 지정할 수 있습니다.
전제 조건
DiskANN을 사용하려면 다음 사항에 유의하세요.
- DiskANN은 기본적으로 비활성화되어 있습니다. 온디스크 인덱스보다 인메모리 인덱스를 선호하는 경우 더 나은 성능을 위해 이 기능을 비활성화하는 것이 좋습니다.
- 이 기능을 비활성화하려면 milvus 구성 파일에서
queryNode.enableDisk
을false
으로 변경하면 됩니다. - 다시 활성화하려면
queryNode.enableDisk
을true
으로 설정하면 됩니다.
- 이 기능을 비활성화하려면 milvus 구성 파일에서
- 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 구성
DiskANN은 조정할 수 있습니다. ${MILVUS_ROOT_PATH}/configs/milvus.yaml
에서 DiskANN 관련 매개변수를 수정하여 성능을 개선할 수 있습니다.
...
DiskIndex:
MaxDegree: 56
SearchListSize: 100
PQCodeBugetGBRatio: 0.125
SearchCacheBudgetGBRatio: 0.125
BeamWidthRatio: 4.0
...
파라미터 | 설명 | 값 범위 | 기본값 |
---|---|---|---|
MaxDegree | Vamana 그래프의 최대 정도. 값이 클수록 리콜률이 높아지지만 인덱스의 크기와 구축 시간이 늘어납니다. | [1, 512] | 56 |
SearchListSize | 후보 목록의 크기. 값이 클수록 인덱스 구축에 소요되는 시간은 증가하지만, 리콜률은 높아집니다. 인덱스 구축 시간을 줄여야 하는 경우가 아니라면 MaxDegree 보다 작은 값으로 설정하세요. | [1, int32_max] | 100 |
PQCodeBugetGBRatio | PQ 코드의 크기 제한입니다. 값이 클수록 리콜률이 높아지지만 메모리 사용량이 증가합니다. | (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
로 설정할 수 있습니다.