CIKM 2026 · Rome · full paper, oral

The Recall Ceiling of LLM Recommendation Reranking

Proceedings of the 35th ACM International Conference on Information and Knowledge Management (CIKM ’26), November 7–11, 2026 · DOI 10.1145/3799682.3841132

92–95%
by which oracle evaluation overstates LLM reranking, in NDCG@10, on three Amazon datasets
2–19%
Recall@100 that realistic retrieval actually achieves, across eight datasets in three domains
≤16%
of its own ceiling that any reranker we tested exploits — a second, independent failure

Some LLM recommendation rerankers are evaluated under an oracle protocol that guarantees the ground-truth item is in the scored set. That protocol measures something real. It does not measure deployment performance, because the quantity it holds fixed is the one that binds in production.

Under realistic retrieval, none of the seventeen optimisation strategies tested here — prompt design, a 168× model-scaling range, test-time reasoning, three supervised rerankers under a disjoint train/eval split, a LoRA-fine-tuned LLaMA-3B, score-aware prompting, LLM+CF fusion, sequential models, larger candidate budgets, hybrid text retrieval — produces a statistically significant gain over a $0.00 collaborative-filtering baseline on the primary Amazon datasets.

The cause is combinatorial, not a modelling failure, and it can be written down.

Theorem 1

What a reranker cannot do

A reranker that outputs a permutation of a retrieved candidate set can never place an item the retriever missed.

Recall ceiling — LOO specialisation (Corollary 1)
𝔼[NDCG@k]  ≤  Recall@|Wπ|

For any closed-candidate reranker π with reranking window Wπ, under leave-one-out evaluation. The general form covers every top-k metric with a non-increasing positional discount — NDCG, Hit, MAP, Recall, RBP, ERR — through a single rearrangement-inequality argument rather than a per-metric case analysis.

Two consequences do the work. First, the bound is numerical: on Amazon Movies, where CF-SVD reaches Recall@100 = 2.95%, no closed-candidate reranker can exceed NDCG@10 = 0.0295 — zero-shot LLM, fine-tuned model, or a perfect oracle over the retrieved set. Second, the binding quantity is |Wπ|, not K: a listwise LLM prompt shown 30 of the 100 candidates is accountable to Recall@30, not Recall@100. Scoring it against the wrong denominator understates its ceiling utilisation by about 2.6×.

We claim no surprise in the statement — that a reranker cannot recover an unretrieved item is intuitive. What the formalisation buys is the exact number a measured NDCG must be read against, and the utilisation ratio η that separates a retrieval failure from a reranking failure.

Panel A: the two-stage pipeline, with the recall ceiling bounding the reranker. Panel B: injection-oracle, closed-candidate bound, and realistic NDCG@10 on Beauty, Movies and Electronics, showing gaps of 92.4%, 93.6% and 94.9%. Panel C: ceiling utilisation for nine rerankers on Beauty, all at or below 15.7% against an oracle's 100%.
Figure 1. The ceiling, the gap, and the double failure. (B) The oracle column is not merely optimistic — it sits above the closed-candidate bound itself, because injecting the positive hands the reranker 100% recall. (C) Every method, from a 4B model to a 671B model to three supervised rerankers, exploits under 16% of its own already-limited headroom.

Interactive · RAEP component 1

Diagnose your own setup

Before comparing rerankers, measure the retrieval recall that bounds them. Enter yours — the ceiling, the regime, and the fraction of it you are using follow deterministically.

|W| is your reranker’s own window — the number of candidates it actually scores, which for a listwise LLM prompt is usually smaller than K. Regime thresholds and the utilisation ratio are RAEP components 1 and 3.

LOW
Ceiling on NDCG@10
0.0820
Users with no positive retrieved
91.8%
Ceiling utilisation η
6.1%
Recall needed for NDCG@10 = .02, at your η
33%

Both axes are logarithmic, which makes the bound a 45° line and the vertical gap up to it exactly log(1/η). Blue points are this paper’s measured operating points (CF-SVD retrieval, n=500, K=100); every one sits about a decade below the line. Moving a point right is a retrieval improvement and raises the ceiling. Moving it up is a reranking improvement and consumes headroom that already exists. Seventeen attempts at the second are catalogued below.

RQ3 & RQ4

Seventeen ways we tried to break it

Each row removes one candidate explanation for the failure: prompt design, model capacity, test-time reasoning, supervised training signal, structured CF features, temporal modelling, candidate budget.

not significant (paired Wilcoxon vs. CF) significantly worse than CF

Read the sign carefully

Four strategies came out ahead of CF. None of them is statistically significant. Every result that is significant is a loss. The claim of this paper is the weaker and more defensible one — no significant improvement over CF under realistic retrieval — not that every method is worse.

The strongest single piece of evidence is the convergence: 4B to 671B parameters, three supervised architectures, a fine-tuned LLM, and the CF baseline itself all land in a statistically indistinguishable band, and all of them use under 16% of their own ceiling.

Two results deserve singling out. Test-time reasoning strictly hurts. DeepSeek-V4-Pro with thinking enabled scores 43% below CF on Movies (p = .004) at roughly 37× the cost of the same model without it — $4.75 versus $0.13 per 500 users, and 200–500 s versus under 1 s per user. Reasoning chains have nothing to operate on when the relevant item is absent from the candidate set.

Giving the LLM the CF scores helps, for the wrong reason. Annotating each candidate with its CF rank, normalised score and popularity percentile improves every dataset — and raises Kendall’s τ against the CF order every time. The model gets better by overriding CF less. An LLM+CF blend with λ tuned on the evaluation users themselves — an upper bound, not a held-out result — recovers exactly CF and no more.

Reliability

Three things to know before reading the numbers

Each of these is a limitation we found ourselves and kept in the repository on purpose.

One earlier result in this line of work was retracted

An earlier version reported p < 0.0001 gains for LambdaMART above 8.8% recall, and framed it as a recall threshold. The training and evaluation user pools overlapped, so each user’s test item was simultaneously a supervision label and an evaluation target. Under any non-leaky split the effect disappears; the “8.8% boundary” framing does not survive and is not retained. cikm_diagnose_lambdamart_leak.py reproduces the leak, cikm_neural_rerankers_disjoint.py is the corrected protocol — 250 training users disjoint from the 500 evaluation users.

The listwise LLM prompts see 30 candidates, not 100

Retrieval always returns K = 100, but the listwise prompt shows the top-30 CF candidates and appends positions 31–100 below the model’s output in CF order. Pointwise rerankers score all 100. η is therefore computed against each method’s own window; an earlier version scored the LLMs against Recall@100 and understated their utilisation by ≈2.6×.

Amazon Electronics has no item text

All 29,905 items in the sampled subset carry title: null and text: null, which is why the plain-prompt Kendall’s τ against the CF order is exactly 1.000. Electronics remains a valid test for retrieval and for CF-embedding rerankers, but its LLM columns are a null control, not a measurement of semantic reranking.

Where the ceiling binds

Eight datasets, three domains

Recall falls broadly with catalog scale; density is the stronger descriptive correlate (Pearson r = +0.604 over eight points — a coefficient, not an inferential test). The ceiling bites hardest exactly where recommendation matters most: large, diverse catalogs.

DatasetDomainCatalogRecall@100Zero-recallRAEP regime
Amazon ElectronicsProducts28,9812.24%97.8%CRITICAL
Amazon MoviesProducts53,7092.95%97.1%CRITICAL
Amazon ToysProducts9,5457.0%—LOW
Amazon BeautyProducts1,4168.23%91.8%LOW
Amazon OfficeProducts5,03711.4%—LOW
MIND NewsNews20,21212.0%88%LOW
Amazon SportsProducts5,24612.8%—LOW
MovieLens-25MMovies19,88618.9%—MODERATE

Recall@100 under CF-SVD. MovieLens-25M is 18.9% on the n=1,000 RAEP diagnostic sample and 17.4% on the n=500 LLM-evaluation sample. Even at the top of this range, all five cloud LLMs score below the CF baseline.

The one escape route

Generative retrieval, not better reranking

Theorem 1 constrains closed-candidate rerankers. Three directions could break the ceiling; only one breaks that assumption. Better retrieval — multi-source fusion at K = 3,000 reaches 30% recall on Beauty at 30× the candidate budget — raises the ceiling but stays inside the same combinatorial constraint. Richer metadata improves η, not the ceiling. Generative retrieval — end-to-end token-level item generation, TIGER and GenRec — is the only direction in our taxonomy that lets a model emit items absent from the candidate set. That is the natural follow-up: a head-to-head against the hybrid CF+BM25+Dense baseline at the recall–NDCG operating point identified here.

Scope, stated plainly: our retrievers reach Recall@100 of 2–19%. A production system operating at substantially higher recall sits outside the regime we measured, and the ceiling loosens as recall rises. Our rerankers see CF embeddings, item text, popularity and CF scores — not the dwell-time, context and cross-feature signals an industrial ranker consumes. Offline evaluation cannot observe the online feedback loop. We do not claim the retrieval-first ordering holds beyond those boundaries.

Artifact

Reproduce it

Every number in the paper comes from a JSON file in experiments/logs/, and every one of those files is produced by a script in scripts/. Nothing is hand-entered.

# the datasets under data/processed/ are already preprocessed — no download step
git clone https://github.com/GeoffreyWang1117/recall-ceiling-cikm2026
cd recall-ceiling-cikm2026
conda create -n recallceiling python=3.11 && conda activate recallceiling
pip install -r requirements.txt

# reproduce the ceiling-utilisation numbers — no API calls, ~30 s
python scripts/cikm_recompute_eta_windows.py

# reproduce Figure 1 from the result JSONs
python scripts/make_fig_overview.py

SEED = 42 throughout; every non-API experiment is deterministic. The API drivers checkpoint per user, so an interrupted run resumes without repaying for completed users.

Paper floatScriptResult file
Fig. 1 — overviewmake_fig_overview.pycikm_eta_windows.json
Tab. 2 — dataset statisticscikm_dataset_stats.pycikm_dataset_stats.json
Tab. 3 — oracle vs. realistickdd_oracle_realistic_n500.pykdd_oracle_realistic_n500.json
Tab. 4 — retrieval sweepkdd_sota_retrieval_baselines.py, cikm_lightgcn_sweep.pykdd_sota_retrieval_baselines.json
Tab. 5 — all rerankers on Beautycikm_recompute_eta_windows.pycikm_eta_windows.json
Tab. 6 — supervised rerankers, 6 datasetscikm_neural_rerankers_disjoint.pycikm_neural_rerankers_disjoint.json
Tab. 7 — score-aware promptingcikm_score_aware_prompting.pycikm_score_aware_prompting.json
Tab. 8 — candidate-budget sweepcikm_k_sensitivity_n500.pycikm_k_sensitivity_n500.json

The full map, including the twenty results reported in prose, is in the repository README. Earlier result families (kdd_*, p9_*) are kept so the paper’s self-corrections can be checked against the original runs.

Cite

@inproceedings{wang2026recallceiling,
  author    = {Wang, Zhaohui},
  title     = {The Recall Ceiling of {LLM}
               Recommendation Reranking},
  booktitle = {Proceedings of the 35th ACM
               International Conference on
               Information and Knowledge
               Management (CIKM '26)},
  year      = {2026},
  address   = {Rome, Italy},
  publisher = {ACM},
  doi       = {10.1145/3799682.3841132}
}

Licence & contact

Code is MIT. The redistributed datasets under data/processed/ remain under their original terms — Amazon Review Data, MovieLens-25M, MIND.

Questions, replication problems, or a disagreement with the result: open an issue on the repository. A failed replication is the most useful thing anyone could send.

Zhaohui Wang · ORCID 0009-0006-1187-1903