做大模型应用最怕一句话:「效果好像变好了?」——「好像」不是证据。这篇讲我怎么把 LLM 应用的评测做成可复现、可对比的方法论,而不是靠感觉。

一、先拆层:别混着测

LLM 应用通常分两层,必须分开测,否则你永远不知道问题在哪:

  • 检索层(RAG 类):检索准不准?召回全不全?切块对不对?
  • 生成层:答案对不对?有没有幻觉?有没有引用?

我曾修过 RAGFlow 的检索调参(见 检索调参实录),核心动作就是先把检索层单独测准(召回@k、空结果率),再动生成。

二、检索层指标

  • 召回率 @k:正确答案是否在前 k 条里——衡量「漏没漏」;
  • 空结果率 / 软失败率:返回 200 但啥都没有,这是头号人为坑,必须单独埋点;
  • 切块正确率:答案是否被切坏、是否跨段。

经验:检索层的指标大多能自动化批量跑,用黄金问答集(问题→应有段落)一键出分。

三、生成层指标

  • 忠实度(Faithfulness):答案是否都来自检索内容,有没有编;
  • 答案相关性:是否真的回答了问题;
  • 无害性 / 合规:要不要看业务而定。

这些主观指标,用 LLM-as-judge 做初筛:让一个强模型按 rubric 打分。但必须人工校准——我踩过的坑是 judge 模型也有偏好,先抽 50 条人审,和 judge 分数对齐后再放大批量。

四、端到端:黄金集 + 回归测试

最关键的一步:攒一个固定黄金问答集(几十到几百条),每次改了 prompt / 检索策略 / 模型,都跑同一套集子,对比分数。

  • 像单元测试一样,改完立刻知道「哪类问题退步了」;
  • 分数变化要能定位到哪一层;
  • 我把它当成 RAGFlow 改动后的「回归测试方法论」来用,避免改一处崩一片。

五、在线指标:用户用脚投票

离线分再高,线上才是真相:

  • 复用率:用户是否采纳/追问,比点赞真实;
  • 首答满意度:对话里用户是否立刻纠正;
  • 人工抽检:定期看真实会话,发现离线测不到的case。

六、指标骗人的几种姿势

  1. 只看平均分,没看最坏情况——长尾问题可能全错;
  2. LLM-judge 没校准,分数虚高;
  3. 黄金集太简单,分高但线上翻车;
  4. 拿「生成流畅」当「答案正确」——流畅的幻觉最危险。

小结

评测的本质是把「感觉」变成「可对比的数字」。分层测、攒黄金集、LLM-judge 配人工校准、看在线复用率——这套方法论跑通后,你每次改动都有底气说「确实变好了」,而不是「好像」。