>_RECONCODA
37.7749N 122.4194W · SCIFACT · NFCORPUS · FINANCEBENCH · MS-MARCO-500K
Research briefing · rev. 5 — readability pass

Binary Retrieval as Infrastructure Repurposing

How compact indexes turn existing CPU capacity into usable AI retrieval
The finding, in one sentenceCompact indexing — binary, and just as well, int8 — lets a large evidence-search index fit inside CPU and memory budgets that a float32 index can't touch. It doesn't make search meaningfully better. It doesn't make requests meaningfully faster. And binary specifically isn't the part doing the work — int8 gets you almost all of it.
Author & tested byPawel Zaloga & Zach Alkharusy
Prepared forReconCoda BNN / Low-Bit RAG Program
ScopeRetrieval only — not a true-BNN or general generation claim
Evidence basePaper A archive — claims register, methods, per-query results, limitations register
RevisionReadability pass on v4. Numbers, tables, citations unchanged.
Executive thesis

Reuse what you already have. A compact vector index lets a search service run on modest, existing CPU machines that a conventional float32 index simply can't fit on. That's the real value here — not speed, not a quality breakthrough, just infrastructure you don't have to buy.

1. Why this matters

Most AI systems that answer questions first search a pile of documents, then hand the best passages to a model as evidence. To search by meaning rather than exact wording, the documents get converted into embeddings — long lists of numbers. A large collection of ordinary 32-bit embeddings eats memory fast. Binary embeddings keep only the sign of each number, positive or negative, which shrinks the index dramatically.

The pitch writes itself: go binary, get the same answers, spend a fraction of the memory. That's the claim we set out to test. What we found is narrower and more useful than the pitch: the savings are real, but they come from memory and deployment flexibility, not from binary storage making search better on its own. Quality comes from the whole pipeline around it.

2. What we tested

Three questions:

  1. Can a binary index match a float32 index on search quality, when both get the same supporting pipeline?
  2. If it can, what's actually doing the work — the binary storage, or the pipeline stages that clean up its rough first pass?
  3. What do we really gain, in memory and in response time, once we measure the whole request instead of one fast sub-step?

Then we tried to break it: noisy queries, a much larger corpus, five embedding models, four rerankers, and increasingly aggressive compression.

3. The correction that changed everything

Our first comparison wasn't fair. The binary system had keyword search, a fusion step, a precision recheck, and a reranker running on top of it. The float32 baseline had none of that. Unsurprisingly, binary looked better for reasons that had nothing to do with binary storage — on NFCorpus, the early numbers even showed binary beating float32 outright (0.3715 vs 0.3435, a 108% reading). It wasn't a win. It was two systems doing different amounts of work.

We fixed it by giving float32 the identical pipeline — same embedder, same keyword search, same recheck, same fusion, same reranker. The only remaining variable was how vectors were stored. That single fix moved our headline speed number from a 2.38× end-to-end win down to 1.04× — a statistical tie.

Worth sitting withThat's a big reversal to swallow, and it cuts two ways. Disclosing it in full is a good sign about how this project handles its own errors. But a collapse that size — the entire quantitative headline flipping from "clear win" to "no difference" — also means a serious asymmetry survived an earlier round of review undetected. Nobody has run a second, independent audit of what's left. Treat that absence as real, not a formality.

One implementation note, so a re-measured number doesn't read as a mystery: the keyword-search backend was swapped mid-project (the original couldn't scale to our largest corpus), and every figure here was re-measured under the replacement. The reranker's share of total request time moved from roughly 70% to roughly 93% as a direct result of that fix — not from anything about binary vs. float32.

General lesson for anyone reading this as a methods example: when two pipelines differ in more than the one variable being tested, the result can't tell you which difference caused the outcome.

4. What we built

Four steps: cast a wide net with binary or float32 vector search; recheck the top candidates at higher precision; run keyword search in parallel and merge the two result lists; rerank the merged candidates.

We compared four index formats — binary, float32, int8, and product quantization (included specifically to check whether the result is unique to binary). Quality was tested on three corpora — SciFact (300 queries), NFCorpus (323 queries), FinanceBench (150 queries) — plus a 500,000-passage slice of MS MARCO with 6,980 judged queries, to see whether the result held at real scale. Every comparison used paired statistical tests so small differences weren't mistaken for real ones.

5. The main result: quality holds

With everything else held constant, binary matched float32 on every corpus tested:

CorpusBinaryMatched float32Reading
SciFact0.76430.7643Bit-identical rankings
NFCorpus0.36990.3699100.02% retention — no meaningful difference
FinanceBench0.72790.7153Binary read higher, but n=150 is too small to call it (CI crosses zero)

The strongest number in the whole study lives outside that table. On the 500K-passage MS MARCO slice — 6,980 judged queries, roughly 100× the query volume of anything else here — binary hit nDCG@10 0.7962 against float32's 0.7968: 99.92% retention, with a confidence interval that includes zero. This is also the only place quality and scale were tested on the same embedding model rather than on two separately-measured setups — closing what had been the single largest open gap in the earlier drafts.

Read carefullyWorth saying plainly: "no meaningful difference in our tests" is not the same claim as "binary is lossless." Don't let one become the other.

6. Where the quality actually comes from

The headline finding here is that binary storage isn't carrying this alone.

We reproduced the setup from a 2025 published study (Huerga-Pérez et al.) — binary search, no repair stages — and got their result: quality fell 9.3–18.0% across four tests, a real and statistically clear cliff. Then we added the repair stages back one at a time. Full-precision queries recovered a big share of the loss. An 8-bit precision recheck recovered most of the rest. Keyword fusion plus reranking closed nearly all of what remained.

Binary search is a fast, cheap way to gather plausible candidates. The pipeline stages after it are what make those candidates trustworthy.

Three stress tests on that claim:

The one embedder that didn't fully recover — e5-base-v2, at 94.59% retention on NFCorpus — gets its own explanation in §10.

A correction worth flagging on its ownAn earlier draft cited a 41/59 embedder-vs-reranker credit split in this section. That number is real, but it belongs to a different experiment entirely — an unrelated NVIDIA-stack attribution test, not this section's repair story. (The archive itself documents the naming collision: two unrelated analyses both got informally called "R2.") This section's actual mechanism — reranking drives recovery — comes from §8's direct 93% latency measurement, not from any ablation ordering that could bias it.

7. What compact indexing buys — and why "binary" oversells it

The memory result is simple. A roughly one-million-vector, 3072-dimension index, tested under an 8 GB CPU limit:

FormatMemoryFits in 8 GB?
Float3211,707 MBNO
Int82,927 MBYES
Binary366 MBYES
Product quantization (same 32×)366 MBYES

Float32 couldn't run at all. Binary and PQ leave 7.8+ GB free — enough to change which existing machines can host the service without a new high-memory purchase.

But this oversells "binary" specificallyThis is a benefit of compact indexing broadly, not of binary specifically. Int8 lands bit-identical to the fair float32 comparator with a simpler, more established technique, and it also clears the 8 GB bar; PQ matches binary's footprint outright. Binary's only uncontested edge over int8 is a further 8× memory cut on top of what int8 already delivers — not better correctness. If a deployment doesn't need that extra 8×, int8 is the more conservative way to get nearly all of this section's benefit.

8. What didn't hold: end-to-end speed

Timed in isolation, binary search was clearly faster — 559.2 searches/sec vs. 234.7 for float32, a 2.38× win at similar recall.

But nobody uses an isolated lookup. Once candidate rechecking, keyword search, fusion, and reranking are counted, the gap was 65.55ms for float32 vs. 63.08ms for binary — a 1.04× improvement, about 4%, and it missed our own 1.2× bar for a meaningful win. The reranker alone eats roughly 93% of request time; shaving the remaining 7% barely moves the total.

Not a disappointment to hideIt sharpens the decision. Reach for low-bit indexing to solve a memory or infrastructure problem, not to make requests faster. If latency is the actual problem, look at reranker choice, rerank depth, batching, or hardware first — in our tests, sending more candidates to the reranker often cost latency without buying quality.
A structural tension, not a footnoteThe reranker is both the thing that makes compact retrieval safe to use (§6) and the thing that erases the speed win (this section). We found no configuration that kept one without the other.

9. What this means for the broader BNN program

This is evidence about compact retrieval — not evidence that a true binary neural network can replace a general language model. The broader program keeps three separate questions apart: can compact vectors store and search enterprise knowledge efficiently (yes, under these conditions); can low-bit or ternary language models handle bounded tasks more cheaply than a strong hosted model (current tests show no win on both cost and quality at once); and can a true BNN — binary weights and activations, packed-bit runtime — run an enterprise workflow safely (untested here).

A ceiling we deliberately didn't chaseA GPU-only reranker hit 0.8753 on FinanceBench against 0.7279 for the CPU-eligible arm — a 0.147 absolute gain — but at roughly 1,450–1,660× the CPU latency, on a reduced 15-query sample (disclosed because the gap is orders of magnitude and the qualitative verdict doesn't hinge on sample size, not because the sample size doesn't matter). Don't cite this brief as evidence that CPU-only retrieval is close to GPU-reranked quality. It isn't. It's evidence that CPU-only retrieval is close to CPU-only float32 quality — a narrower and more defensible claim.
Program direction, stated plainlyBinary-first, not binary-only. Reach for compact retrieval when the constraint is genuinely memory or infrastructure fit. If a deployment needs both the quality-recovery benefit and low end-to-end latency at once, this study doesn't resolve that — the reranker is the one mechanism responsible for both, and nothing here decouples them. Treat quality-recovery and latency as one coupled design problem when that's the case, not two separately tunable knobs.

10. Limits of the study

This is a careful retrieval study, not a universal proof. Latency numbers come from one vector engine (Qdrant) on an emulated four-vCPU/8GB shape — not a real cloud instance, not cross-validated on a second engine. FinanceBench has only 150 queries and uses extracted passages rather than full filings.

On the e5-base-v2 shortfall: we found a measured correlate, not a guess. Roughly 62% of its output dimensions are strongly one-signed across the corpus — about double the next-worst model tested, consistent on both corpora checked. A competing explanation (values simply collapsing toward zero) was tested directly and ruled out. That's a mechanism awaiting a fix, not an open mystery.

Two numbers worth stating without softeningInjecting ~10% noise drops nDCG@10 by about 9 points (p=0.001) on both SciFact and NFCorpus — binary doesn't degrade faster than float32 under noise, but the system as a whole is not noise-proof. And the 366 MB memory figure was, for most of the project, a theoretical projection; the first real build attempt hit an HNSW misconfiguration that made disk usage swing between 6 GB and 195+ GB before it was fixed. The number in §7 is the corrected, measured figure — cite that one, not an earlier draft's.

Before any formal submission: pin model versions, refresh the dependency lockfile, export figures in the venue's preferred format, and anonymize the repository if blind review is required.

11. Conclusion

Under the conditions actually tested — one vector engine, emulated four-vCPU/8GB hardware, the corpora in §4, and a fair pipeline on both sides — compact indexing (binary, and comparably int8) keeps a large index inside a memory budget float32 can't touch, without a measurable quality penalty on most tests. That's real, and it's scoped to what was measured. It is not yet a claim about a second engine, real cloud hardware, a bigger financial-domain set, or a fully-fixed e5-base-v2 — those stay open questions, not fine print.

The mechanism is the whole story. Quality belongs to the complete pipeline — broad retrieval, precision recheck, keyword evidence, reranking. Speed belongs to the same pipeline, and that's exactly why the gain is modest: reranking dominates the time budget, and reranking is also what makes the quality result trustworthy in the first place.

Compact retrieval is a practical way to repurpose infrastructure you already have. It's not a substitute for good ranking, good systems design, or careful evaluation — and it shouldn't be sold as one.
Reader's checklist — if you're citing this without reading it end to end
  1. Binary's real edge over int8 is a further 8× memory cut, not correctness (§7).
  2. A GPU reranker beats everything here by 0.147 absolute, at ~1,500× the CPU latency, on N=15 (§9) — a ceiling, not a deployment option.
  3. "No worse than float32 under noise" ≠ noise-proof; absolute sensitivity is ~9 points (§10).
  4. Quality-recovery and latency share a root cause (the reranker); no configuration here decoupled them (§8–9).
  5. The §3 correction cuts both ways — a good sign about process, and a reason for continued scrutiny, not relaxed scrutiny. No second independent audit has run yet.

Sources

Yamada, I., Asai, A., & Hajishirzi, H. (2021). Efficient Passage Retrieval with Hashing for Open-domain Question Answering. ACL-IJCNLP 2021. doi:10.18653/v1/2021.acl-short.123

Jégou, H., Douze, M., & Schmid, C. (2011). Product Quantization for Nearest Neighbor Search. IEEE TPAMI, 33(1), 117–128.

Karpukhin, V. et al. (2020). Dense Passage Retrieval for Open-Domain Question Answering. EMNLP 2020, 6769–6781.

Robertson, S., & Zaragoza, H. (2009). The Probabilistic Relevance Framework: BM25 and Beyond. Foundations and Trends in IR, 3(4), 333–389.

Thakur, N. et al. (2021). BEIR: A Heterogeneous Benchmark for Zero-shot Evaluation of IR Models. NeurIPS 2021.

Huerga-Pérez, J. et al. (2025). Optimization of embeddings storage for RAG systems using quantization and dimensionality reduction techniques. arXiv:2505.00105.

Reimers, N. (2024). Int8 & Binary Embeddings. Cohere blog.

Shakir, A., Reimers, N., Aarsen, T. et al. (2024). Binary and Scalar Embedding Quantization. Hugging Face blog.

Qdrant (2023). Binary Quantization — Vector Search, 40x Faster.
Changelog (v3 → v4), preserved for the record — not part of the reading experience

Every correction below was re-checked against the paperA/paperA_data archive before going in. §6 separated an unrelated embedder-vs-reranker attribution test (source of a 41/59 split wrongly cited there before) from this brief's own repair story, and added three previously-missing results: the 128-dim floor test, the four-reranker panel, and the float-format panel. §5 gave the 500K-passage scale test its own paragraph. §9/§12 disclosed N=15 behind the GPU-reranker comparison and corrected a stale figure it was quoted against (0.8607/0.7284 → 0.8753/0.7279). §10 restated the e5-base-v2 shortfall as a measured, partially-explained mechanism. New citations named the paper this study replicates (Huerga-Pérez et al.) plus three vendor sources. The debate-council cost line was moved to an appendix in v4; in this v5 readability pass it's been dropped entirely — a $0.523 internal-tooling cost note has no business in a client-facing brief, per Pawel's own review of v3, which flagged this and was only partially acted on.

>_RECONCODA
Low-Bit RAG Program · Evidence-led