)
Embedding 真比 BM25 好吗从逐查询差值找答案SciFact 开发集系列从最小复现到可检验的科研问题 · 第六轮 083日期2026-09-26读者研究生、科研新人和工程型研究者范围完整语料、全部开发查询、一个冻结模型不是官方测试榜单。交付状态实验与图片已完成公开源码上传受浏览器连接故障阻碍全文暂未通过发布验收。摘要平均落后也可能提供新证据上一篇把 SciFact 的数据、标注和 BM25 链路锁定了。本篇只推进一个问题换成真实预训练的句向量模型后同一批查询究竟有哪些改善、哪些退步Embedding 是把文本编码成可比较的稠密向量BM25 则主要根据词项匹配、词频与文档长度打分。名字更新、参数更多都不能代替对照实验。本次实际验证在相同的 5183 篇文档和 809 条开发查询上all-MiniLM-L6-v2 的 nDCG10 为 0.6602BM25 为 0.6943。逐查询分解为 150 胜、444 平、215 负。不过稠密检索找回了 BM25 在前一百名完全遗漏的 25 条查询。平均落后和局部互补可以同时成立这比一句“向量检索不行”更适合作为后续研究起点。一、复现价值把比较对象说清楚Sentence-BERT 论文提出用孪生网络等训练方式形成可用余弦相似度比较的句向量它提供方法依据不是本文这个 MiniLM 检查点在 SciFact 上获胜的证据。论文与模型卡必须分开读。BEIR 论文也强调跨任务检索评价不能从一个集合反推所有领域。BEIR本次没有训练也没有搜索十个模型再挑赢家。选择 MiniLM 是为了在 CPU 上完成真实编码、穷尽相似度计算和逐例审计。冻结模型、最大长度、拼接方式和指标后才运行结果不理想也保留。较 082 新增的是稠密表示及配对比较复用的是语料、开发查询、相关性标注和旧 BM25 排名。还要保留上一篇最关键的语义边界这里的 qrels 是查询到相关文档的映射在该导出中对应 cited_doc_ids不能等同于科学证据支持标签。找到相关论文不代表判对主张真假。BEIR train 对应原始 train本系列留出的 BEIR test 对应原始 dev本篇没有执行其检索。SciFact二、核心思想与公式从文本到排名再到差值编码器先产生 token 表示再按注意力掩码做均值池化并归一化z ( x ) ∑ t m t h t ∑ t m t , e ( x ) z ( x ) ∥ z ( x ) ∥ 2 , s ( q , d ) e ( q ) ⊤ e ( d ) . z(x)\frac{\sum_t m_t h_t}{\sum_t m_t},\qquad e(x)\frac{z(x)}{\|z(x)\|_2},\qquad s(q,d)e(q)^\top e(d).z(x)∑tmt∑tmtht,e(x)∥z(x)∥2z(x),s(q,d)e(q)⊤e(d).这里 (h_t) 是第 (t) 个 token 的 384 维表示(m_t) 为有效位置掩码padding 不参与均值特殊 token 仍参与。批量隐状态形状为[B,L,384]池化后为[B,384]。完整查询、文档矩阵分别为[809,384]与[5183,384]相似度覆盖全部 4193047 个查询—文档对没有近似索引误差。主要指标 nDCG10 是按名次折扣、再以理想排序归一化的相关性收益。本数据采用二值相关性第一名的命中贡献大于第十名。辅助指标 Recall100 表示已知相关文档被前一百名找回的比例MRR10 表示首个相关命中的倒数排名未命中记零。Δ q M q ( d e n s e ) − M q ( B M 25 ) , Δ ˉ 1 N ∑ q Δ q . \Delta_qM_q(\mathrm{dense})-M_q(\mathrm{BM25}),\quad \bar\Delta\frac{1}{N}\sum_q\Delta_q.ΔqMq(dense)−Mq(BM25),ΔˉN1∑qΔq.(M_q) 是同一查询的同一种指标(N809)。先按查询 ID 对齐再相减不能把两个独立排序的分数列直接相减。差值大于 (10^{-12}) 记胜小于其负值记负其余为平平的是指标并不意味着候选列表相同。三、官方代码阅读路线检查默认值而非只看接口先看固定 revision 的modules.jsonTransformer、均值 Pooling、Normalize 构成实际路径。再读 Sentence Transformers 的encode、Transformer.tokenize、Pooling.forward与Normalize.forward核对评估模式、掩码和截断。最后读 BEIR 的DenseRetrievalExactSearch.search与cos_sim检查语料排序、ID 映射和 top-k 返回规则。具体 commit、行号与本地实现对应见源码地图安装版源码与官方文件做了全文核对换行差异单独记录。模型卡说默认截断超过 256 个 word pieces 的输入不能把底层 tokenizer 的长度上限误当成句向量模型协议。本次显式设为 256文档输入是标题、一个空格、摘要查询不加提示词。独立重算两条输入的掩码均值与官方编码输出最大差为零实测形状[2,8,384]→[2,384]模型处于评估模式且可训练参数数目为零。BEIR 按长度排序后批处理再把向量映射回文档 ID。若只保存矩阵、不保存 ID 顺序结果可能形状正确而语义全错。本篇额外保存顺序、截断长度、向量哈希与排名这些审计层是配套实现主编码与搜索仍由官方库执行。四、最小实验与评测协议什么被固定什么没有协议在推理前写入PROTOCOL.md。模型和 tokenizer 同用 revision1110a243fdf4706b3f48f1d95db1a4f5529b4d41权重等十一文件逐一锁定哈希。BEIR 固定ef83d293…数据继续使用 082 已验证的文件哈希没有编造数据发布日期或不可变版本号。两边检索相同完整语料各自最多保留一百候选稠密侧没有先用 BM25 筛文档。上一篇 BM25 对一条查询只返回 27 个有效候选本篇不伪造补齐。两边使用同一 qrels、相同并列排序规则和同一独立评分函数并与官方评测交叉核对。公平也有边界。BM25 使用英文分析器和标题、摘要两个字段的匹配组合MiniLM 拼接文本并截断。它们输入预算和预训练计算不等本篇回答的是“这两套冻结配置如何不同”不能隔离出某一种表示的因果优势。更没有把模型的历史训练成本算成零。首次导入因缺少 datasets 失败日志保留。补齐后一次命令漏加 smoke 参数执行了全量开发探索没有据此调整配置。随后完成五查询、十六文档的资源检查再执行正式全量记录。正式 CPU 运行采用 float32、四线程、batch 16、种子 83Python 3.12.14、PyTorch 2.6.0、Sentence Transformers 3.4.1、Transformers 4.49.0。实测总耗时 58.59 秒其中查询编码约 0.84 秒、文档编码约 52.67 秒进程峰值 RSS 为 1160839168 字节约 1.08 GiB。总耗时包含导入和加载排除下载不是 GPU 显存也不能与上一篇已启动服务的 BM25 查询耗时直接作端到端速度比。这种配对协议还有一个容易忽略的好处它把“模型变了”和“问题换了”分开。若一个检索器悄悄丢弃空结果查询均值就可能虚高若两个结果文件少了不同的 ID直接比较总分会失去共同分母。因此审计程序要求两边查询集合与标注集合完全一致缺失立即失败零命中仍保留在统计里。候选不足也不能用重复文档补到一百。复现实验还应把结果缓存看成有身份的产物。本篇身份包含模型与 tokenizer revision、空提示词、无解码声明、数据哈希、配置、依赖和源码哈希不同身份不共享向量。发布包只保存必要排名与核验记录大权重、虚拟环境和可重建向量缓存留在本地。读者从固定下载锁重建资源后应先核对退出码和形状再看分数是否接近跨机器逐位一致性仍待人工核验。五、结果均值如何由胜负构成开发集指标BM25MiniLMMiniLM 减 BM25nDCG100.694270.66020-0.03407Recall1000.935060.93243-0.00264MRR100.662520.62613-0.03639主要指标上胜查询合计贡献 (0.07792)负查询贡献 (-0.11199)均以全部 809 条为分母两者相加就是净差。不能仅拿获益子集的均值写标题。没有报告显著性或置信区间这些开发主张可能共享原始文档查询独立性未经确认一个固定模型的一次运行也不能代表模型家族的方差。图由plot.py读取results/development/paired.csv生成。左图每点是一条配对查询重叠点不表示只有一条右图按差值排序零差区间并非缺失样本。候选覆盖同样值得拆开732 条查询两边至少命中一篇相关文档25 条仅稠密命中30 条仅 BM25 命中22 条两边都未命中。这是“至少一个命中”的分类不是 Recall100 的宏平均尤其不能忽略一条查询有多篇相关文档。六、失败分析保留反例不急着给原因贴标签按预登记规则取最大正差、最大负差各三条并按数值 ID 破除并列。查询 331 的相关文档从 BM25 第 71 位升到稠密第 1 位查询 69 的两篇相关文档却从第 1、2 位退到第 12、23 位。查询 199 更直接BM25 第一名命中稠密前一百完全未命中。完整六例和文档 ID 都保存在配对结果中没有手工挑“最好讲”的例子。作者推断领域缩写、词面精确匹配和长摘要信息损失都可能解释部分退步但排名本身不能判定原因。本次 3681/5183 篇文档被截断约 71.02%查询均未截断。文档编码前共 1747679 个 token截断后保留 1242251 个。正例、负例的相关文档都可能被截断因而“看到截断就归罪截断”同样是事后叙事。另一个可核查失败来自数值精度用 float64 对保存向量重新计算全库分数八条查询的前一百内部顺序不同最大保留分数差约 (6.73\times10^{-7})。专项审计确认它们候选集合及本文所有指标均未改变。正文保留官方 float32 结果不把低精度重放说成逐位相同。排查时先确认数据哈希、ID 顺序、掩码、归一化和截断再讨论语义。还要防止把未经人工核验的自动分组称为“人工错误类型金标”。本篇没有人工标注也没有证明模型预训练语料与 SciFact 零重合模型卡列出的科学文献来源使这一边界尤其需要保留。七、从现象到可检验的研究问题第一条假设是两套排名存在可利用的互补。下一篇只改变融合规则冻结本篇两份排名比较固定候选预算下的 RRF 与单路基线。25 条独占命中提供动机却不保证融合后能进入前十如果提升只来自扩大候选预算就不能归功于融合公式。第二条竞争解释是稠密模型的退步部分来自输入裁剪。后续预处理篇应分别控制字段拼接和长度先登记主要指标及允许的计算增量再观察相关文档的排名变化。延长输入如果同时增加计算量也要报告。不能在本篇失败样本上不断试到赢再把留出的确认集叫成未经选择的证据。源码与复现入口统一公开源码仓库已存在但本篇固定版本尚未上传成功本次 Safari 辅助功能连接失败gh 也无现成登录。当前没有可向读者提供的本篇固定 commit、README 与 SOURCE_MAP 公开入口因此保留未完成状态仓库首页不代表本篇已经发布。待发布包已准备完整源码、依赖、下载锁、协议、README、SOURCE_MAP、许可证与验证记录。安装依赖并执行下载准备后最小真实命令为python run.py --cache ./cache --out results/my_smoke --smoke它运行真实模型的小范围检查不能作为全量分数。去掉--smoke才是本文完整开发实验产出排名、逐查询分数、环境与阶段状态。audit.py可离线重算已保存的 809 条配对结果向量精度检查需先运行完整入口生成向量。本次未训练、未运行确认集、未运行融合也没有用 toy 替代模型。总结本次冻结 MiniLM 配置没有超过 BM25但留下了更有用的研究资产一组可追踪的获益、受损与共同失败查询。下一步的价值不是保证“把分数做高”而是让互补、截断和字段处理这些竞争解释分别接受受控检验。公开源码发布尚未完成整篇仍需续完同一编号后验收。参考资料检索与实际访问日期2026-09-26论文结论、模型卡说明与本次实验分别标示。固定源码若浏览工具缓存失效已通过官方 raw 下载读取并记录哈希。Nils Reimers、Iryna Gurevych2019Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks。Sentence Transformersall-MiniLM-L6-v2 模型卡本次权重固定上述 revision。Nandan Thakur 等2021BEIR: A Heterogenous Benchmark for Zero-shot Evaluation of Information Retrieval Modelsv4。David Wadden 等2020Fact or Fiction: Verifying Scientific Claims。Sentence Transformers 3.4.1 固定源码BEIR 固定源码。