DISKANN 10M×1536-dim recall requires search_list=4000 to reach 95%, causing unacceptable latency and throughput
@idevasena is already working on this.
Since Jun 10, 2026.
- Dominant language
- Python
- Stars
- 203
- Forks
- 67
- Avg merge
- 20m
- Merged PRs (30d)
- 8
Description
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
- Has anyone achieved 95% recall at search_list ≤ 200 on 10M×1536-dim uniform DISKANN? If so, what configuration?
- Is this expected for uniform high-dimensional data? Should the benchmark use a more structured dataset?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.