第 11 章 · 工程
评测、安全与幻觉
建立从离线数据集、自动裁判到线上监控的评测体系,并理解常见安全风险。
学习准备与本章目标
- 开始前
- 了解训练、RAG 与 Agent 基本流程
- 学完后
- 为一个场景设计多维指标 · 识别 LLM-as-Judge 偏差 · 区分模型风险与系统风险
本章路线图
评测的任务不是给模型排一个总分,而是证明系统在明确场景中是否达到质量、成本与安全要求。本章从需求拆解到离线集、自动裁判、红队和线上监控,建立一套可持续回归的评测体系。
为什么不存在一个万能分数
语言任务往往有多个正确答案。准确率、事实性、相关性、格式遵循、延迟、成本与安全彼此不同,甚至互相冲突。评测必须先定义真实用户和失败代价,再选择指标。
通用基准适合观察基础能力,领域数据集检验目标场景,线上反馈反映真实分布。只优化公开榜单容易过拟合,且可能忽略业务中最重要的长尾错误。
自动评测与 LLM-as-Judge
规则评测稳定且便宜,适合格式、数值或可执行代码;模型裁判能处理开放回答,却可能偏好更长文本、特定写作风格或与自身相似的答案,也会受位置和提示影响。
使用模型裁判时,应随机交换候选顺序、明确评分量表、保留理由,并用人工标注校准一致性。高风险决定不能只交给单一自动裁判。
幻觉从哪里来
模型的目标是生成高概率序列,不是验证事实。参数知识缺失、问题含糊、上下文错误、检索失败、工具返回异常和过度自信提示都可能造成幻觉。
缓解要分层:需要实时事实时检索或调用工具;要求引用时验证引用与原文;信息不足时允许澄清或拒答;关键结论使用确定性校验。不要把“请不要幻觉”当成系统设计。
安全是端到端系统属性
风险包括有害内容、隐私泄露、提示注入、越权工具调用、数据投毒和供应链问题。模型侧可以训练拒答,系统侧仍要做身份、权限、输入输出检查、秘密隔离、审计和速率限制。
安全评测要同时测“该拒绝时是否拒绝”和“正常请求是否被误拒”。上线后继续监控真实失败,因为攻击方式、用户分布和外部工具都会变化。
从产品要求变成评测维度
先写用户、任务、输入分布、可接受输出和失败后果。例如客服摘要可能要求事实完整、字段准确、无敏感信息、5 秒内返回且成本受控。
把模糊的“回答要好”拆成:正确性、完整性、相关性、证据忠实度、格式遵循、风格、拒答、安全、延迟和成本。每个维度都要说明如何判定、谁来判定、容忍什么错误。
高风险任务需要把严重错误单独计数,不能用大量简单样本的平均分掩盖。例如医疗建议中一次危险错误,不能被九十九次措辞流畅抵消。
测试集怎样建立
测试集应来自真实流量抽样、领域专家设计、历史事故和针对性合成。要覆盖常见请求、长尾、边界、对抗、无答案和输入损坏,并按业务类别分层报告。
训练、调参和最终验收数据必须隔离。若团队持续查看某个测试集并针对它修改提示词,它事实上已成为开发集,需要保留新的盲测集。
每条样本至少记录输入、参考答案或评分标准、元数据、风险级别和来源。参考答案不一定唯一,开放任务更适合使用 rubric 描述必须包含与禁止出现的内容。
确定性指标与语义指标
分类和结构化抽取可使用准确率、Precision、Recall、F1、JSON Schema 通过率;代码可运行测试;数学可验证最终答案。摘要与开放问答则需要语义或人工评分。
BLEU、ROUGE 等字面重合指标适合特定任务,但可能惩罚含义正确的改写。Embedding 相似度能容忍改写,却可能忽略事实细节。指标要与失败定义一致,不能因为容易计算就作为唯一目标。
RAG 还应分开测召回和生成,Agent 则要测工具轨迹。端到端失败率不能告诉你应该修哪一层。
LLM-as-Judge 怎样设计
自动裁判适合规模化评估开放回答。应给出明确 rubric、必要上下文和结构化评分,最好要求按独立维度评分,而非只问“哪个更好”。
常见偏差包括位置偏差、偏爱长回答、偏爱自身风格、被候选中的指令注入,以及无法验证外部事实。可以交换候选顺序、多裁判复核、隐藏模型身份,并用人工标注集校准相关性与一致性。
裁判模型升级、提示词修改和解码变化都会改变分数,必须版本化。自动裁判只能降低人工成本,不能成为没有校准的真值来源。
统计不确定性与显著性
样本量小时,几分差异可能来自随机波动。应报告置信区间或 bootstrap 区间,并对同一批样本做配对比较。只看总体平均还会掩盖某些领域显著退化。
生成模型存在采样随机性。固定 seed 能帮助复现,但真实应用若使用采样,应对关键样本重复运行,观察通过率与方差。线上 A/B 则要控制用户、时间与流量分布。
幻觉的类型与定位
- 参数性幻觉:模型从权重生成错误事实。
- 上下文不忠实:给了正确资料,却回答与资料冲突。
- 引用幻觉:引用不存在或来源不支持陈述。
- 工具幻觉:声称调用成功或编造工具结果。
- 推理错误:事实输入正确,但计算或逻辑链错误。
不同类型需要不同修复:实时事实用检索,引用要做对应验证,工具结果由执行层提供,计算可接确定性程序。统一要求“不要幻觉”无法定位根因。
拒答与校准
可靠系统需要在证据不足时表达不确定、请求澄清或拒答。评测要同时包含可回答与不可回答样本,测正确回答率、正确拒答率和过度拒答率。
模型口头说“我有 90% 把握”通常未经校准。更可靠的置信信号可来自检索覆盖、验证器、多个采样一致性和任务特定模型,但仍需在目标分布上校准。
从威胁模型开始做安全
先列出资产、攻击者、入口与允许操作:系统提示、用户数据、API 密钥、工具权限、向量库和日志分别可能怎样被访问。随后设计模型、应用和基础设施三层控制。
- 模型层:安全训练、拒答与内容分类。
- 应用层:身份、授权、输入输出校验、人工确认、秘密隔离。
- 基础设施层:网络边界、速率限制、审计、依赖与供应链管理。
提示词不是权限系统。即使模型被诱导,也应因执行层没有权限而无法完成越权操作。
红队与对抗测试
红队用例应覆盖直接越狱、编码混淆、多轮诱导、间接提示注入、数据外泄、工具越权和资源消耗。RAG 系统还要测试恶意文档,Agent 系统要测试危险参数和重复副作用。
攻击成功后不仅增加一条提示词规则,还要定位缺失的系统控制,并把样本加入回归集。过度针对固定措辞可能只让模型记住攻击模板。
上线后的监控与反馈
离线测试无法覆盖真实分布。线上至少监控错误率、拒答率、工具失败、引用验证、延迟、成本、用户反馈和安全事件,并对敏感内容做合规脱敏。
输入分布、模型版本、知识库和工具都在变化,需要检测漂移。高风险失败应能追溯到模型、提示、检索、工具和配置版本,同时保留回滚能力。
建立发布门禁
每次模型、提示词、Tokenizer、检索或工具变更都运行同一套核心回归,并针对改动增加专项集。发布条件可以包括:关键任务不退化、严重安全失败为零、延迟与成本在预算内、人工抽检通过。
评测结果应输出分桶差异和失败样本,而不只是总分。最终目标是指导修复和风险决策,而不是生成一张漂亮排行榜。
章末检查
- 为一个知识库问答系统列出五个独立评测维度。
- 什么情况下精确匹配比 LLM 裁判更可靠?
- 如何验证裁判模型没有明显位置和长度偏差?
- 参数性幻觉、引用幻觉和工具幻觉分别怎样修复?
- 为什么安全评测必须同时检查过度拒答?
延伸资料
本章进阶内容
原理专题与代码实践
完成主教材后,按顺序阅读原理专题、完成代码实践,并用掌握标准复查本章内容。
- 01
先按能力、任务和风险拆评测目标
- 02
深入自动指标、人评、污染、幻觉与安全
- 03
构造固定评测集和错误标签体系
- 04
把离线分数连接到发布门槛与回归流程
代码实践
本章术语
六个关键词
- Rubric
- 把开放任务拆成明确评分维度和判定标准的规则。
- LLM-as-Judge
- 使用语言模型按 rubric 评价候选输出。
- 数据污染
- 训练数据包含评测题或近似答案,导致指标失真。
- 过度拒答
- 模型错误拒绝本应正常回答的安全请求。
- 红队测试
- 主动设计对抗输入以发现安全薄弱点。
- 发布门禁
- 变更上线前必须满足的一组质量和风险条件。
章节记录
