Glance: The Generator Is Its Own Reranker
Organizations: Airun Intelligence Labs
Abstract
Retrieval-augmented generation commonly serves separate models for reranking and answering, duplicating model residency and passage processing. We introduce Glance, which equips the generator with a lightweight decision adapter and pointer head to score candidate passages from a shared prefill. Short relevance probes branch from the cached context, producing one score per passage without separately prefilling each query-passage pair. A single resident 9B backbone supports generation, general decisions and reranking, with approximately 0.1 GiB of additional memory per decision skill. After 39 minutes of MS MARCO fine-tuning, Glance achieves nDCG@10 of 0.741 on SciFact and 0.345 on NFCorpus, compared with 0.721 and 0.326 for bge-reranker-v2-m3. On 300 HotpotQA questions, its selected context improves answer F1 by 0.045 over cross-encoder-selected context under the same base generator (paired bootstrap 95% CI [0.014, 0.076]). In a scaling study, reranking quality keeps rising up to 200 candidates (43k tokens) scored from one shared prefill, where it exceeds the cross-encoder by 0.058 nDCG@10, and a probe-only activated adapter lets generation continue from the original passage cache. These initial results demonstrate generator-based reranking with one resident backbone; evaluation currently covers two retrieval datasets, one QA dataset and one backbone family.
Figures & tables
| Name | Initialised from | Training | Adapter active on |
|---|---|---|---|
| zero-shot | – | 4.4k general decision records, 20 min, no retrieval data | all tokens |
| trained | zero-shot | + 4,000 MS MARCO records, 8–20 passages, 39 min | all tokens |
| trained-long | trained | + 450 MS MARCO records, 20–80 passages, 14 min | all tokens |
| control | zero-shot | + 1,200 MS MARCO records, 150 steps | all tokens |
| activated | zero-shot | + 1,200 MS MARCO records, 150 steps | probe tokens only |
| SciFact | NFCorpus | |||
|---|---|---|---|---|
| Method | nDCG@10 | ms/query | nDCG@10 | ms/query |
| BM25 | 0.662 | – | 0.306 | – |
| bge-reranker-v2-m3 | 0.721 | 31 | 0.326 | 60 |
| Decision 9B, separate ( calls) | 0.729 | 2210 | 0.323 | 2485 |
| Glance packed_all (1 pass) | 0.715 | 614 | 0.341 | 670 |
| Glance packed_q (1 pass) | 0.721 | 773 | 0.328 | 847 |
| SciFact | NFCorpus | |||
|---|---|---|---|---|
| Method | zero-shot | trained | zero-shot | trained |
| BM25 | 0.662 | 0.306 | ||
| bge-reranker-v2-m3 | 0.721 | 0.326 | ||
| Glance packed_all (1 pass) | 0.715 | 0.741 | 0.341 | 0.345 |
| Glance packed_q (1 pass) | 0.721 | 0.738 | 0.328 | 0.338 |
| Glance listwise (1 pass) | 0.684 | 0.692 | 0.331 | 0.334 |
| tokens/pass | zero-shot | trained | trained-long | bge-v2-m3 | ms/query | peak GiB | |
|---|---|---|---|---|---|---|---|
| 10 | 2.2k | 0.651 | 0.653 | – | 0.626 | 252 | 15.4 |
| 20 | 4.3k | 0.662 | 0.658 | 0.674 | 0.624 | 165 | 16.7 |
| 50 | 10.8k | 0.637 | 0.674 | 0.691 | 0.642 | 417 | 25.5 |
| 100 | 21.6k | 0.584 | 0.682 | 0.697 | 0.637 | 1049 | 56.4 |
| 200 † | 43.4k | – | – | 0.717 | 0.659 | 15790 | 20.5 |
| Context given to the generator | EM | F1 | R@2 | R@3 | rerank ms |
| (a) all 10 paragraphs | 0.533 | 0.716 | – | – | – |
| (b) bge-reranker-v2-m3 top-3 | 0.500 | 0.683 | 0.863 | 0.918 | 29 |
| (c) Glance top-3, adapter off | 0.543 | 0.718 | 0.762 | 0.865 | 378 |
| (b ′ ) bge-reranker-v2-m3 top-3, adapter on | 0.547 | 0.702 | 0.863 | 0.918 | 29 |
| (c ′ ) Glance top-3, adapter on | 0.590 | 0.757 | 0.762 | 0.865 | 378 |
| (d) oracle: 2 gold paragraphs | 0.607 | 0.789 | – | – | – |
| Mode | Check against the model loaded alone | Switch into mode (median) |
|---|---|---|
| Base | greedy chat text identical on all visits (3 prompts 10) | 4.2–6.4 ms |
| General | probabilities bit-identical ( ) | 9.4 ms |
| Rerank | probabilities bit-identical ( ) | 8.8 ms |
LLM Reranking
Large language model reranking uses LLMs to reorder retrieved documents or candidate outputs by relevance, usefulness, or task-specific criteria.
See all 136 papers