AI 评测系列(02):评测指标设计——从业务目标到可量化指标

指标缺失时会发生什么

一个 RAG 问答系统上线了。工程师说"测试都通过了"------API 响应时间 < 2 秒,格式正确,没有崩溃。

两周后用户反馈说"AI 经常答非所问"。排查后发现:检索召回率只有 40%,超过一半的用户问题找不到相关文档。

这个问题上线前就存在。没有人设计过"检索质量"这个指标,所以没人看到它。


L1/L2/L3 三层指标框架

指标按层次组织,对应不同的问题类型:

sql 复制代码
L1 --- 业务结果(Business Outcome)
  最终目标:AI 系统是否在创造价值?
  示例:任务完成率、用户采纳率、用户满意度

L2 --- 输出质量(Output Quality)
  中间层:AI 的输出本身质量如何?
  示例:准确性、相关性、完整性

L3 --- 系统健康(System Health)
  基础层:系统运行是否稳定?
  示例:响应时延、Token 消耗、失败率

三层的依赖关系:

复制代码
L3 不健康 → 影响 L2(超时导致输出截断)→ 影响 L1(任务失败)
L3 健康但 L2 差 → L1 仍然低(用户不采纳低质量输出)
三层都健康 → L1 才真正有价值

告警时从 L3 往上排查,比从 L1 往下倒推快得多。


四类场景的指标选择

场景 1:文档问答(RAG)

sql 复制代码
L3 系统健康:
  响应时延 P90         → < 5s
  Token 消耗/次        → < 3000
  检索失败率           → < 1%

L2 输出质量:
  Faithfulness         → 回答有没有编造,基于检索内容(RAGAS)
  Answer Relevancy     → 回答有没有回答问题(RAGAS)
  Context Precision    → 检索结果里有用的占比(RAGAS)
  Context Recall       → 相关内容有没有都检索到(RAGAS)

L1 业务结果:
  任务完成率           → 用户标记"解决了问题"的比例
  采纳率               → 用户复制/引用了 AI 回答的比例

关键指标: Context Recall(检索召回率)是 RAG 系统最容易被忽略又最重要的指标。检索没找到,生成再好也没用。

场景 2:代码生成

复制代码
L3:
  响应时延 P90   → < 10s(代码生成比问答慢,阈值适当放宽)
  超长输出率     → 避免生成远超需要的代码量

L2:
  语法正确率     → 生成代码能否通过解析器(可自动化)
  测试通过率     → 生成代码能否通过单元测试(可自动化)
  代码可用率     → 人工评估:生成代码需要多少修改才能用
  安全扫描通过率 → 生成代码是否包含已知安全漏洞(可自动化)

L1:
  采纳率         → 用户接受了 AI 建议的比例
  修改幅度       → 用户修改了多少(修改越少质量越高)

关键指标: 测试通过率可以完全自动化,是代码生成 L2 的核心指标。自动化程度高,适合接入 CI。

场景 3:文档摘要

csharp 复制代码
L2:
  Faithfulness     → 摘要没有引入原文没有的内容(最重要)
  覆盖率           → 原文关键要点有没有出现在摘要里
  简洁性           → 摘要是否明显比原文短(否则没有价值)
  阅读流畅度       → LLM-as-Judge 评估

关键指标: Faithfulness(忠实度)。摘要最大的风险是"补充"了原文没有的信息(幻觉),这比遗漏某个要点更有害。

场景 4:Agent 任务完成

csharp 复制代码
L2:
  工具调用准确率   → 选了正确工具、参数正确(可自动化)
  步骤效率         → 完成任务用了多少步(步数越少越好)
  轨迹质量         → 推理过程是否合理(LLM-as-Judge)

L1:
  任务完成率       → 最终任务有没有完成(核心)
  首轮解决率       → 不需要追问即完成的比例

关键指标: 任务完成率是 Agent 评测的核心 L1 指标,但需要定义清楚"完成"的标准------产出物存在 vs 产出物质量达标,是不同的要求。


常见陷阱

陷阱 1:只测 L3

erlang 复制代码
✗ 错误做法:
  "API 没有报错,延迟 1.2 秒,这个版本可以上线。"

问题:L3 健康不等于系统有价值。上线那个 RAG 系统的案例
     就是这样------L3 完全正常,但 L2 的检索召回率只有 40%。

每次发布至少要看一次 L2 的抽样评测结果。

陷阱 2:用 BLEU/ROUGE 评测语义质量

python 复制代码
# 看起来合理
rouge_score = rouge.compute(predictions=[output], references=[reference])

# 实际问题:
reference = "The capital of France is Paris."
output_1  = "Paris is the capital city of France."  # 语义相同,ROUGE 低
output_2  = "The capital of France is Paris, the capital."  # 字面重复,ROUGE 高

# ROUGE 给 output_2 更高分,但 output_2 明显更差

BLEU/ROUGE 测词汇重合度,不测语义正确性。对于生成式输出,用 LLM-as-Judge 替代。BLEU/ROUGE 只适合评测机器翻译这类有标准参考答案的任务。

陷阱 3:阈值凭感觉定

vbnet 复制代码
✗ 错误:
  "我们定 Faithfulness > 0.8 作为质量门控。"
  (为什么是 0.8?因为听起来合理。)

✓ 正确:
  Step 1:先跑 100 个样本,得到当前基线(比如均值 0.73)
  Step 2:看 Faithfulness < 0.6 的样本,人工判断是否可接受
  Step 3:根据人工判断结果定阈值(比如 0.65)
  Step 4:阈值要写清楚"低于此值的样本不可接受"的依据

阈值不是凭感觉或对齐经验值,而是从数据分布和业务可接受性倒推出来的。


企业文档问答系统的完整指标体系示例

yaml 复制代码
# eval_metrics.yaml
system: document-qa
version: "1.0"

metrics:
  l3_system_health:
    - name: response_latency_p90
      target: "< 5000ms"
      collection: trace_log
      alert_threshold: 8000ms

    - name: token_cost_per_query
      target: "< 2000 tokens"
      collection: llm_callback
      alert_threshold: 4000

    - name: retrieval_error_rate
      target: "< 1%"
      collection: error_log

  l2_output_quality:
    - name: faithfulness
      tool: ragas
      target: "> 0.80"
      collection: weekly_sampling (n=100)
      alert_threshold: 0.70

    - name: answer_relevancy
      tool: ragas
      target: "> 0.75"
      collection: weekly_sampling

    - name: context_recall
      tool: ragas
      target: "> 0.70"
      collection: weekly_sampling
      note: "最重要的检索质量指标"

    - name: format_compliance
      tool: rule_check
      target: "100%"
      collection: every_request

  l1_business_outcome:
    - name: task_completion_rate
      target: "> 70%"
      collection: user_feedback_widget
      note: "用户点击'解决了我的问题'的比例"

    - name: adoption_rate
      target: "> 50%"
      collection: behavior_tracking
      note: "用户复制/引用 AI 回答的比例"

指标体系建立路线图

复制代码
第一步(立即可做,不需要工具):
  □ 写下这个 AI 系统的核心业务目标(L1 是什么)
  □ 列出 3-5 个最重要的 L2 输出质量维度
  □ 确认 L3 的基本监控(延迟、错误率)

第二步(1 周内):
  □ 用 50 个真实用例手动评测,得到每个 L2 指标的基线数字
  □ 根据基线数字,定出合理的阈值(不是凭感觉)

第三步(持续):
  □ 每次发布前跑 L2 抽样评测,与基线对比
  □ 每月看一次 L1 数据(是否与 L2 变化一致)

总结

  1. L1/L2/L3 各有分工:L3 监控系统稳定性,L2 评测输出质量,L1 验证业务价值;三层都要有,缺任何一层都会有盲区
  2. 场景决定关键指标:RAG 系统最重要的是 Context Recall,代码生成最重要的是测试通过率,Agent 最重要的是任务完成率------照搬其他系统的指标不一定适合自己
  3. 阈值要从数据来:先跑基线,再定阈值,不要先定阈值再用数据倒推理由

欢迎访问 PrimeSkills ------ 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。

更多实用知识和有趣产品,欢迎访问我的个人主页

相关推荐
IT_陈寒6 小时前
JavaScript的异步地狱里,我的Promise掉进了微任务陷阱
前端·人工智能·后端
小小测试开发6 小时前
RAG检索评测实战:9种架构对比与自动化评估框架搭建
运维·人工智能·python·自动化
love530love6 小时前
【硬核排障 & 猴子补丁 & 幽灵节点】SageAttention GQA 崩溃与 Flash Attention 兼容性修复全记录
ide·人工智能·windows·comfyui·sageattention·windows cuda
小保CPP6 小时前
OCR C++ Tesseract从OpenCV中获取图片
c++·人工智能·opencv·ocr·模式识别·光学字符识别
dreamread6 小时前
2026不用联网也能用的八字排盘工具怎么选:离线记录、同步和删除要分开看
人工智能·软件工具·传统文化
Vaxmzzy6 小时前
AI直播技术持续迭代 萤瓴AI探索无人直播智能化落地新路径
大数据·人工智能
jjh+++(求关注版)6 小时前
Vibe Coding 开发流程:一套可照着执行的 AI 项目开发使用说明书
人工智能
薛定e的猫咪6 小时前
在 vibe coding开发项目过程中使用过的命令和概念整理
人工智能·学习·算法·开源
OpenApi.cc6 小时前
tiktok-person-detection || tiktok-scene-detection
人工智能·深度学习·神经网络·目标检测·数据挖掘