ToWow / 研究实录

我们暂时保留了 BM25

一次多路检索组合把 Recall@100 从 0.5384 提高到 0.5750,却降低了前十名的排序质量。这个结果改变了我们组合发现方法的方式。

发现前端的 M1 诊断结束后,我们没有选中预先设定的五路检索组合。BM25 留了下来,几条有希望的检索路径也继续保留。

这不是一个显然的决定。五路融合在前一百名找回了更多相关候选;只看平均召回,它确实优于 BM25。但前十名排序更差,而召回改善对案例构成的敏感程度,也超过了我们愿意据此换方案的范围。

组合本来想利用不同方法的长处:关键词抓明确术语,向量寻找不同表达,跨模型表示连接另一套坐标。此次结果要求我们重新检查它们合流的位置。

两个窗口,看到了不同的变化

这次实验使用从公开材料整理的请求与候选资料,以及已完成的诊断判断。总计 44 个案例,其中 5 个用于选择、39 个用于评价。39 个评价案例中有 2 个没有标注正例,因此召回和 nDCG 的平均值使用其余 37 个;前十名负例数量使用全部 39 个。这些标签判断材料之间是否相关,不等同于当事人愿意合作。

我们先关注三个版本:BM25 关键词基线、五路检索的固定融合,以及融合后再加入一层排序。

方法 Recall@100 ↑ nDCG@10 ↑ 前十名负例数 ↓
BM25 0.5384 0.1551 8.769
五路融合 0.5750 0.1283 8.974
融合后再排序 0.5728 0.1327 8.795

逐案例计算后取平均。Recall@100 衡量相关候选有多少进入前一百名;nDCG@10 衡量相关项是否出现在前十名更靠前的位置;负例数是标签下的统计,并非已经发送了这些邀请。数据取自 M1 的原始评价报告。

五路融合的召回点估计比 BM25 高出约 3.67 个百分点。与此同时,前十名的排序指标下降,负例平均增加。后续排序挽回了一部分前排质量,却没有在这些平均值上超过 BM25。

这三列不能彼此代替。候选生成要给后续过程留下足够机会,前排排序则决定有限注意力首先花在哪里。扩大一个集合,与把这个集合排好,是两个需要分别解决的问题。

融合到底做了什么

本次五路组合包括关键词、混合检索、同模型向量、共享参照和线性映射方法。融合使用 RRF:依据候选在各路列表中的名次累加贡献,而不是直接相加不同量纲的原始分数。RRF 是已有的排名融合方法,2009 年已有相关研究。原始论文

这使不同检索器可以用比较简单的方式合流,但不会凭空知道哪一路更适合眼前这个请求。

设想一个教学例子:关键词方法把精确符合约束的候选排到第二;另几路都把一个主题相近、却缺少关键条件的候选排到第五。多路支持可能把后者推到前面。融合规则看到的是名次,关键条件的差别仍需要某个输入或判断过程表达出来。

这只是解释潜在失败方式的例子。当前聚合报告还不能证明本次下降主要由哪类案例造成。能够直接观察到的是:固定地合并更多路径,没有同时兑现更高召回与更好前排排序。 因而,继续增加路径之前,应先问每一路在什么请求上提供额外价值。

平均多找到了,还不足以决定换方案

点估计回答这批案例上的平均变化;它没有告诉我们,变化对案例构成有多敏感。

按预先规定的方法,以案例为单位做 10,000 次配对 bootstrap,五路融合相对 BM25 的 Recall@100 差值为 0.0367,95% 区间是 −0.0332 到 0.1150。区间跨过零,因此这次诊断没有达到“召回提升区间下界大于零”的选择条件。

这里有两个容易走快的判断。“平均高了,所以可以替换”忽略了不确定性;“没有达到选择条件,所以所有组成方法都没用”又丢掉了不同方法之间的差别。例如,单独的同模型 B 路径在这批评价案例上的召回点估计为 0.6066,高于固定融合。这个观察值得追踪,但也不能在看过结果后直接宣布它是最终胜者。

这次决定保留 BM25 和有希望的候选路径,未选择固定组合进入更大的评价。研究于 9 月 1 日停止,后续已经生成的另一批分数尚无完整质量结果。本文回读已有结果,没有继续开跑。

一层排序,为什么还会丢候选

融合后的第二层按固定的 0.7/0.3 权重混合融合分数与可解释排序分数。它相对融合版本,平均减少了 0.1795 个前十名负例;配对区间为 −0.3333 到 −0.0256。这一项改善通过了本次判据。

然而,召回保持的区间下界是 −0.02325,略低于预设的 −0.02。也就是说,我们仍未获得足够依据,认定它把召回损失控制在允许范围内。

原因在结构上并不神秘:如果第二层在更大的候选池里重新打分,再截取前一百名,它就可能改变集合成员。所谓“再排序”,实际上同时在进行第二次选择。

这给出了一个直接可实现的改动:先固定生成器的前一百名,再只在这批成员内部调整顺序。这样,第二层能够影响前十名,却不会把生成阶段已经找到的相关项挤出前一百名。代价也很明确:它不能从第一阶段的一百名之外救回遗漏者。该结构已经进入后续设计,但其实际排序收益仍需新的评价。

更值得增加的,是选择路径的判断

这次实验把原先笼统的“组合检索”拆成了三个具体问题:哪些请求需要额外检索,额外检索带来哪些新成员,以及怎样安排已经选中的成员。

如果一个请求的关键词结果已经足够好,额外路径可能只增加计算和竞争。如果关键词没有接住另一种表达,向量路径才可能带来关键补充。让每条请求都付出同样的组合成本,需要比“方法更多”更强的理由。

因此,我们把下一步问题改成了:能否从尚未看标签的检索表现中,识别值得追加计算的请求;追加以后是否真的找回了更多相关项;固定成员的排序是否减少前排噪声。三项分别评价,才知道改善来自哪里。

对读者而言,这次结果最有用的地方,是一个可以马上检查的接口:你的第二阶段究竟只改变顺序,还是也在改变成员?把这个区别写进实现与测量,往往比再增加一个检索器更能解释系统为什么变好或变差。

数据与方法记录

本文使用 2026 年 9 月 1 日已落盘的 M1 evaluation-v3/report.json、decision-v1/M1_DECISION.json 与组合 manifest。正文三个方法的宏平均值可由精简逐案例数据复算;配对区间取自历史决定记录,详见方法说明。它是公开材料上的诊断实验,未测量真实协作接受率,也没有改变线上排序。

下一步

如果你的团队正在把 agent 放进真实业务,想了解 Flowness,或想聊企业 AI 落地怎么做,请在“联系我们”页写下行业和想解决的问题,我们按这些内容回复。 联系我们