Skip to content

DISKANN 10M×1536-dim recall requires search_list=4000 to reach 95%, causing unacceptable latency and throughput #425

Description

@Raysmond

DISKANN 10M×1536-dim recall requires search_list=4000 to reach 95%, causing extreme latency and low throughput

Environment

Item Value
Repo / branch mlcommons/mlperf_storage, main (June 2026)
Milvus v2.6.x, standalone Docker
Storage Solidigm D7-PS1010 TLC 7.68TB NVMe (XFS)
Host 377 GB RAM, Xeon
Dataset 10,000,000 vectors × 1536-dim, uniform random
Metric COSINE
Index DISKANN, max_degree=64, search_list_size=200
Shards 10
Benchmark vdbbench --runtime 300, 8 workers, batch_size=10

Problem

With a correctly-constructed DISKANN index (max_degree=64, the standard value; not the erroneous --max-degree default of 16), reaching 95% recall@10 on 10M × 1536-dim uniform vectors still requires search_list=4000. At this search depth, QPS collapses to 18 and per-query latency exceeds 400 ms — unacceptable for any practical workload.

Results

search_list QPS Recall@10 Mean (ms) P99 (ms)
200 588 59.4% 13.3 14.6
400 356 70.7% 22.3 23.1
800 144 80.5% 55.3 58.4
1200 84 85.7% 94.6 102.6
2000 43 90.6% 183.5 207.5
4000 18 95.2% 435.2 511.2

Root Cause Hypothesis

1536-dimensional uniform vectors are nearly equidistant (nearest-neighbor distance / 100th-neighbor distance ≈ 0.96, vs ≈ 0.7 for SIFT 128-dim). Without clustering structure, DISKANN's graph traversal must explore a large fraction of the graph to find true neighbors — there are no shortcuts. This may be a fundamental limitation of graph-based ANN on high-dimensional uniform data, not a parameter-tuning issue.

Questions

  1. Has anyone achieved 95% recall at search_list ≤ 200 on 10M×1536-dim uniform DISKANN? If so, what configuration?
  2. Is this expected for uniform high-dimensional data? Should the benchmark use a more structured dataset?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions