Cross-Encoders and the Reranking Cascade
A dual encoder's separable score has a rank-d ceiling, and a learned bilinear q⊤Wd does not escape it — S = QWG⊤ is still rank at most d. Only a nonlinear joint encoder h([q;d]) breaks the wall, at a cost that forbids it from ever being the first stage. So the cross-encoder becomes a reranker: retrieve K cheaply, rescore K expensively. An oracle rerank is recall-monotone and pinches recall@1 to the candidate pool's recall@K, but a lossy cross-encoder can dip below the first stage by being confidently wrong
Overview & motivation
Dense retrieval ended on a debt. Its whole architecture rested on separability — a dual encoder scores , query and document meeting in a single inner product — and three times over the topic named the thing separability forbids. It promised that “the cross-encoder that this topic kept invoking as the rank-free, un-precomputable counterpoint becomes the reranker in a retrieve-then-rerank cascade,” and deferred how that extra power is spent to “a later topic.” The embedding-dimension lower bound sharpened the debt into an impossibility — the single-vector wall it proved is one “cross-encoders … pay a quadratic cost to fuse query and document and so are not factorizations at all” route around. And late interaction set the cross-encoder as the far pole of the expressivity axis: where ColBERT keeps matching cheap with a sum of token dot products, “a cross-encoder pays a full joint forward pass for the most expressive score of all.” This is that topic. We pay the debt, and we charge it.
A cross-encoder scores a fused pair, , letting query and document attend to each other at every layer rather than meeting once at the end. The first result is the one that explains why this matters at all, and it is more subtle than “more layers, more power.” A learned bilinear scorer — a dual encoder with a trained similarity metric bolted on — does not escape the rank ceiling, because is still a product through a -dimensional bottleneck. The escape is not the interaction matrix. It is the nonlinearity. Only a genuinely nonlinear joint scorer has no rank to bound, and that is exactly what lifts the cross-encoder out of the sign-rank wall.
That expressivity is bought with a forward pass per pair, which forbids precomputation and rules the cross-encoder out as a first stage. So it becomes a reranker: a cheap dual encoder retrieves a candidate pool of documents, the cross-encoder rescores only those . Two facts govern the cascade. The recall pinch says an oracle rerank of the top- makes recall@1 equal the pool’s recall@ — it can lift the first stage, but never past what the first stage retrieved. And monotonicity: an oracle reranker only improves as grows, but a lossy one can dip below the first stage by being confidently wrong, and more over-fetch can make the dip worse.
The target is the signed-identity relevance pattern — full rank 6, with singular values 4, 2, 2, 2, 2, 2. A dual encoder can only realize a rank-≤d matrix, and a learned bilinear q⊤Wd does not escape that: S = QWG⊤ = (QW)G⊤ is still a product through a d-dimensional bottleneck, so its best is the same truncated-SVD ceiling (the blue line). Only the nonlinear cross-encoder h([q;d]), which scores the fused pair rather than a factorization, reconstructs the target at every d — it has no rank to bound. This is the escape from the sign-rank wall the embedding-dimension topic proved; the cross-encoder is, as that topic put it, not a factorization at all.
The first panel is the rank ceiling: on a full-rank target the dual encoder and the learned bilinear share one descending error curve — both capped at rank — while the nonlinear cross-encoder sits flat near zero, with no embedding budget at all. The second is the cascade frontier: an oracle rerank tracing the pool’s recall@ against the cost , with the brute corpus-scan cost a flat line far above. The third is when reranking hurts: a quality slider that fixes hard negatives at one end and breaks true top-1s at the other.
The cross-encoder and the cascade
Fix a query and a corpus . A dual encoder, as the previous topic established, scores by a separable inner product and so realizes only relevance matrices of bounded rank. We define its expressive opposite and the structure that makes it deployable.
Definition 1 (Cross-encoder and reranking cascade).
A cross-encoder is a map that scores a fused pair, , with no requirement that the score factor through separate query and document representations. A retrieve-then-rerank cascade is the two-stage pipeline: a cheap first stage (here a dual encoder) returns the top- documents by its own score , and the cross-encoder rescores only that pool, returning . The first stage’s job is recall (keep the gold document in the pool); the reranker’s is precision (surface it within the pool).
The two stages are not interchangeable. The first stage must be precomputable to run over the whole corpus, so it must be a factorization; the reranker need only run over documents, so it can afford to fuse. We take to be the dual encoder of the previous topic and ask, in order: how much more can a fused scorer express, what does the cascade buy, and how can it fail.
Movement 1 — joint encoding breaks the rank ceiling, and the nonlinearity is why
The previous topic proved that a dual encoder’s score matrix has , and that a target relevance matrix is realizable exactly if and only if its rank is at most . The natural first guess at escaping this ceiling is to keep the two towers but let them interact through a learned matrix — a bilinear score , a trained Mahalanobis similarity. The first result is that this guess fails completely.
Proposition 1 (A learned bilinear stays rank-bounded).
Let and stack query and document embeddings, and let be any learned interaction matrix. The bilinear score matrix satisfies — the same ceiling as the plain dual encoder. Moreover the best bilinear realization of any target equals the best plain dual encoder’s: both are the truncated SVD.
Proof (Proof).
Absorb into the query tower: , a product of an matrix with an matrix, so . The learned bilinear is literally a dual encoder with reparametrized query embeddings — the interaction matrix changes the embeddings, not the realizable set. For the second claim, the set of matrices expressible as over all is exactly : taking , the top- singular vectors of a target and its top- singular values gives , the truncated SVD, which Eckart–Young makes the optimal rank- approximation. No bilinear can do better, and no plain dual encoder does worse.
∎This is the pedagogical hinge of the topic. Adding a learned similarity metric to a pair of frozen encoders feels like buying expressivity; it buys none. Whatever escapes the rank ceiling, it is not the interaction term — it is leaving the bilinear family altogether. A fused, nonlinear scorer does exactly that.
Theorem 1 (A joint scorer has no rank ceiling).
For any target relevance matrix there exists a cross-encoder with for all , regardless of . The realizable set of a fused scorer is every score table, unbounded in rank.
Proof (Proof).
A cross-encoder reads the pair jointly, so it can in principle assign each pair an independent value; the function that maps the pair to is well-defined for any . There is no factorization to bottleneck the rank, because there is no factorization at all — this is the sense in which, as the embedding-dimension topic put it, a cross-encoder is not a factorization.
∎The theorem is, by itself, almost trivial: a lookup table realizes any matrix. Its force is the contrast with Proposition 1 and the constructive demonstration the laboratory makes. We take the signed-identity target — full rank , on the diagonal and off it, the cleanest full-rank pattern that topic studied — and reconstruct it three ways as grows. The rank- ceiling (the best dual encoder, which is also the best learned bilinear) has relative reconstruction error that descends from at only to at , plateauing strictly above zero for every . A finite nonlinear cross-encoder — a random-ReLU-feature map on the fused pair with a closed-form ridge readout, our deterministic stand-in for — reconstructs the target to machine precision at every , including , and its realized score matrix has full rank . The cross-encoder has no embedding budget to spend; it does not factorize, so there is nothing to bound. (That this finite net realizes the pattern is demonstrated: universal approximation guarantees a realizing network exists only asymptotically, and our scorer is a seeded surrogate, not a trained transformer — the load-bearing caveat below.)
The same expressivity shows on the finance geometry. Fit the cross-encoder on the corpus’s query–document pairs and it realizes the relevance exactly — recall@1 — separating the same-sector companies a rank-3 dual encoder ( recall@1) confuses. The cross-encoder can resolve hard negatives a single embedding cannot. The catch is that it cannot do so cheaply.
Movement 2 — the retrieve-then-rerank cascade and the recall pinch
A cross-encoder must run a joint forward pass for every pair it scores, and it cannot precompute anything, so scoring the whole corpus costs forward passes per query — exactly the cost the dual encoder was built to avoid. The cascade resolves the tension by spending that cost only on a small pool: retrieve candidates cheaply, rescore expensively.
Proposition 2 (The cascade cost law).
Let the first stage cost per query (one encode plus a MIPS lookup) and let each cross-encoder forward pass cost . Reranking the top- pool costs
so the cross-encoder’s per-query work is constant in the corpus size, set by the over-fetch depth rather than . The over-fetch needed to keep the gold in the pool with retention recall@ is the imported factor .
The cost is exact arithmetic; the question is how large must be. That is where the cascade’s defining identity lives. Because the reranker only ever sees the pool, its ceiling is set entirely by what the first stage retrieved.
Theorem 2 (The recall pinch).
Under a known-item qrel — one gold document per query — let an oracle reranker (one that ranks the gold first whenever it is present) rescore the first stage’s top- pool. Then
The oracle lifts recall@1 from the first stage’s own recall@1 up to its recall@, and caps it there exactly.
Proof (Proof).
The oracle ranks first among any pool that contains it, by definition. So the post-rerank top-1 is if and only if . Averaging the indicator over queries,
the middle expression being precisely recall@ with .
∎The pinch is the whole logic of over-fetch in one line. The reranker’s reach is the pool’s recall@, so you fetch deep enough that recall@ saturates, then rerank. On the finance toy the rank-3 first stage has recall@1 but recall@3 — it confuses companies at the very top but keeps the gold within the top three — so reranking a pool of lifts recall@1 all the way to . The laboratory’s second panel draws the oracle curve tracing the pool’s recall@ exactly, with the cost climbing as against the brute corpus-scan line orders of magnitude above: the knee where recall@ saturates is where you stop. One corollary is worth stating, because it is the reason the first stage’s recall is the cascade’s true bottleneck.
Corollary 1 (The cascade ceiling).
For any reranker — oracle or lossy — . A reranker can only reorder the pool; it can never recover a gold document the first stage dropped.
Under the known-item qrel the recall pinch is an exact identity; with several relevant documents per query the oracle can surface only one at rank 1, and the identity weakens to the inequality of the corollary. We ship the topic on the known-item qrel, where the equality holds and recall@1 is the natural reranking accuracy.
Movement 3 — monotonicity, and when reranking hurts
The recall pinch is about a perfect reranker. Two facts separate the perfect case from the real one. The first is reassuring.
Theorem 3 (Oracle rerank is recall-monotone in K).
An oracle reranker’s recall@1 is non-decreasing in the over-fetch depth : deepening the pool never lowers accuracy.
Proof (Proof).
The top- pool is a superset of the top- pool, . If the gold was in it is still in , and the oracle still ranks it first; the only new event a larger pool admits is entering the pool, which can only turn a miss into a hit. So .
∎This is the same superset argument the multi-vector ANN topic used for an exact rerank over a pruned survivor set, and it holds for exactly the same reason — but, exactly as there, only for an exact reranker. A real cross-encoder is not exact, and the second fact is the warning.
Remark (A lossy cross-encoder can dip below the first stage).
A reranker that is confidently wrong — that assigns a same-sector distractor a higher score than the true document — breaks queries the first stage got right, dropping recall@1 below the first stage’s own. And because more over-fetch hands such a reranker more chances to err, the dip can deepen as grows: the anti-monotone direction, the sharpest possible contrast to the oracle’s guarantee.
The laboratory’s third panel makes this a slider. Model the reranker quality by a corruption level added to the oracle’s scores; at it is the oracle and fixes all seven same-sector hard negatives the first stage missed, a net recall@1 lift of . As grows the buckets shift — fixed falls, broke rises — and the net lift turns negative; a constructed worst-case promoter that always elevates a same-sector distractor breaks every recoverable query. The dip is not a bug in the model. It is the score-versus-ranking gap made operational: a high cross-encoder score on the wrong document is a wrong ranking, and no amount of over-fetch protects against it. This is why a production stack keeps an exact scorer as ground truth and why the monotonicity guarantee is the oracle’s alone.
Remark (Expressivity is paid for in samples).
The capacity that lets the cross-encoder realize any relevance table is exactly the capacity that overfits a small training set. A fused scorer is a high-complexity hypothesis class; by the VC-dimension and generalization-bound machinery of learning theory, more expressive scorers need more labeled pairs to close the generalization gap. The dual encoder’s separable inner product is a strong inductive bias — a low-complexity restriction that generalizes from fewer examples and wins below a crossover sample size. We state this rather than simulate it: the expressivity our laboratory measures is realized on the full relevance, where train and test coincide, and the sample-complexity story belongs to a learning-curve protocol this topic does not run.
Proposition 3 (What the laboratory measures).
Every number in the three panels is owned by a tested notebook and asserted by the harness: the rank-ceiling reconstruction errors (the ceiling positive for rank, the cross-encoder near zero at every ); the recall pinch (oracle rerank recall@1 equal to the first stage’s recall@ to floating point at every ); oracle monotonicity in ; the lossy dip below the first stage and its deepening with ; and the collapse anchors — reranking the whole corpus () equals the brute-force argmax, and the interpolating cross-encoder matches the imported oracle. The laboratory recomputes only closed forms in the browser: the cost arithmetic and its speedup, and the net lift from the bucket counts.
Honest accounting
Where this sits
The cross-encoder closes the expressivity ladder the dense track climbed — single vector, multi-vector late interaction, fused joint scorer — and opens the reranking sub-track. Its cost is the lever the next topics pull. Knowledge distillation for retrieval uses the cross-encoder as a teacher: its margins supervise a cheap student dual encoder, so the expressive scorer’s judgments are compressed back into a precomputable first stage — the MarginMSE recipe, the practical answer to “the reranker is too slow to run everywhere.” Listwise LLM rerankers push the joint-scoring idea further, scoring a whole candidate list in one context rather than one pair at a time, trading the cross-encoder’s pairwise forward passes for a single sequence model that reasons over the pool. And hard-negative mining is the training-side counterpart of the hard negatives this topic’s reranker exists to resolve: the same same-sector confusions that the cross-encoder fixes at inference are the negatives a first stage should be trained against. Each is named here and developed in its own topic; the cross-encoder is the architecture they all take as given.
Connections
- The direct prerequisite and the promise this topic keeps: that topic established separability implies precomputability implies MIPS and kept invoking the cross-encoder as the rank-free, un-precomputable counterpoint whose power is spent in a retrieve-then-rerank cascade, 'the subject of a later topic.' This is that topic: we take its dual encoder as the cheap first stage, show its separable score is exactly what the cross-encoder gives up, and reuse its finance relevance matrix and same-sector hard-negative geometry as the pool the reranker rescores dense-retrieval-dual-encoders
- That topic proved the single-vector sign-rank ceiling and named cross-encoders as 'not factorizations at all'; this topic makes the escape precise. A learned bilinear score is still a factorization — S = QWG-transpose has rank at most d — so it inherits the same wall, and only the nonlinear joint encoder h([q;d]) has no rank to bound. We reuse that topic's signed-identity construction as the full-rank target the dual and bilinear models plateau on while the cross-encoder reconstructs it, so the cross-encoder is the architectural answer to the impossibility it proved embedding-dimension-lower-bounds
- Late interaction and the cross-encoder are the two branches off the single-vector ceiling that topic and DPR both flagged: late interaction keeps matching cheap by deferring it to a sum of token MaxSim dot products, while the cross-encoder pays a full joint forward pass for the most expressive score of all. This topic develops the second branch, so the two are the cheap-many-vectors and the expensive-fused answers to the same rank wall — and in a production stack the late-interaction or sparse legs can generate the candidate pool the cross-encoder reranks late-interaction-learned-sparse
- The evaluation root that defined recall@K and the ranked-list metrics the cascade is scored by: the recall pinch — that an oracle rerank of the top-K makes recall@1 equal the pool's recall@K — is a statement in exactly that topic's recall vocabulary, and the confident-wrong dip is a drop in recall@1 measured against its definitions, so this topic reads the cascade through the metrics that topic formalized set-metrics-precision-recall-map-mrr
- PLAID's cascade ends in an exact-MaxSim rerank over a pruned survivor set; this topic's cross-encoder is the next, more expressive rerank stage over a candidate pool, and both share the retrieve-then-rerank superset structure whose extreme setting — rerank everything — recovers the brute-force ground truth. The recall-monotone-in-prune-depth fact proved there for an exact rerank is the same monotonicity this topic proves for an oracle cross-encoder rerank in K multi-vector-ann-retrieval
- InfoNCE trains the cross-encoder reranker exactly as it trains the dual encoder — a softmax over a positive against in-batch or mined negatives — but now the score is the fused h([q;d]) rather than a separable inner product, so the same contrastive loss optimizes a strictly more expressive function. This topic inherits that framing, and the cross-encoder's job is precisely to separate the hard negatives the contrastive objective most wants distinguished infonce-contrastive-objective
- The capstone composes candidate generation, fusion, and rerank into one pipeline and treats an exact scorer as the ground-truth top-k; this topic supplies the reranking stage of that cascade and the honest reason the capstone keeps an exact oracle as truth — a real cross-encoder is lossy and can be confidently wrong, so the pipeline's recall is measured against the oracle the reranker only approximates. The over-fetch law this topic uses for the cost model is imported from that capstone capstone-multimodal-financial-rag
References & Further Reading
- paper Passage Re-ranking with BERT — Nogueira & Cho (2019) The first BERT cross-encoder reranker: a joint forward pass over [query ; passage] scoring relevance, run over the top candidates of a cheap first stage — the un-precomputable, most-expressive counterpoint to the dual encoder this topic builds on
- paper Multi-Stage Document Ranking with BERT — Nogueira, Yang, Cho & Lin (2019) monoBERT/duoBERT: the retrieve-then-rerank cascade with a BERT cross-encoder rescoring the top-K candidates from a cheap first stage — the architecture this topic formalizes, and the source of the K-candidate cost framing
- paper A Cascade Ranking Model for Efficient Ranked Retrieval — Wang, Lin & Metzler (2011) The cascade-ranking model the reranking stage instantiates: a sequence of increasingly expensive stages, each pruning candidates for the next, with end-to-end recall and cost the composition of the per-stage trade-offs; the recall pinch and the over-fetch law are this model specialized to one rerank stage; SIGIR 2011
- paper Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks — Reimers & Gurevych (2019) Makes the bi-encoder versus cross-encoder distinction explicit: a cross-encoder jointly encodes each pair for a more expressive but un-precomputable score, the separability-versus-expressivity trade this topic prices; the DOI resolves to the ACL Anthology EMNLP 2019
- paper On the Theoretical Limitations of Embedding-Based Retrieval — Weller, Boratko, Naim & Lee (2025) The sign-rank ceiling on single-vector dot-product retrieval that the nonlinear cross-encoder escapes, with the multi-vector and fused-scorer escapes named as outside the single-vector bound — the wall Movement 1 routes around
- documentation Sentence-Transformers: Cross-Encoders — Reimers et al. (2024) The production reference for cross-encoder reranking over a bi-encoder's top-K retrieval, the concrete retrieve-then-rerank recipe the finance case study instantiates