Late interaction under the microscope

Multi-vectorSearch

A field guide to keeping local evidence alive, matching it precisely, and shipping it at production scale.

Amélie Chatelain, PhD Head of Training & Inference · LightOn
Amélie Chatelain · LightOn2026
Orientation

Late interaction under the microscope

Single-vector dense search uses one fixed-size embedding for the query and for each indexed unit / document.

What becomes possible when every token or patch gets a voice?

Multi-vector Search · Orientation02
The Puzzle

Why does Claude Code
use grep?

If we have strong language models and strong embedding models,
why would a frontier coding agent still reach for lexical search?

$ grep -rn "refresh_token" auth/
Multi-vector Search · The Puzzle03
The Puzzle

Grep is hard to beat, and not only for infra

The boring infra reasons
  • Zero infra: works on any machine.
  • No model to deploy.
  • No index to maintain.
  • Privacy by default.
But also: why it sticks
  • Lexical matching is extremely strong for code.
  • Granularity is non-negotiable: exact symbols, paths, functions & error strings matter.
  • Code is very formatted data, which grep can exploit.

The bar for a learned retriever: earn its keep by adding semantics without losing exact local clues.

Multi-vector Search · The Puzzle04
The Bottleneck

Single-vector search compresses every clue into one summary

  • One query can carry many independent relevance clues: protocol terms, a status code, a function name, a file path.
  • A single vector of dimension d must compress every clue into one fixed-size object.

"What's the backoff for OAuth token refreshes after a 429?"

RetryPolicy HTTP 429 refresh_token() auth/session.py
[ single vector · dim d ]

→ diluted signal

Multi-vector Search · The Bottleneck05
Capacity isn't the fix

Just increase the dimension? … well… introducing LIMIT!

LIMIT dataset construction: people times attributes relevance matrix
The construction of the dataset: can one vector encode every combination of relevance?
LIMIT toy documents: who likes Quokkas? Jon Durben likes Quokkas and Apples.

A toy dataset, yes, but also similar to product queries:
gaming monitor 27" 140Hz

On the Theoretical Limitations of Embedding-Based Retrieval · Weller et al. · ICLR 2026

Multi-vector Search · Capacity isn't the fix06
Capacity isn't the fix

Bigger vectors plateau

Recall at 2, 10, 100 versus embedding dimension: dense models improve then plateau below the lexical reference

Increasing the dimension helps… to a point. It does not change the structure of the problem.

  • Even a simple retrieval setting can expose a ceiling.
  • More capacity ≠ preserving local evidence.
  • Large d becomes impractical at corpus scale.
Multi-vector Search · Capacity isn't the fix07
Is grep all we need?

No! Exact match is a gift, but it's sparse

BM25 recall collapses when corpus words are replaced by synonyms

Vocabulary mismatch is alive and well: lexical search breaks the moment the user says auth and the code says credentials.

→ We need exact granularity and semantic matching.

Multi-vector Search · Is grep all we need?08
Capacity isn't the fix

But wait…

Same recall chart: one line, GTE-ModernColBERT, sits far above the dense models
Multi-vector Search · Capacity isn't the fix09
Escaping the ceiling

Late interaction sits in the middle

← cheaper · more scalablemore accurate · expensive →

Single-vector Retrieval

Pooled dual encoder

Late-interaction Retrieval

Multi-vector dual encoder

Full-interaction reranking

Cross-encoder

ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT · Khattab et al., 2020

Multi-vector Search · Escaping the ceiling10
The Operator

Reintroducing MaxSim

score(q, d) = Σi maxj sim(qi, dj)

For every query token, find its best-matching document token, then sum those best matches.

  • max keeps rare, high-signal evidence from being averaged away.
  • Σ rewards coverage of query evidence by the document.
MaxSim heatmap: query tokens as rows, document tokens as columns, per-row best match highlighted
MaxSim pick: max per row · illustrative similarities
Multi-vector Search · The Operator11
Roadmap

What's coming

Lexical
Search

Exact granularity

Dense
Search

Soft semantic matching

Multi-vector Search

The guide starts with two field cases:

01

Code retrieval

granularity made impossible to ignore

02

Multimodal retrieval

compression made impossible to ignore

Then the production objections: storage · latency · ecosystem.

Multi-vector Search · Roadmap12
01 FIELD CASE

Code retrieval

Multi-vector Search · Field case 113
Search is the agent's flashlight

Why is code search hard?

Before an agent can fix anything, it has to find the files and lines that matter. And code is not natural language.

  • Queries express intent in natural language, code is structured text in its own language. "Why does login expire?" → AuthSessionTTL
  • Matching must be strict and semantic at once. "retry failed job" → enqueueWithBackoff() · but HTTP_429 must match HTTP_429
  • Every repository creates an unfamiliar vocabulary. "tenant" may mean org_id; tiny distinctions such as is_admin vs was_admin can change relevance
Multi-vector Search · Field case 1 · Code14
Where late interaction sits

Exact evidence survives! and soft matching still works

Query: How to retry a rate-limited OAuth sign-in?

maxsim://oauth-retry · token-match inspector live similarity
Code snippets with per-token match highlighting against the query

Near exact-token match

Survives verbatim:
rate limited OAuth

Soft / semantic match

authenticate ↔ OAuth
retry ↔ attempt

Scoring happens token by token: we never have to choose between the two behaviors.

Multi-vector Search · Field case 1 · Code15
Benchmarks · MTEB Code

Punching above their weight class

MTEB Code: NDCG at 10 versus model size, LateOn-Code models above same-size dense models and the BM25 line
MTEB(Code, v1) · source-deck snapshot · open benchmark
  • LateOn-Code 130M and LateOn-Code-edge 17M sit well above the BM25 baseline.
  • They compare favorably with much larger dense models.
  • Public leaderboards shortlist; your repos decide.
Multi-vector Search · Field case 1 · Code16
Why does this matter in the real world?

There's more to agentic retrieval than accuracy

BrowseComp-Plus leaderboard: accuracy versus average search calls per query
BrowseComp-Plus · cyan = late interaction · purple = dense models

#1 hybrid system:
95.18% accuracy at 209 search calls / query

#2 & #3 are late interaction: near-top accuracy at ~18× fewer calls, one of them at 150M params

Multi-vector Search · Field case 1 · Code17
Translating this to code retrieval

Search quality is an agent cost lever

"Reading and searching (…) account for 56.2% of all tool-use turns, and consume 46.5% of the main agent's total tokens."

FastContext · Zhang et al., 2026

Traditional IR

Optimizes for NDCG, MRR, Recall & Precision

Agentic IR

More recall oriented, optimizes for fewer search calls

The counterintuitive point: adding a dedicated retrieval model can make the full agent cheaper.

The bet: as CPU-friendly inference and local indexing mature, and late interaction models stay competitive while small, the gap narrows for tools such as ColGrep.

Multi-vector Search · Field case 1 · Code18
02 FIELD CASE

Multimodal retrieval

Code makes exact-ish matches obvious. Visual documents make the compression problem obvious.

Multi-vector Search · Field case 219
Motivating multimodal retrieval

A picture is worth a thousand words

Sometimes, the evidence you're looking for is a clean text (code!) snippet. Sometimes it's just not.

The Garden of Earthly Delights by Hieronymus Bosch
The Garden of Earthly Delights, H. Bosch · Museo del Prado · example from Benjamin Clavié's talks
Query

"painting with a guy stuck in a mussel"

OCR + Chunking

No text.
Would require a VLM for captioning (good luck).

Multi-vector Search · Field case 2 · Multimodal20
Motivating multimodal retrieval

A picture is worth a thousand words

Sometimes, the evidence you're looking for is a clean text (code!) snippet. Sometimes it's just not.

Color-coded map of EU member states from a ViDoRe v3 document
ViDoRe v3 · Loison et al., 2026
Query

"Is there uniform interest across all EU regions in adopting Individual Learning Accounts?"

OCR + Chunking

Would only get the caption (if we're lucky).
Would require a VLM, probably fine-tuned to describe the map.

Multi-vector Search · Field case 2 · Multimodal21
Single-vector multimodal

Document Screenshot Embedding

familiar ANN pipeline one page vector compresses every region, table & text zone
Multi-vector Search · Field case 2 · Multimodal22
Going multi-vector: ColPali

From tokens to patches

Late interaction but for a page: split the image into a grid of patches, and keep one vector per patch.

ColPali: Efficient Document Retrieval with Vision Language Models · Faysse et al., 2024

Multi-vector Search · Field case 2 · Multimodal23
Interpretability

Query-to-patch matches are visualizable!

Similarly to text highlighting: when a page is a match, you can see which regions of the page match which token from the query.

Query

"Is there a rise in CDER NME submissions from 2007 to 2008?"

Evidence we hope the retriever notices: the two years, the relevant bars, and the title / legend.

CDER Orphan Drug Approvals by fiscal year bar chart page
Multi-vector Search · Field case 2 · Multimodal24
Interpretability

Query-to-patch matches are visualizable!

Query: "Is there a rise in CDER NME submissions from 2007 to 2008?" · matching the token 2008

Patch attribution for the token 2008: strongest activations along the x-axis and the 2008 label
Multi-vector Search · Field case 2 · Multimodal25
Interpretability

Query-to-patch matches are visualizable!

Query: "Is there a rise in CDER NME submissions from 2007 to 2008?" · matching the token CDER

Patch attribution for the token CDER: strongest activation on the chart title
Multi-vector Search · Field case 2 · Multimodal26
Benchmarks · but for vision retrieval!

Punching above their weight class Dominating

ViDoRe v3 top 20: nearly all entries are late interaction models
ViDoRe(v3) · source-deck snapshot · open benchmark
  • The top 20 is essentially all late interaction.
  • The few dense models that survive trail same-size late interaction by ~5 nDCG@10.
  • Visual retrieval suffers acutely in the single-vector compression bottleneck.
Multi-vector Search · Field case 2 · Multimodal27
INTERLUDE

Out-of-domain,
long context?

Multi-vector Search · Interlude28
The intuition: out-of-domain robustness

"2008" still finds the right region

Query: "Is there a rise in CDER(?) NME(?) submissions from 2007 to 2008?"

Even with unfamiliar terms in the query, the 2008 token finds its patch

Even if CDER and NME are poorly represented, another query token can still contribute a strong patch match.

A dense retriever summarizes the whole query in one vector: unfamiliar terms distort the summary, and the useful clues have no independent way to contribute.

Multi-vector Search · Interlude29
The intuition: long context

The document grows around the answer

The relevant span in a long document retains its local representation.

Single vectorAs context grows, the answer becomes a smaller fraction of the global summary.
Late interactionThe 2008 token keeps its own local vector, so the query can still reach it directly.
Multi-vector Search · Interlude30
Text retrieval

Late interaction holds up under two shifts

Held-out languages stress the query; MLDR also stresses the document with long context.

  • We trained two models: same backbone, same data recipe. One dense, one late interaction.
  • Evaluated on MIRACL (multilingual) and MLDR (multilingual + long documents).
  • On target languages, late interaction is already stronger.
  • On unseen languages, it generalizes better; on MLDR the absolute gap is bigger.
Mean lift of late interaction over dense on MIRACL and MLDR, for seen and held-out languages
LightOn multilingual DenseOn vs LateOn · lift over dense, nDCG@10
Multi-vector Search · Interlude31
Visual retrieval

The same pattern survives a new benchmark

ViDoRe v3 arrived after release: an unseen benchmark for both models.

  • Nomic trained a dense and a late interaction multimodal 3B: same backbone, same data recipe.
  • At release, ViDoRe v1 and v2 existed; on those, late interaction was already stronger (+2.9, +2.4).
  • On v3, unseen by both models, the gap widened to +11.5.
Nomic 3B dense versus ColNomic 3B multi-vector on ViDoRe v1, v2, v3: the gap widens on v3
Nomic model cards (v1, v2 · NDCG@5) · ViDoRe v3 leaderboard (NDCG@10)
Multi-vector Search · Interlude32
ONE GLOBAL REPRESENTATION CAN BE BRITTLE · LATE INTERACTION SAVES THE DAY

But why isn't
everyone using it?

Multi-vector Search · Production33
Production objections

Why late interaction isn't the default

01

The index is too big.

02

Retrieval is too slow.

03

The model ecosystem is too narrow.

In the big 2026

Which objections are still fundamental, and which are becoming engineering problems?

Multi-vector Search · Production34
01 OBJECTION

The index is too big

Multi-vector Search · Objection 1 · Storage35
Objection 1: Storage

The naive baseline

Naive storage math:
index size = tokens/doc × docs × dims × bytes

MS MARCO: ~80 tokens × ~9M passages × 128 dims × 4 B (fp32)

~369 GB

for one MS MARCO index.

Compared to single-vector, with 2,048 dims:
1 × ~9M × 2048 × 4 B (fp32) ≈ 73 GB

Three compression levers: precision, sequence length, dimensionality
Three levers to pull → · Jha et al., 2026 (poster redraw)
Multi-vector Search · Objection 1 · Storage36
Precision axis · Residual compression

Centroid ID + tiny residual per token

ColBERTv2 introduced residual compression as a key late-interaction storage technique: vector = shared centroid + low-bit residual.

A token vector decomposed into a shared centroid plus a small residual
K ~ 16 √(docs × dim) centroids, shared across the whole index
StrategyBytes / tokenMS MARCO
Naive · fp32512 B369 GB
2-bit residual36 B25.9 GB
1-bit residual20 B14.4 GB

Preserve the multi-vector shape without preserving every float: now below the 73 GB single-vector baseline.

ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction · Santhanam et al., 2022

Multi-vector Search · Objection 1 · Storage37
Precision axis · Asymmetric quantization

How far can precision go?

Precision can be asymmetric: the corpus is stored, cached, and re-scored over and over; the query is tiny and short-lived → keep the query sharp and push the document side much lower.

ConfigurationStorage / docNDCG@10Latency
fp32 q × fp32 d393 KiB90.2614.20 ms
int8 q × binary d12.28 KiB89.653.71 ms
The asymmetry

query · int8 8 bits / value
docs · binary 1 bit / value

32× smaller document vectors −97% storage per document −0.61 NDCG@10 · near lossless

Asymmetric quantization · Mixedbread, 2026

Multi-vector Search · Objection 1 · Storage38
Sequence-length axis

How many vectors is multi-vector?

Single vector
pool every token into oneN = 1 vector
In between?pool or prune
Usual late interaction
keep every token vectorN = ntokens vectors
Percentage of baseline NDCG at 10 versus keep ratio: pooling curves stay high, pruning falls
GTE-ModernColBERT-v1 · BEIR+CoIR · % of baseline nDCG@10

Pooling beats pruning.

Hierarchical / attention pooling holds ~96% of baseline NDCG@10 at just 20% of the vectors.

Similar findings for visual retrieval (bonus slides).

A Brief Comparison of Training-Free Multi-Vector Sequence Compression Methods · Jha et al., 2026

Multi-vector Search · Objection 1 · Storage39
Sequence-length axis · Train for pooling

How far can sequence length go?

Merging similar token vectors already cuts the index essentially for free. Train the model for pooling, and 5× compression becomes near-lossless.

Retention at 32 tokens per doc: 77.1 percent off the shelf versus 99.4 percent trained for pooling
LateOn · 32 tokens/doc = 5× compression · % of full-token nDCG@10
Nothing changes at query time
  • one fine-tune · the model simply learns to be easy to compress
  • one index build · pick the compression ratio at inference time
  • adaptive budgets · tokens flow from redundant docs to dense ones, free
99.4% retention at 5× compression

Same pattern in vision: after merge-aware fine-tuning, Light-ColQwen2 retains 94.6% at 49× patch compression (2% index size).

Regularizing ColBERT models for pooling · Chaffin, 2026 · pooling-aware training proposed independently by Stefan Josef in Learn to Pool

Multi-vector Search · Objection 1 · Storage40
Dimensionality axis · Matryoshka

Matryoshka for late interaction

Shrink every token vector: train the widths jointly, pick one at index time. Storage and MaxSim compute are both linear in width.

Jina-ColBERT-v2

six widths trained jointly (MRL), chosen at index time · BEIR ablation, fp16

128 d · 256 B/token baseline
96 d · 192 B/token close to baseline
64 d · 128 B/token −1.59% nDCG@10 · half the index

MM-Matryoshka · vision

The same width elasticity for vision, with encoder depth elastic too.

The crucial rule: use a width the model was trained for. Arbitrary truncation is not the same thing.

Jina-ColBERT-v2 · MM-Matryoshka

Multi-vector Search · Objection 1 · Storage41
In practice · Stack the three axes

Stack the levers, evaluate the stack

Each axis is cheap on its own, measured on its own.

Precision

2-bit residuals

nbits=2

quality-neutral, measured alone

×
Sequence length

token pooling ×2

pool_factor=2

near-free, measured alone

×
Width

Matryoshka 64 d

dim=64

small cost, measured alone

The storage savings multiply! But the quality costs may compound → be aware of it, keep the knobs explicit and evaluate on your own queries.

Multi-vector Search · Objection 1 · Storage42
02 OBJECTION

Retrieval is too slow

Multi-vector Search · Objection 2 · Speed43
Objection 2: Speed

Naive MaxSim is doomed

Exact MaxSim is the target score, not the first-stage search plan.

Multi-vector Search · Objection 2 · Speed44
Making it work

Every fast system is a funnel

Two things change on the way down: the set shrinks, the price per document rises.

The set · shrinks ↓
All documents · ~9M
Candidates · ~100k
Shortlist · ~1k
top-10
The scorer · cost per doc rises ↓
1

Candidate generation

using a cheap scoring method · cheap

2

Approximate MaxSim · prune

refine further if need be · moderate

3

Exact MaxSim

only on a much smaller number of survivors · expensive

The whole speed / quality trade-off is one question: how many documents reach exact MaxSim?

Multi-vector Search · Objection 2 · Speed45
Candidate generation

PLAID

Use compression for candidate generation: coarse first, exact only for survivors. Offline: select centroids, assign each token to its nearest one, store centroid ID + 1-2 bit/dim residual.

up to 7× on GPU · 45× on CPU lower latency than vanilla ColBERTv2, same quality

PLAID: An Efficient Engine for Late Interaction Retrieval · Santhanam et al., 2022

Multi-vector Search · Objection 2 · Speed46
Lineage

From research idea to system

A compression trick becomes a candidate generator, a fast backend, then a production API!

2021

ColBERTv2

Compressed late-interaction vectors

6-10× smaller index

via residual compression

2022

PLAID

Centroid-based candidate generation

up to 7× GPU · 45× CPU

vs vanilla ColBERTv2

2025

FastPlaid

High-performance backend

up to +554% QPS

vs PLAID · Rust, GPU

2025

NextPlaid

Production API + CRUD support

add / delete / filter

REST API · CPU-first

Two knobs make the trade-off visible: n_ivf_probe widens candidate generation · n_full_scores spends more exact MaxSim.

Multi-vector Search · Objection 2 · Speed47
Dense-ANN route

Another route: MUVERA

Make candidate generation look like dense ANN, then keep late interaction for the rerank.

+10% recall · −90% latency
FDE(Q) · FDE(D) Chamfer(Q, D) = Σq∈Q maxd∈D q · d A single dot product approximates multi-vector similarity, with provable ε-guarantees.

MUVERA: Multi-Vector Retrieval via Fixed Dimensional Encodings · Jayaram et al., 2024

Multi-vector Search · Objection 2 · Speed48
Candidate generation

Sparse route: back to the inverted index

Three 2026 efforts plug token vectors into the classic posting-list workhorse!

Token vectors

from your late
interaction model

Random anchors · SMVE Plain-text SAE · Latent terms Retrieval SAE · SSR

Inverted index

"refresh" → doc 3 · doc 8 · doc 21
"oauth"   → doc 1 · doc 8
"429"     → doc 8 · doc 13

Candidates

cheap, from mature
sparse infrastructure

MaxSim
Rerank

SMVE

Post hoc: random anchors turn the token set into one sparse sketch.

Latent terms

A plain-text sparse autoencoder exposes a vocabulary for BM25-style indexing.

SSR

A retrieval-trained SAE keeps sparse MaxSim in neuron space.

Multi-vector Search · Objection 2 · Speed49
How fast is fast?

Late interaction now reaches tens of milliseconds

← fasterslower →

Frontier overlap

single digits → tens

Modern multi-vector

tens of milliseconds

Older / heavier

hundreds of milliseconds
What changed

Centroid pruning, sparse coding, optimized kernels and hierarchical indexes can now put late interaction in an interactive latency regime.

Do not make a fake leaderboard

Hardware, corpus size, recall target, candidate depth and batching all differ. Compare latency within a paper, not across papers.

Representative territories, not normalized measurements · each method name links to its paper or implementation

Multi-vector Search · Objection 2 · Speed50
03 OBJECTION

The ecosystem is too narrow

Multi-vector Search · Objection 3 · Ecosystem51
Objection 3: Ecosystem

The model zoo is expanding

From "there are no models" to "which model fits my constraints?"

Multi-vector Search · Objection 3 · Ecosystem52
Tooling

Familiar tools for late interaction

~/retrieval/awesome_lateinteraction.py PyLate · Python
from sentence_transformers import SentenceTransformer, evaluation as st
from pylate import models, evaluation as pl

dense = SentenceTransformer("lightonai/DenseOn")
dense_evaluator = st.NanoBEIREvaluator(dataset_names=["SciFact"])
dense_results = dense_evaluator(dense)

late = models.ColBERT("lightonai/LateOn")
late_evaluator = pl.NanoBEIREvaluator(dataset_names=["SciFact"])
late_results = late_evaluator(late)

Sentence-Transformers made dense retrievers' training & evaluation easy.
PyLate plays that role for late interaction!

  • familiar model interface
  • training & evaluation
  • indexing tools

PyLate: Flexible Training and Retrieval for Late Interaction Models · Chaffin & Sourty, 2025

Multi-vector Search · Objection 3 · Ecosystem53
The practical take

Shortlist on MTEB, then verify on your data

Public numbers shortlist; your queries decide. The good news: late interaction models generalize better!

BEIR nDCG@10 vs decontaminated BEIR · rank movement, not score movement
  • We decontaminated BEIR: removed samples found in large retrieval training sets.
  • Ranks move, sometimes a lot, though the models did not change.
  • Late interaction models consistently move up when contamination is removed.
Multi-vector Search · Objection 3 · Ecosystem54
The practical take, part 2: if you already use a vector DB

What does "multi-vector support" actually mean?

Questions to ask your vendor
  • Is MaxSim first-stage retrieval, or second-stage reranking only?
  • If first-stage: what is approximate, and when is exact scoring recovered?
  • How do updates interact with compression?
  • How was the published quality / latency point measured?

Most Vector DB vendors nowadays have late interaction support! But the phrase hides very different implementations.

The message of the last three sections

In 2026 multi-vector search is production-usable: the compression and speed methods you just saw are real, and the main vendors already ship many of them. What stays yours is the trade-off: quality vs storage vs latency vs freshness. Now you know what to look for.

Multi-vector Search · Objection 3 · Ecosystem55
Wrapping up

What we covered

01

The bottleneck

One vector is the wrong shape for many relevance clues.

02

MaxSim & late interaction

Keep token / patch vectors; match locally at query time.

03

Two field cases

Code and visual documents: granularity and compression.

04

Production

Storage, speed, models & tooling.

Across text, code, languages and visual documents, late interaction repeatedly beats single-vector dense retrieval. The question now is how to deploy that quality edge efficiently.

Multi-vector Search · Wrapping up56

Field guide / complete

Thankyou.

Keep the evidence local.

Take one retrieval problem you already own, run the comparison, and let the numbers decide.

Amélie Chatelain, PhDLightOn · @AmelieTabatta
Try it on your data
QR code: LightOn Console

Put late interaction to work.Scan for the LightOn Console, or use the resources below. Explore LightOn ↗

Resources to follow the field
Awesome Multivector Retrievalgithub.com/tusKANNy · papers, models & tools
Multi-vector Search · A Late Interaction Field Guide58
Deep dive · Motivating multimodal retrieval

A picture is worth a thousand words

Sometimes, the evidence you're looking for is a clean text (code!) snippet. Sometimes it's just not.

CDER Orphan Drug Approvals by fiscal year, stacked bar chart
Query

"Is there a rise in CDER NME submissions from 2007 to 2008?"

OCR + Chunking

Would require approximating each value in each bar…

Deep dive · Multimodal retrieval60
Deep dive · Field case 2: Multimodal

A picture is worth a thousand words

Sometimes, the evidence you're looking for is a clean text (code!) snippet. Sometimes it's just not.

Manual page with a grid of hose installation diagrams
Query

"number of hose installation diagrams · pressure systems manual"

OCR + Chunking

Without layout detection, would be much harder.

Deep dive · Multimodal retrieval61
Deep dive · Late interaction dominates multimodal retrieval

Page-level compression is a pressure point

Our own experiments. Teasing a future release!

Average nDCG at 10 versus backbone parameters: the late interaction curve sits well above the dense curve
Qwen3.5-VL backbone · same 8 ViDoRe v3 tasks · descriptive log-linear fits, 0.8B-4B
Deep dive · Multimodal retrieval62
Deep dive · Sequence compression: text & code

Spend the vector budget where evidence lives

On code, token merging still beats token pruning at every equal budget.

LateOn-Code on CoIR: pooling curves hold above pruning at equal keep ratios
LateOn-Code · CoIR · % of baseline nDCG@10
LateOn-Code on CoIR

Hierarchical pooling holds ~91% of baseline NDCG@10 at just 20% of the vectors. Attention pooling falls to 2nd best.

The best pooling method varies by domain: the operational rule beats the method name. Experiment, and always measure.

A Brief Comparison of Training-Free Multi-Vector Sequence Compression Methods · Jha et al., 2026

Deep dive · Storage63
Deep dive · Sequence compression: vision

Merging beats deleting patches

In vision, sequence length becomes patch count. Again, deleting patches is brittle; merging similar patches keeps every region represented.

Retrieval quality retained versus patch vectors kept: merging holds 97.5 percent at 11 percent kept
Semantic clustering · ColQwen2 · ViDoRe (v1) · % of baseline nDCG@5

92.6%

merging @ 4% kept

97.5%

merging @ 11% kept

Query-agnostic deletion can remove the one patch a future query needs.

Towards Storage-Efficient Visual Document Retrieval: Reducing Patch-Level Embeddings · Ma et al., 2025

Deep dive · Storage64
Deep dive · The catch: random projections

Post-hoc approaches aren't perfect, but we're getting there

Plug a recent model into MUVERA or SMVE and quality can collapse when geometry isn't friendly. But the fix already exists!

Full MaxSim (no shortcut, the target)

55.3

nDCG@10, exact scoring everywhere: the quality ceiling

MUVERA / SMVE w/ off-the-shelf model

15.9

the index builds fine, retrieval quality collapses!

The fix: a model trained for the index

53.0

LateOn-regularized, within 3 points of exact

What this means in practice

Some methods may seem too good to be true, and they aren't, to some extent! But they can be trained for.

Keep in mind if relying on a vendor who claims their preferred method works out-of-the-box for any model.

Party is over: regularizing ColBERT models to fix efficient ANN methods · Chaffin, 2026

Deep dive · Speed65
Deep dive · Objection 2.5

My index is not static

Efficient late-interaction retrieval gets harder when the corpus changes.

01

Write amplification

One document means many vectors; every insert, update, and delete costs more.

02

Assignment staleness

New tokens may still be assigned to old centroids or codebooks.

03

Quality drift

Monitor recall and assignment error; rebuild when thresholds cross.

Newdocument Index size< 1,000? Full rebuild Assign to nearestcentroid document is always retrievable Distance< threshold? Done Add to bufferassignment keptmeanwhile Buffer< 100 docs? Wait Recluster & expandnew centroids jointhe codebook YES YES YES NO NO NO

The practical pattern: write fast, search the buffer immediately, and rebuild deliberately. Systems such as NextPlaid make this lifecycle explicit.

Deep dive · Operations66
DEEP DIVE1 / 64
Rotate your device for the intended 16:9 reading experience.