How much retrieval quality survives per byte?
An open benchmark for embedding compression and indexing, organised by the projection–quantisation–organisation lens. The headline finding: bits beat dimensions.
v0.2.0 is live on PyPI (pip install bitbudget), now with the indexing leaderboard (bitbudget bench-index) and the multithreaded bit-trie. See the release notes.
BitBudget measures two different things. Pick the one that matches what you built.
| Leaderboard | The question it answers | Metric | You submit | You run |
|---|---|---|---|---|
| Compression primary | How much retrieval quality do you keep per byte? | nDCG@10 vs bytes/vec | a compressor (@method) |
bitbudget run |
| Indexing | What query throughput at what recall and footprint? | recall@10 ยท QPS ยท bytes/vec | an index (@index) |
bitbudget bench-index |
bitbudget run --embedder mxbai --corpus scifact nfcorpus arguana fiqa
Submit: a compressor (@method)
Click a column to sort. Footprint is bytes per vector; lower is better at equal quality.
| Method | Axis | Bytes/vec โฒ | nDCG@10 | % of float |
|---|
bitbudget bench-index --synthetic 100000 128
Submit: an index (@index)
| Method | Axis | Bytes/vec | Recall@10 | QPS |
|---|
Not a separate leaderboard. Evidence that the headline results hold two orders of magnitude larger, measured once on a single cloud machine. Nothing to submit here.
| Method | Axis | Bytes/vec | Recall@10 | QPS |
|---|
| Method | Axis | Bytes/vec | nDCG@10 | % of float |
|---|
Not a separate leaderboard. The compression and indexing boards above are unsupervised; this is the other regime, where labels are available and a better projection can be learned. Same lens, different axis. Nothing to submit here.
| Method | Axis | Bytes/vec | class-mAP |
|---|
Every entry on either leaderboard is a single design choice on one axis of the lens.
Both leaderboards are reproducible and open. Pick the path that matches what you built:
A compressor → register a @method(...), run
bitbudget run --embedder mxbai --corpus scifact nfcorpus arguana fiqa, and open a PR
adding your row to the compression board in site/data.json.
An index → register an @index(...), run
bitbudget bench-index --synthetic 100000 128 (or on your own vectors with
--npz), and open a PR adding your row to the indexing board in site/data.json.
See CONTRIBUTING.md for the decorators and the results-card format.
Every number on this page is regenerated from site/data.json and
deployed automatically on merge. No servers, no tracking.