One file describes the sample and the requirements the decision will be judged against. Nothing else is configured anywhere.
Five properties of your data, computed against exact answers. These decide which architectures are even in the running — before anything is tried.
Your topics overlap and your queries sit between them. Architectures that partition by meaning need boundaries to partition on, and this corpus has few — they will be measured anyway, and the numbers will say so.
Your answers also go stale: a partition built on last year's documents finds this year's noticeably worse. That is a fact about your corpus rather than about any database, and it is worth knowing before you choose one.
Each scored against the same exact answers on your sample. Nothing is judged here — these are measurements, and the constraint column is shown only so you can see where the line falls.
| Architecture | Configuration | Recall | Reachable | Storage | Queries a node sees |
|---|---|---|---|---|---|
| One index, one machine | M=32 · ef=128 | 0.991 | 1.000 | 1.00× | all |
| Split by hash | 3 shards · M=32 · ef=96 | 0.989 | 1.000 | 1.00× | all |
| Split by meaning | 256 regions · ε=0.00 · probe 1 | 0.412 | 0.413 | 1.00× | 1 of 256 |
| Split by meaning | 256 regions · ε=0.10 · probe 2 | 0.734 | 0.736 | 2.41× | 2 of 256 |
| Split by meaning | 256 regions · ε=0.20 · probe 2 | 0.861 | 0.862 | 3.68× | 2 of 256 |
For every configuration that split by meaning, what the index returned was almost exactly everything its routing could reach — the gap between recall and reachable is under 0.002 throughout. The deficit is not the index being imprecise; it is neighbours living in regions the query never visits, and no amount of tuning recovers them.
That matches what the corpus said before anything ran: few clear boundaries, most queries sitting between regions.
Two engines, one machine, the same sample and the same queries, run in turn. Speed is measured three times because one measurement near a threshold is a coin flip.
Twenty-four configurations judged against five constraints. Every verdict below names the file and field it was read from.