All articles
AI EngineeringBy Petru Popa · 5 min read

One NDCG Point for Twelve Times the Index

Sentence Transformers 6.0 makes multi vector embeddings a first-class model type. The release notes price the upgrade the announcement leaves as an approximate.

Sentence Transformers 6.0.0 went up on PyPI on 18 August 2026, and its headline is a fourth model type: MultiVectorEncoder, sitting alongside SentenceTransformer, CrossEncoder and SparseEncoder. It keeps one vector per token rather than compressing a passage to one vector, and scores a query against a document with MaxSim — each query token takes its best match among the document tokens, and those maxima are summed.

The claim attached to it is small, and the comparison behind it is controlled. Both facts matter.

What the benchmark actually compares

The comparison is LateOn against DenseOn: identical 149M-parameter ModernBERT backbones, trained on the same data, differing only in whether they keep a vector per token or collapse to one per document. LateOn stores 128 dimensions per token; DenseOn stores 768 per passage.

Across the 13 NanoBEIR datasets, LateOn averaged 0.6868 mean NDCG@10 against DenseOn's 0.6764. On the full 15-dataset BEIR run, 57.22 against 56.20. Gaps of 0.0104 and 1.02 — the same margin twice, once the two scales are matched.

Holding the backbone, the parameter count and the training data fixed is the part worth crediting. Change the architecture and the training recipe at the same time and any delta belongs to both; here the only variable left is the one under test. That is what makes the one-point margin believable, and one point is what the controlled version produced.

What multi vector embeddings cost to store

The announcement calls the index roughly 42x denser and moves on. The release notes give the measurement.

Encoding 4,874 Natural Questions passages with LateOn produced 608,414 token vectors at 128 dimensions: a 311.5 MB float32 index, against 7.5 MB for the dense model on the same corpus. That is about 125 token vectors and 64 KB per passage.

Both compression paths are measured too. Hierarchical token pooling at factor 3 cuts the corpus to 204,407 vectors and 104.7 MB. PLAID quantization brings the same vectors to 88 MB. So the honest multiplier for a tuned deployment is not 42x, it is closer to 12x — 88 MB against 7.5 MB — and about 18 KB per passage.

At a million passages that is the difference between a 1.5 GB index and an 18 GB one. That gap does not show up on a prototype corpus of a few thousand passages, which is why the production phase needs its own budget line rather than being treated as tuning after the demo works.

Where the margin flips

Nine of the 13 NanoBEIR datasets went to LateOn. Four went to DenseOn: ArguAna, FiQA2018, SCIDOCS and SciFact.

That is the boundary condition, and it is not a rounding artifact. Each NanoBEIR dataset holds 50 queries against up to 10,000 documents, so the entire one-point mean rests on 650 queries — and on four of the 13 slices, keeping every token bought nothing.

Here is the falsifiable version. I expect the one-point margin to be a property of the benchmark's query mix rather than of late interaction itself: on a corpus whose queries look like argument retrieval or scientific citation matching, a token-per-vector index will not beat a dense one, and you will have paid 12x the storage for a wash. What would show this wrong is straightforward — build a few hundred labelled queries from your own traffic, run both checkpoints, and if late interaction wins by about a point there too, the margin generalises and this reading was too narrow.

The knob the announcement does not point at

The write-up presents the tradeoff as quality against storage, with the storage side reported as a single multiplier. The pretrained model table shows that side is not fixed, and this is the thing worth taking away from the release.

Storage per token is set by the embedding dimensionality, and the listed checkpoints do not agree on it. mixedbread-ai/mxbai-edge-colbert-v0-17m is 17M parameters at 48 dimensions and scores 0.6407. colbert-ir/colbertv2.0, the checkpoint published under the ColBERT project's own org, is 110M parameters at 128 dimensions and scores 0.6053. A model storing 48 numbers per token outscores it while using 2.7x less space per vector.

So the storage multiplier is a choice made at checkpoint selection, not a property you inherit. The 42x figure describes one 128-dimensional model on one corpus.

One more thing the release notes resolve that the post does not raise: MaxSim accumulation now happens in float32. Plain bfloat16 retrieval quality moved from 95.0% of fp32 to 99.0%. If you evaluated late interaction in half precision before this release and it underperformed, some of what you measured was the accumulation precision rather than the method.

What to do this quarter

  1. Price the index before running the benchmark. Multiply your passage count by about 125 token vectors, then by your chosen dimensionality times 4 bytes. If the uncompressed answer exceeds your memory budget, plan the PLAID path — roughly 18 KB per passage — from the start rather than as a later optimisation.
  2. Read the dimensionality column, not the parameter count. A 48-dimensional checkpoint and a 128-dimensional one differ by 2.7x in index size before any compression.
  3. Do not adopt on 650 queries. Assemble a few hundred labelled queries from your own traffic; if your workload resembles the four datasets DenseOn won, stay dense.
  4. Budget the upgrade separately. Version 6.0.0 raises the transformers floor from 4.41.0 to 5.0.0 and torch from 1.11.0 to 2.2. That is a dependency migration wearing a retrieval feature as a hat.

If your retrieval is losing on ambiguous multi-requirement queries, this release makes the experiment cheap to run and cheap to reverse. If it is losing on chunking or on stale documents, one NDCG point will not find it, and 18 GB of index will not either.

Ready to start?

Turn this into a plan for your team.

One week, fixed fee: a working session with your team, a prioritized use-case backlog, and an ROI model for the opportunities worth chasing.

Book an AI Opportunity Sprint