返回 RAG 工程实战目录

评测指标与评测集建设

建立金标、指标基线和回归评测机制

生命周期 · 阶段五 测试与验收(效果评测) | 上游:测试策略(08)| 下游:部署上线(10)

RAG 测试区别于传统功能测试的核心:用指标量化"效果",用评测集保障回归。没有评测集的 RAG 优化全凭感觉,改一处不知道是变好还是变坏。

一、评测集建设

1. 构建方法

方法说明
人工编写测试/业务专家从文档出题,质量最高,成本高
LLM 辅助生成用 LLM 从切片反向生成候选问题与答案,再由人工按风险分层审核;不能把生成样本直接当金标
线上真实问题回流上线后收集真实 query + 用户反馈,最有价值
竞品/搜索日志补充问法多样性

2. 先由人工建立标准,再拆分数据集

第一步不是让 AI 自己出题、自己判分,而是由业务专家、测试人员和知识库维护者共同准备一批代表性原始样本,逐条形成可核验的标准答案。每条金标至少应包含:

  • 用户问题及允许的同义问法;
  • 标准答案与可接受答案范围;
  • 支撑答案的原文、文档版本、页码或切片 ID;
  • 必须命中的关键点、允许省略项和禁止出现的错误;
  • 库内无答案时的预期拒答行为;
  • 问题类型、难度、风险等级和人工审核人。

完成双人复核或业务签字后,这批记录才成为金标集。金标是评分依据,不等于所有记录都可以同时用于训练和最终验收。为了避免 AI “见过答案”后产生虚高结果,应按问题族或文档来源拆成互不泄漏的数据集:

数据集用途是否可用于调优要求
金标母集保存人工标准答案、证据和评分规则不直接作为一个整体使用版本化、可追溯、经过人工复核
训练/调优集把用例提供给 AI,用于提示词迭代、Few-shot、微调或参数选择可以每次使用都记录版本和变更
开发验证集调优过程中快速比较方案可以反复评测,但不能作为最终结论与训练问题避免同题和近重复
独立验收样本集(测试集)检查调优后对未见问题的识别与回答能力不可以在方案冻结前保持隔离,只用于阶段验收与回归

如果团队习惯把“喂给 AI 的用例”叫测试集、把最终检查数据叫样本集,也应在文档中明确标注:前者实质是训练/调优集,后者实质是独立验收集。否则很容易把训练成绩误当成泛化能力。

3. 评测集规模建议

  • 起步:100~200 条(覆盖核心文档与问题类型)
  • 成熟:500+ 条,按类型分层抽样
  • 每条包含:问题、标准答案、命中的标准切片(golden chunks)、问题类型、难度

4. 问题类型配比(示例)

类型占比考察点
事实型40%基础召回
流程型20%多步信息组织
对比/跨文档型15%多切片整合
同义改写型10%语义检索鲁棒性
超纲型15%拒答与幻觉控制

5. 以 90% 为验收线时怎么计算

“识别度 ≥ 90%”必须先写成可计算的口径。例如把独立验收样本集中的每道题按关键点评分,只有同时满足“意图识别正确、关键事实达到要求、引用支持答案、没有禁止错误”才算通过:

综合通过率 = 完全通过的独立验收用例数 / 独立验收用例总数 × 100%
目标:综合通过率 ≥ 90%
同时设置单项门槛:超纲题拒答正确率、关键事实准确率、高风险题通过率

90% 只是项目示例,不应直接套用。样本数量过少时,偶然通过 9/10 不能证明系统稳定;应按风险和问题类型分层准备足够样本,并报告样本数、失败数和置信区间。高风险业务还应要求关键类别单独达标,不能让大量简单题稀释少数严重错误。

二、档案清洗与 OCR 评测集

扫描档案进入 RAG 前,还需要一套面向材料清洗、版面解析与 OCR 识别的评测集。它回答的是“原始材料是否被完整、正确地转换成可检索文本”,不能由后面的问答正确率代替。OCR 漏掉一页或识错关键编号,即使模型回答流畅,结果仍然不可信。

1. OCR 金标如何标注

标注人员应对照原始扫描图,而不是把 OCR 初次输出当作标准。每份样本保留原图、人工转写、结构标注、审核记录和版本信息:

评测对象人工金标内容重点错误
文字识别逐行正确文字、段落与阅读顺序错字、漏字、多字、乱码、顺序颠倒
关键字段姓名、日期、档案号、金额、机构等字段及位置字段识错、漏提取、字段串位
表格表头、行列、单元格内容、合并关系行列错位、合并丢失、数值归错栏
版面区域标题、正文、页眉页脚、批注、印章、图片区域区域误判、正文与噪声混合
材料清洗应保留、删除、去重和纠错的预期结果误删正文、保留水印噪声、错误去重
文档完整性文件归属、总页数、页码、页序与跨页关系漏页、重复页、错序、串档
不可辨识内容模糊、遮挡、缺损区域及待人工确认标记无依据猜测、把不确定内容当确定结果

关键档案字段建议双人独立标注,发生分歧时由业务专家裁决。涉及个人信息的样本应脱敏并限制访问;脱敏后的训练样本与原始档案仍要用受控 ID 保持可追溯关系。

2. 样本覆盖与拆分

样本应覆盖清晰扫描、低分辨率、倾斜旋转、阴影折痕、手写体、繁体字、生僻字、印章遮挡、复杂表格、多栏排版和跨页内容。按档案类型、年代、扫描设备和质量等级分层抽样,避免评测集只包含容易识别的页面。

同一份档案的相邻页、重扫件、裁剪件和近重复材料必须进入同一个数据分组,再按组拆分训练/调优集与独立验收集。否则模型可能在训练时见过同一页的另一个版本,导致验收成绩虚高。

3. OCR 验收指标

“OCR 识别率 ≥ 90%”过于笼统,应同时报告以下指标,并由业务风险确定门槛:

指标计算或判定意义
字符错误率 CER(替换 + 删除 + 插入字符数)/ 金标字符数,越低越好衡量整体文字转写质量
词错误率 WER(替换 + 删除 + 插入词数)/ 金标词数,越低越好适合有稳定分词口径的文本
关键字段准确率完全正确的关键字段数 / 应识别关键字段数防止总体正确但档案号、金额等关键值错误
表格结构正确率行列、表头、合并关系全部正确的表格占比衡量结构是否可用于检索和抽取
页面完整率正确解析且页序正确的页面数 / 应处理页面数暴露漏页、重复页和错序
正文误删率被错误删除的正文块数 / 金标正文块数衡量清洗规则是否伤害有效内容
噪声残留率未清除噪声块数 / 金标噪声块数衡量页眉、水印、乱码等残留

总体字符准确率达到 90%,不代表档案可用。关键字段、高风险材料和页面完整性应设置单独门槛;无法辨识的内容应输出“不确定/待复核”,并统计人工复核率,而不是强行补全。

4. 未达标时如何归因

先保存失败页面、各处理阶段中间结果和版本,再判断问题落在哪一层:

问题层典型现象核验与处理
原始扫描低清、歪斜、透印、缺页复扫或做旋转、去噪、增强;缺页回到材料接收环节
清洗规则正文被删、水印仍在、重复页误判对照区域金标调整规则和阈值
版面解析多栏顺序错、表格拆散、印章混入正文更换版面模型或按档案类型配置解析策略
OCR 引擎生僻字、手写体、数字和日期持续识错比较 OCR 模型、语言包、分辨率和图像预处理
提示词使用多模态模型时,字段格式错、擅自猜测明确字段定义、输出结构和不确定标记,增加金标示例
模型能力图像与指令清晰仍无法稳定识别特定材料使用独立验收集比较候选模型的质量、成本和延迟
金标本身人工转写不一致、字段定义含糊重新复核并升级标注规范和金标版本

OCR 评测通过后,输出的正文、结构和元数据才能进入切片、检索与问答评测。这样可以区分“材料根本没读对”和“材料读对了但没检索到或没回答好”。

三、检索指标(L3)

设 golden chunks 为 G,检索结果列表为 R:

指标含义计算目标参考
Recall@K前 K 条结果命中多少标准切片\R∩G\/\G\@5 ≥ 85%
Precision@K前 K 条有多少是相关的\R∩G\/K越高越好
MRR标准切片排多前1/首个命中排名 的均值≥ 0.7
NDCG@K带位置衰减的综合排序质量DCG/iDCG用于方案对比
Hit Rate有没有命中(二值)命中查询数/总查询数≥ 90%

提示 定位口诀

Recall 低 → 检索没找到(改切片/换模型/加混合检索);Recall 高但答案错 → 排序或生成问题。

四、生成指标(L4)

指标含义判定方式
忠实度 Faithfulness答案是否严格基于检索资料,无编造LLM 评分 + 人工抽检
答案相关性 Answer Relevance是否回答了所问LLM 评分
准确性 Accuracy关键事实(数字/日期/名称)与标准答案一致字段比对 + 人工
拒答正确率超纲题正确拒答比例自动判定
幻觉率编造内容的比例(越低越好)人工标注为主
引用准确性引用的文档/页码真实存在且支持答案程序比对 + 人工

五、自动化评测工具(Ragas 示例)

# pip install ragas datasets

from ragas import evaluate
from ragas.metrics import (
    faithfulness,
    answer_relevancy,
    context_precision,
    context_recall,
)
from datasets import Dataset

retrieved_context = ["第12页切片内容……"]

eval_data = Dataset.from_dict({
    "question": ["抵押物处置流程是什么?"],
    "answer": ["先评估定价,再拍卖变卖,款项按顺序分配…"],
    "contexts": [retrieved_context],             # 每个问题对应一组实际检索切片
    "ground_truth": ["评估→拍卖/变卖→按顺序分配"],  # 标准答案
})

result = evaluate(eval_data, metrics=[
    faithfulness, answer_relevancy, context_precision, context_recall
])
print(result)
# context_recall ≈ 检索层 Recall(定位检索问题)
# faithfulness   ≈ 生成忠实度(定位幻觉问题)

指标解读:

  • context_recall 低:检索没给对料 → 优化入库/检索
  • faithfulness 低但 context_recall 高:料对了模型没用好 → 优化 Prompt/换模型

六、评测流程与基线管理

flowchart LR A["人工准备标准样本 形成金标母集"] --> A1["拆分训练/调优集 开发验证集与独立验收集"] A1 --> B["首次全量评测 建立基线"] B --> C["任一链路变更 (切片/模型/Prompt/检索)"] C --> D["回归评测"] D --> E{"对比基线"} E -->|达标| F["合并 / 发布"] E -->|不达标| G["优化调整"] G --> D style E fill:#fff8e1,stroke:#d4a017 style F fill:#eaffea,stroke:#4abf60

未达到 90% 时的分层核验

低于目标后不要立即增加训练样本或更换模型。先保存失败用例的实际检索切片、Prompt、模型版本和输出,再按下面的顺序归因:

核验层典型证据判断处理方向
金标/样本问题标准答案错误、证据过期、题意含糊、训练集与验收集近重复评测口径或数据质量有问题业务复核金标、去重、重做拆分;修改后给评测集升版
检索问题标准证据存在,但 Recall@K/Hit Rate 未命中切片、Embedding、过滤或排序有问题查解析与切片,调整召回、混合检索、Rerank 和元数据过滤
提示词问题正确证据已进入上下文,模型却漏答、格式错误或不会拒答指令、上下文组织或输出约束不足修改 Prompt、Few-shot 和结构化输出规则,再跑开发验证集
模型问题证据和 Prompt 均明确,多种稳定提示仍无法正确理解、推理或遵循指令当前模型能力或上下文限制不足对比候选模型、上下文长度与参数,记录质量、延迟和成本
评分器问题人工判断正确,自动评分却失败,或同一答案评分波动大规则或 LLM 裁判不可靠校准评分规则,增加确定性校验和人工复核

归因时每次只改变一个主要变量,并在开发验证集上确认方向;方案冻结后,再运行此前隔离的独立验收集。若把验收失败题加入训练集,这些题必须退出原验收集,并补入同类型、未见过的新题,否则下一次“超过 90%”没有证明力。

必须回归评测的变更

  • 切片策略/参数调整(chunk_size、overlap)
  • 更换 Embedding / Rerank / LLM 模型或版本
  • 检索策略调整(top_k、混合权重、过滤条件)
  • Prompt 模板修改
  • 文档大批量更新

评测报告模板

【评测日期】2026-xx-xx   【被测版本】v1.3.0   【变更内容】chunk 500→800
【评测集】v2(300 条)
─────────────────────────────────
检索层:Recall@5  82.1% → 88.3% (+6.2)  ✅
        MRR      0.68  → 0.74  (+0.06)  ✅
生成层:忠实度    91.0% → 92.5% (+1.5)   ✅
        拒答率    95.0% → 96.7% (+1.7)   ✅
性能  :P95      7.2s  → 7.4s  (+0.2s)  ⚠️ 示例:是否接受由已批准预算决定
结论:通过,发布
─────────────────────────────────

七、注意事项

  • LLM 评分有抖动:评分模型固定版本 + temperature=0,关键结论辅以人工抽检(抽 10%~20%)
  • 防止过拟合评测集:评测集不用于调参时反复"背题",定期补充新题
  • 指标与业务对齐:先和业务方确认"可接受的错误率",再定阈值
  • 分层归因:先看检索指标再看生成指标,避免一上来就怪模型
  • 防止数据泄漏:按问题族和来源去重拆分;进入训练/调优集的题不得继续充当独立验收题

本篇交付与下一步

本阶段应交付经过人工复核的问答金标与 OCR 金标、训练/调优集、开发验证集、保持隔离的独立验收集,以及版本化评分规则、分层指标和失败归因记录。OCR 结果需先通过文字、结构、关键字段和完整性验收,再进入检索与生成评测。LLM 裁判只能作为一个评分器,必须先用人工标注样本验证偏差与稳定性;高风险结论由确定性规则或人工复核。下一步进入 10-部署上线:生产环境与CI-CD