single_node_hnsw and hash_sharded differ by less than the calibration tolerance on recall. They are separated only where they differ measurably. simulate.json:rows[*].recall_at_10 · tolerance 0.01
Decision
8 configurations · 3 families · 5 constraintsEvery constraint is met, failed, or unchecked. Select any figure to see the file and field it was read from.
| configuration | recall@10 | storage | p95 under load | sustained | outcome |
|---|---|---|---|---|---|
| single_node_hnsw M=32 ef=128 |
couldn't check | ||||
| hash_sharded shards=3 ef=96 |
1.00× | — | couldn't check | ||
| semantic_sharded ε=0.20 probe=2 |
— | — | fails | ||
| semantic_sharded ε=0.10 probe=2 |
0.8952 | 2.67× | — | — | fails |
| semantic_sharded ε=0.00 probe=1 |
0.5472 | 1.00× | — | — | fails |
single_node_hnsw could not be checked on latency_p95 — meets in 1 of 2 runs, spread 4.60 ms. The same configuration measured 38.22 ms in environment tf8sd2usxbblsm (9 September) and 42.82 ms in z01d7n4buc1a6i (11 September) against a 40.0 ms constraint that fell between them. A latency verdict within ~15% of its threshold is not settled by one run, so neither meets nor fails is supported by this evidence. verify.json:searches[k=10_under_load].p95_ms
hash_sharded could not be checked on latency_p95: the verify run built a single index, which is not a hash_sharded deployment. This row's architecture was simulated and never built. verify_info.json:engine_facts.index_params
Your corpus
measured on 20,000 of 2.1M vectorsFive properties decide which architectures are worth trying at all. These are measurements of your data, not a comparison against anything.
The alternatives
8 configurations, scored against exact answersNothing here is a verdict. Recall is split into what the partition lost and what the index lost, so you know which one to fix.
| configuration | recall@10 | reachable | index loss | storage | fan-out |
|---|---|---|---|---|---|
| hash_sharded shards=3 | 0.9984 | 1.0000 | 0.0016 | 1.00× | 3 |
| single_node_hnsw M=32 | 0.9976 | 1.0000 | 0.0024 | 1.00× | 1 |
| semantic ε=0.20 probe=2 | 0.9318 | 0.0006 | 3.72× | 2 | |
| semantic ε=0.10 probe=2 | 0.8952 | 0.8958 | 0.0006 | 2.67× | 2 |
| semantic ε=0.20 probe=1 | 0.7755 | 0.7761 | 0.0006 | 3.72× | 1 |
| semantic ε=0.00 probe=1 | 0.5472 | 0.5478 | 0.0006 | 1.00× | 1 |
The real engine
qdrant 1.19.1 · runpod tf8sd2usxbblsm · measured on arxiv-150k, 150,000 vectors — not on the support-tickets corpus this page otherwise describesLatency and throughput are properties of an implementation on a machine. They are measured, never simulated.
The ground
your vectors, partitionedSemantic sharding stores a copy of a vector in every region whose centre is within ε of its nearest. Move ε and the copies are recounted from the distances carried for each vector.
One query, every hop
2,000 held-out queries with exact top-10Follow a query from scoring to answer, and see which of its true neighbours the route never reaches.