콘텐츠로 이동

Vector Index Benchmark

GIST1M과 SIFT1M에서 AkasicDB Hierarchical Navigable Small World (HNSW), Vamana, DiskANN과 pgvector·Milvus HNSW의 Recall@10–QPS를 측정했습니다. AkasicDB quantization과 DiskANN은 Enterprise Edition 기능입니다. Index 생성과 query 예제는 Compare Index Families를 참조하십시오.

Methodology

Dataset별 query vector 순서와 k=10은 모든 제품에서 같았습니다. 각 제품은 같은 host에서 하나씩 실행했으며 server·client CPU 및 memory 한도와 CPU frequency policy를 통일했습니다. 통신에는 제품별 native protocol을 사용했습니다. HNSW는 모두 M=24, ef_construction=200으로 생성했습니다.

항목 조건
Dataset GIST1M: 960-dimensional float32 vector 1,000,000개, official query 1,000개. SIFT1M: 128-dimensional float32 vector 1,000,000개, official query 10,000개
Recall@10 공통 1,000-query 표본에서 원본 vector의 exact squared Euclidean distance (L2)로 계산한 동점 허용 평균. 중복 ID를 제외하고 10번째 ground-truth distance와 같은 결과를 정답으로 처리
QPS Client 하나가 top-10 query 10,000개를 순차 전송. 완료 query 수를 측정 시간으로 나눈 값으로, serialization·전송·server decode·ANN search·결과 수신 포함
반복 동일 index에서 search width 순서를 바꾸어 반복 측정. Point는 QPS 중앙값, error bar는 측정 범위
Segment GIST1M: AkasicDB HNSW·Vamana 각 1개, Milvus Plain 4개, Milvus SQ·PQ 각 5개. SIFT1M: AkasicDB와 Milvus 모두 index 설정별 1개
In-memory index ANN warm-up query 없이 memory에 적재. Index 적재는 측정 구간에서 제외
DiskANN 각 point 전에 host page cache를 비우고 O_DIRECT로 graph를 읽은 cold condition. Cache 초기화는 측정 구간에서 제외

각 제품은 build 후 생성된 segment layout을 그대로 사용했습니다. Milvus는 한 query를 loaded segment별로 병렬 검색합니다. GIST1M Recall@10과 one-client QPS에는 이 multi-segment execution이 포함됩니다. 표의 값은 single-segment 구현 간 비교가 아닙니다.

HNSW search width ef_search와 Vamana·DiskANN search width L은 같은 값에서도 수행하는 작업이 다릅니다. 제품 또는 index family 간 QPS 비율은 Recall@10 차이가 0.5 percentage points (pp) 이내인 point에만 계산했습니다. DiskANN과 in-memory index는 같은 chart에 표시하되 저장 상태가 달라 QPS 비율을 계산하지 않았습니다.

Plain은 quantization이 없는 index입니다. SQ/PQ 비교 단위는 quantizer가 아니라 전체 index 설정입니다. 제품별 압축 형식과 저장 크기는 동일하지 않습니다. AkasicDB series에는 Quantization의 HNSW와 Vamana 권장 profile을 적용했습니다.

GIST1M

Plain index

GIST1M Plain Recall@10–QPS

Figure 1. GIST1M Plain index. Label은 search width | QPS입니다.

Recall@10 차이가 0.5 pp 이내인 Plain 비교:

제품 / index 검색 설정 Recall@10 QPS 비교
pgvector HNSW Plain ef_search=200 97.11% 131.848 기준
AkasicDB HNSW Plain ef_search=200 97.12% 323.850 pgvector 대비 2.456배; Recall 차이 0.01 pp
AkasicDB Vamana Plain L=200 97.37% 328.126 pgvector 대비 2.489배; Recall 차이 0.26 pp

Scalar quantization

GIST1M Scalar quantization Recall@10–QPS

Figure 2. GIST1M scalar quantization. AkasicDB HNSW는 SQ4, AkasicDB Vamana는 ProjectedMinMax8, Milvus HNSW는 SQ4U와 32-bit floating-point (FP32) refine을 사용했습니다.

제품 / index 검색 설정 Recall@10 QPS 비교
Milvus HNSW SQ4U ef_search=200 97.08% 496.138 기준
AkasicDB Vamana ProjectedMinMax8 L=200 97.31% 761.938 Milvus 대비 1.536배; Recall 차이 0.23 pp

Product quantization과 DiskANN

GIST1M Product quantization and DiskANN Recall@10–QPS

Figure 3. GIST1M product quantization과 DiskANN. AkasicDB HNSW는 PQ8 ratio=4, AkasicDB Vamana는 PQ8 ratio=6을 사용했습니다. DiskANN은 cold condition에서 측정했습니다.

같은 width의 Plain 대비 PQ QPS는 AkasicDB HNSW에서 23.71–35.67%, AkasicDB Vamana에서 35.07–49.28% 높았습니다. Recall 변화는 각각 +0.03–+0.50 pp와 −1.49–+0.22 pp였습니다.

DiskANN 설정 L=50 Recall@10 / QPS L=100 Recall@10 / QPS L=200 Recall@10 / QPS
Internal cache 없음 91.64% / 289.569 95.58% / 237.070 98.23% / 167.432
cache_nodes=500000 91.73% / 399.337 95.54% / 325.872 98.22% / 229.786

SIFT1M

Plain index

SIFT1M Plain Recall@10–QPS

Figure 4. SIFT1M Plain index. Label은 search width | QPS입니다.

제품 / index 검색 설정 Recall@10 QPS 비교
pgvector HNSW Plain ef_search=100 99.47% 396.701 기준
AkasicDB HNSW Plain ef_search=100 99.47% 1214.514 pgvector 대비 3.062배; Recall 차이 0.00 pp
Milvus HNSW Plain ef_search=200 99.87% 635.153 기준
AkasicDB HNSW Plain ef_search=200 99.91% 952.188 Milvus 대비 1.499배; Recall 차이 0.04 pp
AkasicDB Vamana Plain L=100 99.83% 1201.449 Milvus 대비 1.892배; Recall 차이 0.04 pp

Scalar quantization

SIFT1M Scalar quantization Recall@10–QPS

Figure 5. SIFT1M scalar quantization. AkasicDB HNSW SQ4의 QPS는 같은 width의 Plain보다 1.15–2.77% 높았고 Recall 차이는 −0.05–+0.24 pp였습니다. ProjectedMinMax8의 차원 하한은 161이므로 128-dimensional SIFT1M에는 적용하지 않았습니다.

Product quantization과 DiskANN

SIFT1M Product quantization and DiskANN Recall@10–QPS

Figure 6. SIFT1M product quantization과 DiskANN. AkasicDB HNSW PQ8 ratio=4의 QPS는 같은 width의 Plain보다 3.65–9.29% 높았고 Recall 차이는 −0.29–+0.09 pp였습니다. AkasicDB Vamana PQ8 ratio=6의 Recall과 QPS는 Plain보다 낮았습니다. DiskANN은 cold condition에서 측정했습니다.

DiskANN 설정 L=50 Recall@10 / QPS L=100 Recall@10 / QPS L=200 Recall@10 / QPS
Internal cache 없음 98.67% / 527.020 99.74% / 410.937 99.94% / 289.283
cache_nodes=500000 98.79% / 728.548 99.71% / 553.036 99.94% / 367.385