Evaluation / Evals
学到 Prompt Engineering、Context Engineering、RAG、Tool Use 和 Agent Engineering 之后,下一步非常关键的一件事,就是学会 Evaluation,也就是评估。
因为从这个阶段 开始,一个很现实的问题会出现:
- 你做了很多优化
- 改了 prompt
- 改了检索策略
- 加了工具调用
- 加了 Agent 流程
但你怎么知道系统到底是真的变好了,还是只是“看起来还行”?
这就是 Evaluation / Evals 要解决的问题。
一句话说:
Evals 的本质,是用更系统、更可重复的方式判断一个 AI 系统是否真的有效。
1. 为什么一定要学 Evals
很多 AI 项目一开始都靠“感觉”在优化:
- 试几个 prompt
- 随便问几个问题
- 觉得结果还不错
- 就以为系统好了
这在初期探索没问题,但一旦系统变复杂,就会立刻遇到几个问题:
- 你不知道哪次修改真的有效
- 不知道系统在哪些场景会失败
- 不知道优化是不是带来了副作用
- 不知道模型升级后有没有退化
- 团队里不同人对“效果好不好”理解不一致
所以 Evals 的价值就在于:
- 让优化有依据
- 让迭代可比较
- 让问题可定位
- 让质量可追踪
2. Evaluation 是什么
Evaluation 可以理解 为:用一套明确的方法,去判断模型或 AI 系统在某类任务上的表现。
它可以评估:
- 单次回答质量
- Prompt 是否更稳
- RAG 是否检索得更准
- Tool Use 是否调用正确
- Agent 是否真的完成任务
- 系统整体是否更可靠
所以 Evals 不是只评估“模型聪不聪明”,而是评估整个系统在真实任务里是不是好用。
3. Evals 在评估什么
不同系统会评不同内容,但常见会关注下面几类。
3.1 正确性
答案对不对。
这是最基础的指标。
3.2 相关性
回答是否真的针对用户问题,而不是看起来很流畅、实际答偏了。
3.3 完整性
回答有没有漏掉关键点。
3.4 稳定性
同类问题下,输出是 否一致、是否容易波动。
3.5 可依据性
回答是不是基于给定材料或工具结果,而不是模型自己编。
3.6 工具执行质量
如果系统会调工具,就要看:
- 选没选对工具
- 参数对不对
- 有没有正确使用结果
3.7 任务完成度
对 Agent 或工作流来说,更重要的是:
- 最终任务有没有完成
- 中间过程是否合理
- 有没有多余步骤
4. 为什么“看几个例子觉得不错”不够
因为 AI 系统有很强的偶然性和样本偏差问题。
比如:
- 你刚好测到了几个简单问题
- 你只测了自己熟悉的场景
- 你没有覆盖边界情况
- 模型在少数例子上表现很好,但整体并不稳
这就会导致一种很常见的错觉:
局部看起来进步了,但整体并没有真的提升。
所以评估一定要尽量系统化,而不是只靠主观印象。
5. Evals 的基本构成
一个比较完整的评估体系,通常包括下面几部分。
5.1 评估目标
先明确你到底在评什么。
例如:
- 提高问答准确率
- 降低 RAG 幻觉
- 提高工具调用成功率
- 提高 Agent 的任务完成率
5.2 测试集
也就是一批代表性的测试样本。
这通常是 Evals 里最重要的部分之一。
5.3 评分标准
你必须明确什么叫“好”,什么叫“差”。
比如:
- 完全正确
- 部分正确
- 明显错误
或者:
- 调对工具
- 参数正确
- 结果使用正确
5.4 执行方式
可以是:
- 人工评测
- 自动规则评测
- 模型评测
- 混合评测
5.5 结果分析
评估不是打完分就结束,还要看:
- 错误集中在哪类问题
- 哪种修改带来了提升
- 哪种优化引入了新问题
6. 最常见的评估方法
6.1 人工评测
由人直接看输出并打分。
优点:
- 最接近真实体验
- 能看出细微质量差异
缺点:
- 成本高
- 慢
- 主观性强
适合:
- 早期探索
- 高价值场景
- 复杂输出质量判断
6.2 规则评测
用程序规则去判断结果。
例如:
- JSON 格式是否正确
- 是否包含必填字段
- 工具参数是否符合 schema
- 是否命中了某个标准答案
优点:
- 快
- 可重复
- 便于自动化
缺点:
- 对开放式任务覆盖有限
6.3 Model-as-a-Judge
也就是“用模型评模型”。
比如让一个评审模型判断:
- 回答是否相关
- 是否忠于资料
- 是否完整
- 两个版本谁更好
优点:
- 规模化方便
- 比纯规则灵活
缺点:
- 评审模型本身也可能有偏差
- 标准不一致时会不稳定
6.4 混合评测
这是最常见也最实用的方式:
- 规则评测负责格式和硬指标
- 模型评测负责语义质量
- 人工抽样复核关键样本
7. 测试集怎么设计
很多人一提到 Evals,只想到“打分”,但真正决定评估质量的,是测试集本身。