Sherconan.

· 12 min read · LLM · Eval · AI 产品 · 金融 AI

从 0 到 1 构建企业级 LLM Eval 集:一份产品经理的实战笔记

Eval 不是事后验证工具,是 AI 产品 0→1 的发动机。本文沉淀我在企业 AI 场景与个人项目里跑通的一套 Rule-based + LLM-as-Judge + Bad Case 分类的三层 Eval 方法论。

Eval 不是事后验证工具,是 AI 产品 0→1 的发动机。

TL;DR

  • 通用 Eval(MMLU / GSM8K / HumanEval)不能验证企业场景的”答得对、答得稳、答得合规”——它们离你的真实业务太远。
  • 真正能跑通产品 → 反馈 → 迭代闭环的 Eval 集,至少要分三层:① Rule-based Scoring(机器可判定)② LLM-as-Judge(语义可比对)③ Human-in-loop(关键 case 兜底)。
  • Bad Case 分类是闭环的核心:没有清晰的失败模式分类,所有的 Prompt / Routing / RAG 优化都在拍脑袋。
  • 这套方法论我先在个人项目 AI Info Tracker(6,087 篇素材自动分档)上验证可行,再带到企业 AI 场景,逻辑可复用。

一、为什么”通用 Eval”在企业里不够用

进入大模型时代第一年,几乎所有 PM 的本能反应是”看看 MMLU 排名”或”跑一遍 GSM8K”。但在企业场景做 AI 产品,你很快会发现一个问题:

这些通用 benchmark 离你的业务有十万八千里。

  • 你做一个内部知识 Chatbot,用户问的是”上季度 X 项目的合规审批进度”——MMLU 永远验证不了这个。
  • 你做一个智能审核工具,错误答案的代价是合规事故——通用 benchmark 不会教你模型在你的语料上稳不稳。
  • 你做一个 Agent 调用内部 API——通用 benchmark 不会告诉你它在你这个 schema 下调对了没。

结论很朴素:你必须自己造一份 Eval 集。问题是怎么造。


二、Eval 集的三层结构

我把可用的 Eval 集设计为三层,从机器可判定到人工兜底,逐层下沉:

第一层 · Rule-based Scoring(机器可判定)

适合有明确正误标准的场景:分类、抽取、调用决策、字段校验。

优点:成本几乎为零、跑得快、CI/CD 能直接接。 缺点:只能验证”格式对/不对”层面,不能验证”质量好不好”。

我在 AI Info Tracker 里用的就是这层——一个 6 信号 rule-based 评级模型给每篇素材自动打分:

score = author_tier × source_tier × citation × depth × novelty × pr_penalty
  • 作者 tier:是否在维护好的 author allowlist
  • 信源 tier:博客 / 微信 / Newsletter / Podcast 各类信源的可信度权重
  • 引用度:被其他高分内容引用的次数
  • 内容深度:长文 / 含代码 / 含数据 vs. 短贴
  • 新颖度:是否复述已有信息
  • PR 扣分:明显的 PR 稿 / 推广稿降权

跑下来 6,087 篇原始素材自动分档为 ★★★ 21 / ★★ 117 / ★ 532 / skip 5,417——90% 的”靠机器分捡”已经被这一层完成。

第二层 · LLM-as-Judge(语义可比对)

适合需要语义判断的场景:摘要质量、回答相关性、风格一致性。

核心原则三条:

  1. 判官模型必须更强或同强——用 Claude Opus 评 Sonnet 输出可以,反过来不行。
  2. 判官 Prompt 必须用 rubric——不要让判官自由心证,必须给它明确的打分维度(相关性 / 准确性 / 流畅度 / 是否答非所问)。
  3. 判官输出必须结构化——{score: 1-5, reasoning: "...", failure_mode: "..."},方便聚合统计。

典型坑:判官自己幻觉。我在 LiveBoard 项目里跑过 5 轮 Autoresearch 优化,第一轮判官给了 80 分,但人工抽查发现它对”summary 字数超限”这种确定性事实判错了——后来加了一道 rule-based 前置过滤把字数硬约束兜住,再交给 judge 评语义,分数才稳到 90。

第三层 · Human-in-loop(关键 case 兜底)

适合高风险、高价值、有合规边界的场景。

我把这层留给两类 case:

  • 关键路径 case:用户最常问的 Top 100 个 query,必须人工标注 ground truth。
  • Bad case:所有 LLM-as-Judge 给低分的 case,全部进人工 review 池。

人工 review 不是”看看就行”,要做两件事:① 写 ground-truth ② 归类失败模式(见下文)。


三、Bad Case 分类:闭环的核心

如果 Eval 集是发动机,Bad Case 分类就是诊断仪。

我在企业 AI 场景里见过太多团队”模型不行就换一个、Prompt 不行就重写一遍”——但没人系统地把失败 case 归类。结果是优化方向永远在拍脑袋。

我用的失败模式分类(可按你的业务调整):

失败模式典型表现优化方向
Hallucination · 幻觉引用了不存在的来源 / 编造数字加 RAG · 加 citation 强约束 · 换更稳的模型
Off-topic · 跑题答非所问 · 跑去回答相邻问题Prompt 强化 task focus · 加 query rewriting
Format · 格式错JSON 不合法 · 字段缺失 · 字数超限Prompt 加 schema 约束 · 后处理兜底
Incomplete · 不完整只答一半 · 漏关键步骤拆 chain · 加 self-check
Overconfident · 过度自信不会的也敢答加 abstain · 加 confidence threshold
Routing · 路由错用错了模型 / 工具Multi-model routing 重新设计
Compliance · 合规越界给出禁止建议 / 涉及合规红线Guardrails · constitutional prompting

每个 Bad Case 必须打上一个或多个标签。然后每周看一次 dashboard:哪类失败模式占比最高,下周优化就打哪。


四、Regression Testing · 别让旧 bug 复活

Eval 集做到这里还差最后一块:回归测试。

每次改 Prompt / 换模型 / 调 Retrieval 配置,必须把所有历史 bad case 跑一遍——确认旧问题没复活。

我在 LiveBoard 上跑了 5 轮 Autoresearch 优化(score 80 → 90 → 90),每一轮都跑完整 regression suite。最折腾的一次是 Polymarket 官方搜索接口挂了,我改成本地关键词匹配 Top 50,结果发现 summary 长度的 regression 全亮——因为新数据流走 prompt 路径变了。没有回归测试这一层,这种”改 A 坏 B”的 bug 会上线后被用户当面打脸。


五、对产品经理的三条 Takeaway

  1. Eval 集是 AI 产品的核心资产,不是工程师的私事。 PM 必须主导 rubric 设计、bad case 分类、failure mode 监控——这些都是产品决策。
  2. 从能机器评的部分先开始。 不要追求”一上来就 LLM-as-Judge 全场景覆盖”——先把 rule-based 这层吃干榨净,覆盖 70-80% 的 case,剩下的再上 judge 和人工。
  3. Eval 不是一次性工作。 它跟着你的产品迭代——新场景 = 新 case · 新模型 = 新 bad case · 新合规要求 = 新 rubric。把 Eval 集当代码一样版本化,每个 release tag 都能 reproduce。

后记

我的所有个人 AI 项目(AI Info Tracker / WeekendGo / LiveBoard / LLM Wiki)都开源在 github.com/sherconan。如果你想看一份 6 信号 rule-based scoring 的具体实现,AI Info Tracker 仓库的 classify/ 目录就是。

下一篇我会写《企业 AI Multi-Model Routing 决策框架》——为什么单模型方案不够、跨 Claude / GPT / Gemini / DeepSeek / Kimi / Qwen / GLM 七家模型怎么做 Routing 的工程化实践。

如果你也在做 AI 产品,对 Eval / Routing / Agent 架构这些话题有共鸣,欢迎邮件 shinyashokudo@163.com。

—— 刘鹏洋 · AI Builder · AI Product Manager · 北京

← 全部文章