导航菜单
Glance: The Generator Is Its Own Reranker
Adilet Metinov, Chingiz Arziev
2026-10-30▲ 10arXiv 2610.40454v1Hugging Face
本页由 AI 根据论文全文生成(deepseek-flash),可能有误,请以原文为准。
一句话
Glance 为单个常驻的 9B 生成器骨干配备轻量级决策适配器和指针头,以便从一次共享预填充中对候选段落重排,然后用同一骨干生成答案。
要解决的问题
检索增强生成通常为重排序和回答分别服务独立模型,这会重复模型驻留和段落处理。交叉编码器重排器会分别编码每个查询-段落对,而基于 LLM 的重排器以更高成本提升质量。无论哪种方式,都必须额外服务一个模型,并且在生成器读取所选上下文之前处理候选段落。论文提出的问题是:生成器能否利用跨段落共享的计算来评判所有段落。
方法
Glance 对候选段落做一次预填充,然后评估从共享缓存分支出的简短、段落特定的相关性探针,并由一个 256 维指针头将每个探针转换为相关性分数。在主流程中,决策适配器对所有 token 激活;对 top-n 段落关闭适配器重新预填充并生成回答。在 Glance-Activated 中,适配器仅对探针 token 激活;候选段落用基础权重预填充,生成继续使用原始缓存。冻结骨干是一个混合 Gated DeltaNet/全注意力 9B 模型,唯一训练的参数是 rank-16 LoRA 适配器和指针头。论文比较 packed_all、packed_q 和 listwise packing,其中单次遍历指一次共享预填充,随后对所有探针做一次批处理续算。训练使用 packed_all 格式的 4,000 条 MS MARCO 查询,每条记录含一个正例和 7–19 个难负例,训练一个 epoch。
实验结果
- 经过 39 分钟的 MS MARCO 微调后,Glance packed_all 在 SciFact 上达到 nDCG@10 0.741,在 NFCorpus 上达到 0.345,而 bge-reranker-v2-m3 分别为 0.721 和 0.326。 §4.3
- 在 300 个 HotpotQA 问题上,关闭适配器的 Glance top-3 取得 F1 0.718,而交叉编码器 top-3 为 0.683;开启适配器的 Glance 达到 0.757;Glance 上下文仍以 +0.055 F1 胜出,配对 bootstrap 95% CI 为 [+0.018,+0.093]。 §4.5
- 在候选扩展研究中,trained-long 在 k=100 时达到 0.697 nDCG@10,而交叉编码器为 0.637,提升 +0.060;在 k=200 且 43.4k token 时达到 0.717,而交叉编码器为 0.659,在分块路径上每个查询耗时 15.8 s。 §4.4
- 零样本单次遍历 packed_all 在 SciFact 上得 0.715 nDCG@10,而 20 次独立决策调用为 0.729,交叉编码器为 0.721;在 NFCorpus 上得 0.341,而交叉编码器为 0.326,独立调用为 0.323。 §4.2
- 一个 9B 骨干服务基础聊天、通用决策和重排模式,按请求切换时概率逐位相同,max|Δp|=0;中位切换时间分别为 4.2–6.4 ms、9.4 ms 和 8.8 ms,驻留内存为 16.85 GiB,循环后为 16.86 GiB。 §4.6
- 激活式适配器在 SciFact/NFCorpus 上得 0.740/0.351 nDCG@10,而匹配对照为 0.744/0.351;续用缓存得到 EM/F1 0.61/0.750,而重新预填充为 0.59/0.754,且中位回答延迟更低,为 138 ms 对 181 ms。 §4.7
局限
- 该工作是概念验证:评估集较小(数百个查询),覆盖两个 BEIR 数据集和一个 QA 数据集,并且只测试一个骨干系列(混合 9B);延迟来自未优化的 eager 路径,专用交叉编码器在每个查询上仍更快。
- BEIR 差异未做显著性检验,并且逐段落基线没有用训练后的适配器重新运行。
- 零样本适配器在 k=20 之后性能下降,并在 k=200 时崩溃;跨查询批处理目前会降低吞吐量,并且内存随 k×上下文长度增长,因为每个探针分支都会复制共享状态缓存。
- 激活式适配器和缓存复用结果是在 100 个问题上的单种子结果,逐位缓存检查使用了 0.8B 模型,并且使用缓存复用时回答会看到所有段落,而不是重排后的子集。
要点
- 单个驻留的 9B 骨干支持生成、通用决策和重排,每个决策技能约增加 0.1 GiB 内存。 §3.5
- 主 Glance 对所有 token 保持适配器激活,并在关闭适配器的情况下重新预填充选中的 top-n 段落;Glance-Activated 仅对探针 token 保持适配器激活,并续用原始候选缓存。 §3.1
- 在 packed_all 中,状态列出全部 k 个段落,每个分支询问 Passage i 是否包含回答或支持查询的信息;分支之间从不相互注意。 §3.3
- 在混合骨干上,共享前缀路径只运行一次共享状态,并从每层缓存的副本启动每个分支,包括 DeltaNet 卷积窗口和循环状态;该路径是精确的,并在训练中使用。 §3.4
- 训练使用 4,000 条 MS MARCO 查询,每条记录含一个正例和 7–19 个难负例,训练一个 epoch、500 个优化器步、55,598 个带标签探针,并在一个 NVIDIA B200 上于 39 分钟内处理 7.7M 前向 token。 §3.6
- 在 packed_all 中,段落分数可能依赖顺序:nDCG@10 从 BM25 顺序下的 0.678 到跨顺序的 0.693 不等,并且排名最高的段落在 91% 的情况下与 BM25 顺序匹配。 §4.8
- vLLM 原型在一次 generate 调用中以 0.76 s 运行 4 个聊天回答和 19 个决策行,而仅聊天为 0.43 s;概率与 Kev 平均相差 0.006,最大相差 0.10,400 个决策中有 4 个翻转。 §4.9
- 将一个适配器专门用于重排会在 JevBench 上造成中等遗忘:通用适配器得 184/231,重排适配器得 175/231,净损失 9 项,其中 7 项在困难层级。 §4.6
思维导图
mindmap
root["Glance"]
["问题"]
["重排器独立驻留"]
["成对段落编码"]
["共享计算问题"]
["方法"]
["共享段落预填充"]
["段落特定探针"]
["指针头"]
["决策适配器"]
["混合骨干缓存"]
["MS MARCO 训练"]
["流程"]
["主流程重新预填充"]
["激活式缓存续用"]
["评估"]
["BEIR SciFact 与 NFCorpus"]
["HotpotQA 端到端"]
["候选扩展"]
["三种服务模式"]
["vLLM 原型"]
["结果"]
["具竞争力的 nDCG"]
["答案 F1 提升"]
["扩展到 200 个候选"]
["激活式缓存复用"]
["局限"]
["评估规模小"]
["BEIR 未做显著性检验"]
["内存随 k 增长"]
["激活结果单种子"]
["vLLM 原型路径"]
登录
选择一种方式继续
登录即表示你同意我们的服务条款和隐私政策