Summary
I'd like to request support for a large-TopK benchmark scenario: the LAION-100M dataset
with ground truth extended to top-1,000,000 neighbors per query, so that VDBBench can
measure recall/latency/QPS when a single search returns up to 1M results.
Motivation
Large-TopK retrieval (roughly K from 16K up to a few million) is a real production
workload, distinct from the usual K=10/100 setting:
- Batch similarity retrieval — fetch the top 100K–1M most similar items for one query
vector.
- Data mining / candidate generation — extract large candidate sets for downstream
filtering, ranking or model training.
- Regression / evaluation corpora — materialize large result sets to build test
corpora.
Vector databases have started shipping dedicated support for it. Milvus 2.6 has a
collection-level query_mode=large_topk that raises the topK limit from 16,384 to 1,000,000
Today there is no standard, reproducible benchmark for this regime, which makes it hard to
compare systems or to validate optimizations.
Current gap in VDBBench
- Existing performance cases target small K (e.g.
k=100), and the shipped
neighbors.parquet ground truth is correspondingly narrow.
- Recall computation assumes ground truth is at least as wide as the requested K, so a
k=1_000_000 run cannot be scored against the current GT files.
- As a result, evaluating large-TopK today requires generating custom ground truth
out-of-band, which is exactly the duplicated effort a shared benchmark should remove.
Proposed scope
A new case (name TBD, e.g. Performance768D100M_TopK1M) based on the existing LAION-100M
base data, plus a wide ground-truth artifact:
-
Wide GT: top-1M neighbor IDs per query. To keep the artifact manageable, a small
query set is sufficient — large-TopK latency is seconds per query, so a large nq is
neither necessary nor practical.
Rough sizing (int64 IDs):
- 100 queries × 1M × 8 B ≈ 800 MB
- 1,000 queries × 1M × 8 B ≈ 8 GB
So something like 50–200 queries seems like the right trade-off; optionally ship
distances as well (doubles the size), or make GT width configurable
(e.g. top-100K variant for a lighter run).
-
Multi-level recall reporting: report recall@100 / @1K / @10K / @100K / @1M from a
single run, since accuracy typically degrades non-uniformly across the result depth.
-
Latency percentiles + throughput: p50/p95/p99 per query, plus steady-state QPS.
In this regime a single query can take seconds, so a fixed-duration load phase is more
meaningful than a fixed number of queries.
Questions for maintainers
- Is a large-TopK case something the project is open to hosting, given the GT artifact
size? Would a configurable GT width (e.g. 100K default, 1M optional download) be a
better fit than a single 1M-wide file?
- Would you prefer this as a new
CaseType, or as a parameterized variant of the existing
Performance768D100M case with a --k / GT-width option?
I'm happy to help with generating the ground truth and contributing the case if there's
interest in the direction.
Summary
I'd like to request support for a large-TopK benchmark scenario: the LAION-100M dataset
with ground truth extended to top-1,000,000 neighbors per query, so that VDBBench can
measure recall/latency/QPS when a single search returns up to 1M results.
Motivation
Large-TopK retrieval (roughly K from 16K up to a few million) is a real production
workload, distinct from the usual K=10/100 setting:
vector.
filtering, ranking or model training.
corpora.
Vector databases have started shipping dedicated support for it. Milvus 2.6 has a
collection-level
query_mode=large_topkthat raises the topK limit from 16,384 to 1,000,000Today there is no standard, reproducible benchmark for this regime, which makes it hard to
compare systems or to validate optimizations.
Current gap in VDBBench
k=100), and the shippedneighbors.parquetground truth is correspondingly narrow.k=1_000_000run cannot be scored against the current GT files.out-of-band, which is exactly the duplicated effort a shared benchmark should remove.
Proposed scope
A new case (name TBD, e.g.
Performance768D100M_TopK1M) based on the existing LAION-100Mbase data, plus a wide ground-truth artifact:
Wide GT: top-1M neighbor IDs per query. To keep the artifact manageable, a small
query set is sufficient — large-TopK latency is seconds per query, so a large
nqisneither necessary nor practical.
Rough sizing (int64 IDs):
So something like 50–200 queries seems like the right trade-off; optionally ship
distances as well (doubles the size), or make GT width configurable
(e.g. top-100K variant for a lighter run).
Multi-level recall reporting: report
recall@100 / @1K / @10K / @100K / @1Mfrom asingle run, since accuracy typically degrades non-uniformly across the result depth.
Latency percentiles + throughput: p50/p95/p99 per query, plus steady-state QPS.
In this regime a single query can take seconds, so a fixed-duration load phase is more
meaningful than a fixed number of queries.
Questions for maintainers
size? Would a configurable GT width (e.g. 100K default, 1M optional download) be a
better fit than a single 1M-wide file?
CaseType, or as a parameterized variant of the existingPerformance768D100Mcase with a--k/ GT-width option?I'm happy to help with generating the ground truth and contributing the case if there's
interest in the direction.