如何建立一套完整的大模型评估体系?
简化版
完整的大模型评估不能只看一个榜单分数,要同时覆盖基础能力、任务效果、事实性、安全性、鲁棒性、系统效率。正确顺序是——先根据业务风险定义成功条件,再选数据和评分器,最后做离线回归 + 线上监控,并为每次模型/Prompt/数据/工具变更做回归。核心认知:公开榜单只回答”模型在哪些题上得分”,代替不了业务验收。
详细版
评估分四层:
- 模型层:知识、推理、代码、长上下文、指令遵循、多语言;
- 应用层:任务成功率、引用正确性、工具调用、业务规则;
- 安全层:有害输出、Prompt Injection、隐私、偏见、过度拒答;
- 系统层:延迟、吞吐、稳定性、成本、可观测性。
能用代码验证的优先确定性评分;开放式答案再用人工或校准后的 LLM Judge。公开 Benchmark 横向参考,上线决策以私有业务集、长尾失败集、安全红队集为主。
完整版教学
一、从用途和风险开始(不是从榜单开始)
一个高频错误是「先找一组流行 Benchmark,再解释分数」。正确做法反过来——先定用途和风险:
同一个模型,用途不同,成功标准和错误代价完全不同:
文案生成:错了改改就好(低风险)
客服:错误答复影响体验(中风险)
医疗辅助:错误可能致命(高风险,需硬门槛+人工兜底)
评估前先明确:用户、输入分布、允许动作、不可接受的失败、人工兜底。高风险能力要设硬门槛,不能被其他维度的平均高分抵消。
二、能力矩阵:把能力拆成可定位的子项
别用一个总分,把能力拆开,每项配四类样本:
| 能力子项 | 样本类型 |
|---|---|
| 事实检索、数字计算、格式遵循、拒答、长上下文证据使用、工具参数正确性 | 正常 + 边界 + 对抗 + 不可回答 |
HELM 一类整体评估强调同时报告准确性、鲁棒性、公平性、效率等多维度,避免单指标排名掩盖差异。总分相同的两个模型能力结构可能完全不同。
三、评分器选择(能确定就别用 LLM)
| 内容 | 评分器 |
|---|---|
| 精确答案、JSON Schema、代码测试 | 确定性程序 |
| 多个合法表达 | 语义匹配或带量规的 Judge |
| 主观质量、高风险内容 | 训练过的人工评审 |
| 安全漏洞 | 规则 + 分类器 + 人工红队 + 执行层验证组合 |
关键:评分器本身也要评估——抽样算它和专家的一致性、误报、漏报。
四、数据集设计与防泄漏
测试集要代表真实流量,按场景/语言/长度/用户群/风险分层。关键纪律:
保留【独立开发集】和【最终测试集】分开
→ 持续调 Prompt 时只用开发集,避免把测试集变成"训练信号"(污染)
线上失败 → 脱敏 + 复核 → 进回归集,记录来源、版本、预期行为
五、版本与复现
固定模型版本、系统提示、采样参数、工具、检索库、评分器、随机种子,保存原始输入输出和 Trace——才能解释「分数变化来自模型还是应用链路」。报告除平均值外,还要给分组结果、样本数、不确定性。
六、常见误区与追问
- 误区:评估就是刷公开榜单分数。 榜单只答”哪些题得分”,代替不了业务验收,要私有业务集+安全集。
- 误区:一个总分能代表模型好坏。 能力是多维的(HELM 思想),总分相同结构可能天差地别,要分子项看。
- 误区:高风险能力可以被平均分抵消。 高风险要设独立硬门槛,不被其他维度平均掉。
- 误区:所有评估都用 LLM Judge。 能确定就用确定性评分(Schema/代码/精确匹配),Judge 只用于开放式且要校准。
- 误区:用测试集调 Prompt 没关系。 会把测试集变训练信号(污染),要用独立开发集。
- 追问:评估的正确顺序? 先定风险和成功条件 → 再选数据和评分器 → 最后离线回归 + 线上监控。
- 追问:评估分哪几层? 模型层、应用层、安全层、系统层。
- 追问:评分器怎么选、要注意什么? 能确定用确定性、多表达用 Judge、主观/高危用人工;评分器本身要测和专家的一致性。
七、加强记忆
大模型评估记「先定风险和成功条件,再选数据与评分器,最后离线回归 + 线上监控」:四层(模型/应用/安全/系统)、能力拆成可定位子项配四类样本(正常/边界/对抗/不可回答)、能确定就用确定性评分(评分器本身也要和专家校准)。三条纪律钉死:公开榜单代替不了业务验收、高风险能力设独立硬门槛(不被平均分抵消)、用独立开发集调 Prompt(别污染测试集)。固定全部版本 + 保存 Trace,报告要给分组结果和不确定性。