
- 日期:2026-10-22
- 读者:研究生、科研新人和工程型研究者
- 实验范围:真实 SciFact 语料产生的冻结候选,100 条已观察开发查询,每条 50 个候选;不评测 300 条确认查询。
摘要:一个合理解释,怎样变成可以输掉的假设
重排模型没有提高均值,最容易写出的解释是“科学文本太长,证据被截断了”。这个解释听起来合理,却可能只是知道结果后补上的故事。本篇重新运行真实交叉编码器,把失败先定义成候选、名次与分数上的可计算状态,再检查截断能解释多少退步。
本次实际验证发现,18 条退步查询中,17 条的已召回相关文档没有被截断。这不能证明截断没有影响,却足以反对“退步都由相关文档截断造成”的说法。本文交付的是失败账本和下一阶段研究登记,没有宣称新方法已经胜出。
复现价值:把现象和原因分开存放
前面的检索实验已建立词项检索、稠密检索、倒数排名融合和交叉编码重排资产。倒数排名融合,即 RRF,只使用文档在各列表中的名次组合结果;交叉编码器则联合读取查询和文档,为每对输入输出一个分数。本文固定原有 RRF 前五十候选,继续使用同一个 MiniLM 重排模型。
论文报告与本次结果必须分开。BEIR 论文比较了多领域检索方法,指出不同方法有泛化与计算成本差异;它没有保证每次重排都获益。[1] SciFact 原任务还包括支持、反驳与理由定位,而这里只评测文档相关性,不能把检索指标解释成科学事实判断能力。[2]
相较前一篇的机制证据讨论,本篇选定检索资产作为后续六篇的唯一研究主线。相较此前重排实验,模型和候选不变,新增变量是诊断分层,新增产物是可复算分类和研究登记。全部 809 条开发查询已有观察历史,其中这 100 条尤其不能被重新包装成独立测试集。
核心思想与公式:先定位损失发生在哪一层
令 为查询 的标注相关文档集合, 为五十候选集合, 为重排后的前十集合。先判断 是否为空,再判断 是否为空。没有相关候选时,换一个仅重排现有候选的模型也无法救回它。
主指标 nDCG@10 是前十位的归一化折损累计增益:相关文档越靠前贡献越大,再用理想排序归一化。这里相关性为二值,逐查询指标写成:
其中 是第 名文档,指示函数在文档相关时为一。以同一查询的重排值减去原 RRF 值得到 ;正数是改善,负数是退步。同分按字符串文档编号降序处理,不能让审计器和主评测器采用不同约定。
候选 oracle 是把已有相关候选全部移到前面得到的理想分数 。它读取标签,只能诊断,不能参与实际检索或模型选择。由此有:
左边是距完美排序的缺口;右边分别表示当前候选池无法恢复的缺口,以及在当前候选内仍可恢复的排序缺口。它是固定标注下的代数分解,不是原因的百分比分配,更不是两个模块的因果贡献。
官方代码阅读路线:沿着一对输入追踪
先读 BEIR 的 Rerank.rerank:它选出候选,按标题、一个空格、摘要组成文本,再把分数对应回文档编号。[3] 随后读 Sentence Transformers 的批处理函数,检查查询和文档如何共同截断;最后读 predict 中的评估模式、前向计算和输出转换。[4] 本次直接执行这些官方路径,未重写神经网络。
固定模型为 cross-encoder/ms-marco-MiniLM-L6-v2,权重与分词器版本均为 233902d25c440f23af6f7d6e94d2946bac0bee0a。模型卡说明它用于 MS MARCO 段落排序。[5] 这提供了检查任务差异的动机,但不能仅凭训练领域就断言它一定误读科学概念。源码地图记录实际下载核对的提交、函数行号和许可证。
最小实验:冻结后再重新运行
继承已公开固定提交中的 100 个查询编号、每条 50 个候选及相关性标注。候选来自完整 5183 篇语料的历史检索,没有缩小语料重新取分。下载资源没有可用 Git 修订号的部分,用真实公开地址和归档 SHA-256 标识;缓存逐文件校验后复用。
实验固定标题加摘要、联合长度上限 512、原始输出分数、CPU 单精度、四线程、批量十六,随机种子为 106。先执行 5 条查询乘 10 个候选试跑,再运行全部 5000 对。试跑估计推理 128.35 秒,低于预定 900 秒预算,进程峰值内存也低于 4 GiB,因此没有按效果缩小范围。
正式运行含导入、资源核对、模型加载和评测共 133.41 秒,进程峰值 RSS 为 893075456 字节,约 0.83 GiB;本次没有训练、生成回答、重新编码整库或使用 GPU。形状检查记录输入 、末层隐藏状态 和分数 ,分别表示两对输入、联合序列长度、隐藏维度与单一排序分数。逐对分数与此前冻结记录完全相同。
实际验证:五类账本,先不贴语义标签
分类按表中顺序互斥执行。只有先排除候选缺失和前十未命中,才对剩余查询判断增益、退步或持平;因此“前十未命中”里也可能存在退步。
| 可复算状态 | 查询数 | 允许得出的判断 |
|---|---|---|
| 候选中无相关文档 | 9 | 当前候选内重排不可恢复 |
| 有相关候选,前十未命中 | 8 | 存在排序恢复空间 |
| 前十命中,但 nDCG 下降 | 16 | 命中不代表顺序足够好 |
| 前十命中且分数改善 | 20 | 局部改善需要保留 |
| 前十命中且分数持平 | 47 | 主指标未变化 |
原 RRF 与重排的平均 nDCG 分别为 0.670906 和 0.669133,候选 oracle 为 0.906131。平均候选缺口为 0.093869,排序缺口为 0.236999。总体 20 胜、62 平、18 负;类别表中的持平数较小,是因为前两类优先分走了一部分查询。
为了防止只挑最戏剧化的故事,每个非空类别取查询编号加固定前缀后的 SHA-256 最小者。查询 456 的首个相关文档从第六降到第十二,相关候选没有截断;查询 963 的前十仍有两篇相关文档,nDCG 却从 0.831555 降至 0.491149。例子只说明分类含义,不代表该类别总体,更没有被人工标为“术语理解失败”。
竞争解释:让直觉面对一个反例

第一种解释是输入截断:关键相关文本没有进入模型,因此排序失败。第二种解释是排序覆盖:即使相关文本完整,交叉编码器仍可能覆盖原检索中有用的排名信息。后者不等同于已经证明领域不匹配,也可能涉及干扰候选、标签覆盖和分数目标差异。
只在 91 条有相关候选的查询内比较:75 条没有相关候选截断,其中 17 条退步;16 条至少有一篇相关候选截断,其中 1 条退步。对应比例为 22.67% 和 6.25%。九条候选缺失查询不进入这个分母,否则会被错误登记为“没有截断且没有退步”。
这个观察不支持“截断组更容易退步”的简单预期,但两组不是随机分配的,样本量和文本难度也不同。“有 token 被移除”不等于“支持检索判断的证据被移除”;相关文档完整也不意味着不相关候选没有截断。因此本次只否定一个过强的必要条件叙述,没有估计截断的因果效应。
评测协议与研究登记:现在决定将来怎样认输
下一步主假设是:固定五十候选、仍只进行一次交叉编码器计分,以常数六十的等权倒数排名融合保留原 RRF 顺序,能减少覆盖有用排名造成的退步。预定确认集主指标是该方案相对纯重排的平均 nDCG 差,实际增益门槛为 0.01;同时必须报告相对纯 RRF 的差,不能只打败一个较弱对照。
这是假设,不是本篇运行结果。它由已见开发结果启发,登记时间早于本次重放及未来干预,却晚于此前观察,不能称为从未见结果的预注册。固定登记文件及其哈希公开保留,后续修改必须附日期和理由。
后续先设计证据保留与匹配控制,文本变换须由真人检查标签是否保持;再比较纯 RRF、纯重排和一个固定融合方案,控制候选数、计分次数并报告 token 成本。有条件才做上下文处理乘融合的二因素实验。没有实际人工回复,不能把模型自己判断的“语义不变”作为审核完成。
每篇最多四个固定条件乘 100×50 对、CPU 推理 1200 秒、峰值内存 4 GiB,不训练新模型。超预算保留日志并停止,不按胜负删查询或追加模型。最后冻结方案后才使用 300 条确认查询;未达到门槛就报告不支持预定实际收益,不在确认集上继续调参。查询可能共享证据文档,不把逐查询数直接当成独立样本量。
失败排查与证据边界
本次曾因旧共享环境导入停滞改用可运行环境;补装时数值依赖自动升级,已在推理前固定回兼容版本。首次启动漏传试跑参数,在依赖导入阶段中断,未产生模型分数;失败日志保留,随后正确试跑与正式运行均退出零。
审计顺序是输入身份、候选覆盖、逐对分数、逐查询指标、分类分母,最后才看解释。独立标准库脚本复算完整结果与关联表,八种损坏注入均被拒绝,包括改分类、改差值、伪造截断数和声称使用确认集。它是自动算术核验,不是人工语义金标。
标签未覆盖的真实相关文档仍可能存在;模型预训练污染未审计;一次确定性重放也不提供跨种子或跨领域稳定性证据。我们保留这些限制,正是为了让下一实验能针对一个明确问题,而不是追着一个总能解释任何结果的故事走。
源码与复现入口
完整源码已公开并按固定提交核验:源码目录、README 运行说明、SOURCE_MAP 源码地图。包含依赖锁、配置、研究登记、逐对结果与独立审计器;公开副本与本地归档的 69 个文件逐一匹配。
按 README 安装依赖、运行数据下载与哈希核验后,最小真实命令为:
HF_HUB_OFFLINE=1 TOKENIZERS_PARALLELISM=false python run.py --cache ./cache --out replay-smoke --smoke
预期得到五查询乘十候选的分数、日志、形状和指标;删除试跑参数可复跑本文完整范围。再运行 discover.py 与 check_discovery.py 生成并独立检查分类。已保存结果的审计不需模型推理,但不能替代真实实验。
总结
从失败到研究问题,关键是先规定哪些观察支持解释、哪些观察会迫使自己修改解释。本篇的进展不是把一个小负结果写得更有吸引力,而是把十八条退步落实为可定位、可复算、可反驳的研究起点,并留下仍然有效的确认边界。
参考资料
检索与固定源码核验日期:2026-10-22。论文用于任务与方法背景,本篇数字均来自随代码保存的实际日志。
- Nandan Thakur 等,2021,BEIR,NeurIPS Datasets and Benchmarks;论文 v4。
- David Wadden 等,2020,Fact or Fiction: Verifying Scientific Claims,EMNLP;会议页面。
- BEIR 作者,固定提交的官方重排实现。
- Sentence Transformers 维护者,固定 CrossEncoder 源码。
- Sentence Transformers,本次权重对应模型卡。