news 2026/10/23 3:12:50

11_给RAG建baseline_别被看起来不错骗了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
11_给RAG建baseline_别被看起来不错骗了

给 RAG 建 baseline:别被"看起来不错"骗了

RAG 做到能跑、能答,很容易——跑几条查询,模型答得挺顺,就觉得自己做完了。但没有 baseline,后面所有优化都是自说自话:你不知道自己在进步还是退步,也不知道哪个改动值得留。

这篇讲我怎么给这条 RAG 链路建评测基线,以及过程中被"看起来不错"骗过的两次。

一、四项指标 + 一份 50 条的 golden set

评测之前先想清楚:RAG 链路要同时看四件事,缺一个都是盲人摸象。

指标测什么为什么不能只看它
recall@5检索准不准检索准≠答得对,后面还有生成
faithfulness(忠实度)生成有没有乱说唯一衡量幻觉的指标
abstain_rate该拒答时敢不敢拒不该答的硬答,比拒答更糟
延迟 p95 + 成本能不能上生产效果好但 10 秒一条,没用

golden set 是评测的地基。我手写了 50 条,按难度分了五类:

类型条数考什么
term25关键词直查,基本是送分题
semantic15同义改写,考语义召回
boundary5有适用范围的边界题
conflict2不同文档说法冲突,考综合
multi3必须同时拿到多个来源才能答

为什么一定要分层?因为如果不分层,50 条里 40 条送分题,recall 做到 0.9 也说明不了什么——全是 easy 题喂出来的虚高。分层的价值在于暴露"你到底哪里弱"。

二、第一次被骗:忠实度是"下界",不是忠实度

我一开始用"引用编号命中的实体占比"当忠实度指标,跑出来 hybrid 是 0.988,很好看。但后来发现这个 0.988 是下界,不是真实的忠实度:

它抓得住"整段编造",抓不住"用原文的词拼出一个错误结论"。

模型完全可以用文档里出现过的词,拼出一句文档没表达的意思——实体都对,结论是错的。这种幻觉,实体重叠法测不出来。

而且我还在这个指标上犯过一个实打实的 bug:把答案里的[1]引用编号也当成"实体"去跟原文匹配,导致每条答案的忠实度被系统性低估——修掉之后从 0.848 涨到 0.988。

教训:指标的定义要反复拷问"它到底测的是什么,测不到什么"。忠实度的下界能当"及格线",但真要衡量幻觉,得加 LLM-as-judge。

三、第二次被骗:easy 题的天花板效应

做分块策略对比时,我一度得出结论"原子分块和固定分块命中率打平(87.5%),所以分块策略无所谓"。这个结论是错的——因为那批评测题全是 easy 题。

真正的短板藏在 hard 题里:跨文档综合题(multi),全中率只有 0~25%。三种检索模式里,纯向量 0.0、纯 BM25 0.25、混合 0.0。

模式跨文档综合全中率
纯向量0.0
纯 BM250.25
混合0.0

这才是这条链路最真实的弱点:它能把单点问题答得不错,但"把两个来源的信息拼起来"基本做不到。而这个弱点,只有 hard 例才能暴露。

Easy 题测的是"有没有下限",hard 题测的是"上限在哪"。只报 easy 题的命中率,等于只报了自己最不弱的地方。

这也反过来解释了为什么评测集一定要手工分难度——机器随机抽的 50 条,大概率全是 easy 题,测出来的全绿没有任何信息量。

四、评测口径:三条我自己定的规矩

数字会骗人,所以我给自己定了三条铁律:

  1. 50 条差 1 条 = 2 个百分点,<5 个百分点不下结论。别拿 0.64 和 0.66 去吹"提升了",那是噪声。
  2. 延迟看 p95,不看平均。平均延迟会被少数超快请求拉低,p95 才代表"最差的那批用户"体验到什么。
  3. 全量评测前先跑 5 条样本验证。脚本错了会污染所有数字,先小样验证再放量。

五、当前的 baseline 全景

hybrid 模式(当前主线)的四项基线:

指标值
recall@50.66
faithfulness(下界)0.988
abstain_rate0.20
延迟 p951464 ms
单次成本¥0.00088

这套数字我存成了机器可读的baseline.json,就是为了下一周做优化时能画出迭代曲线——每个改动往里一跑,就知道 recall 涨没涨、成本涨没涨、值不值。没有这张基线表,所有"我优化了 XX"都是空话。

小结

结论数字 / 事实
四项指标recall@5 / 忠实度 / 拒答率 / p95+成本,缺一不可
golden set 分层term25 / semantic15 / boundary5 / conflict2 / multi3
忠实度是下界0.988 抓不住"用原文词拼错误结论"
真实弱点跨文档综合全中率 0~25%
评测三铁律差1条=2%、<5%不下结论、看 p95 不看平均

*上一篇:生成端的最后一道闸。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 4:37:52

游戏引擎基础架构深度解析:从分层设计到资源管理

有朋友私信问我&#xff0c;刚接手一个自研引擎项目&#xff0c;几千个源文件摆在眼前&#xff0c;该从哪里看起。我给的答案一直是同一个&#xff1a;先看引擎的基础架构&#xff0c;也就是引擎的“骨架”。这有点像你拿到一栋复杂的建筑&#xff0c;先得搞清楚承重墙在哪、管…

作者头像 李华
网站建设 2026/10/22 0:22:41

自动测角原理和方法(同时波瓣)

同时波瓣法&#xff0c;单脉冲自动测角系统。即多个波瓣同时存在&#xff0c;理论上可以通过发射一个脉冲测得目标角度信息。单脉冲自动测角系统&#xff0c;主要包括两种方法&#xff1a;1.振幅和差式单脉冲2.相位和差式单脉冲以下介绍振幅和差式单脉冲相关内容振幅和差式单脉…

作者头像 李华
网站建设 2026/10/22 18:36:29

Pytest自动化测试框架实战:fixture、参数化与接口测试

1. 从“能跑就行”到“优雅测试”&#xff1a;为什么要选 Pytest在软件测试这条路上摸爬滚打久了&#xff0c;你会发现一个很现实的问题&#xff1a;同样的测试用例&#xff0c;有人写得像一团乱麻&#xff0c;跑起来全靠运气&#xff1b;有人写得像一份精致的说明书&#xff0…

作者头像 李华
网站建设 2026/10/21 8:04:14

职场拒绝同事的6大高情商技巧:如何礼貌说“不”而不伤和气

周五傍晚六点半&#xff0c;同事端着水杯走到我工位旁边&#xff1a;“今晚能不能帮我把这份报表改一下&#xff1f;客户明天一早就要。”我盯着屏幕上的数据&#xff0c;脑子里疯狂喊着“别答应”&#xff0c;嘴上却说出了“好”。这种场景&#xff0c;我猜你也不陌生。拒绝别…

作者头像 李华
网站建设 2026/10/21 13:22:58

AI时代升职规划:用价值升级对抗工具焦虑

近半年我常被问到这么一句话&#xff1a;“AI都这么强了&#xff0c;我再努力还有什么用&#xff1f;”问的人有刚毕业的产品助理&#xff0c;也有工作十年带团队的组长。这个问题背后&#xff0c;其实藏着一个更大的问题&#xff1a;当工具越来越强&#xff0c;人的价值到底在…

作者头像 李华