TT Lab
开始
学习 学习路径 课程

LLM 工程

评估 — 靠数字判断,不靠体感

在 TT Lab 中继续学习

一句话总结

没有评估集,就无法判断 LLM 应用是否得到改进;幻觉不是可以彻底消除的缺陷,而是必须管理的风险。

为什么需要这些知识

修改提示词后,感觉效果变好了。真的如此吗?如果只运行十次就作出判断,那只是样本量为十的实验,也无法知道修改后的提示词是否破坏了其他类型的输入。

传统软件拥有测试。输入对应的预期输出是确定的,只需比较是否一致。LLM 每次的输出都会略有不同,“正确”的标准也不止一个,因此必须设计评估方法本身。

它是如何运作的

把评估分成三个层级,就容易理清。

第一层:能够确定性检查的事项。 输出是否为有效 JSON、是否包含必填字段、数字是否在规定范围内、是否出现禁用词。这类检查成本低且结果明确,应最先自动化。大量格式错误都能在这一层被发现。

第二层:存在标准答案的事项。 分类、提取等预期输出明确的任务,可以用准确率和 F1 衡量。RAG 的检索阶段也属于这一层。只要有标准文档列表,就能计算 Recall@K 和 MRR。这是成本最低、最容易找到改进空间的一层。

第三层:需要判断的事项。 回答是否忠实、是否有帮助、语气是否恰当。人工评估是基准,但成本高、速度慢,因此使用模型作为评判者的方法已被广泛采用。需要注意的是,模型评判存在偏爱较长回答的倾向,也有研究发现模型往往更宽容自己生成的答案。因此,至少要验证一次它与人工评估的相关性,并把评判标准拆成具体检查清单,这样会更稳定。

把幻觉分成两类后,应对方式也会不同。

在实际工作中会是什么样

评估集不必完美。哪怕只有 50 条,也远胜于完全没有。 可以从收集真实用户提问中失败的案例开始。每次发生事故,就把对应案例加入评估集;随着时间推移,它作为回归测试的价值会不断提高。

成本同样需要管理。如果每次提交都运行全部评估,费用会很高。可以始终运行低成本的第一层检查,而把昂贵的第三层评估只安排在部署之前。

最后还要谈到温度设置。评估时降低温度、减少波动,更有利于比较。但如果评估设置与生产设置不同,就必须考虑这种差异;若生产环境使用较高温度,则应多次运行,并同时观察结果的方差。

减少幻觉的顺序

“请消除幻觉”这一要求无法通过更换模型解决,而要通过结构降低风险。

1. 提供依据(RAG)。 不要只依赖模型已有的知识,应同时放入文档。仅此一项就能显著减少事实错误。但如果检索结果错误,就会变成有依据的谎言,因此检索质量直接决定回答质量。

2. 要求引用依据。 要求每句话标注来源片段编号,就能筛除没有引用的句子,也更便于人工验证。

{"answer": "환불은 7영업일 안에 가능합니다 [2].",
 "citations": [{"id": 2, "quote": "환불 요청은 결제일로부터 7영업일…"}]}

3. 不知道时明确说不知道。 在系统提示词中明确规定:“如果提供的文档中没有答案,请回答‘无法从文档中确认’。”如果不加入这条要求,模型总会尝试编造某些内容。

4. 接入验证器。 用程序确认回答中的引用是否真实存在于文档。不存在的引用本身就是幻觉证据。

如何衡量幻觉

指标 衡量方法 自动化
引用准确度 引用的句子是否存在于原文 可通过字符串比对实现
依据忠实度 回答中的主张是否得到文档支持 LLM 评判
拒答率 回答不知道的比例 自动
错误拒答 明明能够回答却说不知道的比例 评估集有标准答案,因此可自动计算

最后一行非常重要。如果过度强调回答不知道,模型连能够回答的问题也会回避。必须同时观察两个指标,才能取得平衡。

评估集中必须包含的内容

第二类和第三类最能暴露幻觉。如果评估集只收集模型擅长的问题,分数会很高,实际系统却仍然不断编造内容。

在后续测验中要确认什么

你将确认自己能否判断哪些事项应在哪一层衡量,以及如何处理模型评判的偏差。