1 RAG 评测集应该怎么构建
P1 · rag
🏷 标签:rag, evaluation, dataset, retrieval
1️⃣ 考察意图
面试官想考察你构建 RAG 评测集的系统性思维,而非简单罗列指标。这属于系统设计 + 工程取舍类型。刁钻点在于:评测集不是一次性产物,而是需要覆盖检索、生成、端到端三个环节,并兼顾覆盖度、标注质量和迭代机制。答好了能展示你对 RAG 整条链路的理解深度、数据工程能力,以及从线上日志到人工标注的完整流程思维,这是大厂做 RAG 落地时最看重的硬实力。
2️⃣ 标准答
构建 RAG 评测集,核心是分层设计 + 混合数据源 + 迭代机制。下面从三个层面展开:
1. 明确评测目标:分层覆盖
- 检索层:关注 Recall@K、MRR、NDCG@K。需要标注 query 对应的相关文档(chunk 级别),而非仅答案。例如,用 BM25 或 DPR 检索后,人工判断 top-10 中哪些 chunk 包含答案线索。
- 生成层:关注答案的准确率、忠实度(Faithfulness)、完整性。需要标注标准答案(golden answer),并定义“可接受范围”(如部分正确、需要补充)。
- 端到端层:关注用户满意度,如答案是否直接可用、是否包含幻觉。可引入 LLM-as-Judge 自动打分,但需人工抽样校验。
2. 数据来源:混合策略
- 线上日志采样:从生产环境抽取 1000-2000 条真实用户 query,覆盖高频和长尾。这是最贴近实际场景的,但需脱敏处理。
- 人工构造:针对特定能力(如多跳推理、时间敏感问题、否定问题)构造 200-500 条难例。例如,“2023 年诺贝尔文学奖得主是谁?他之前的作品有哪些?”需要多跳检索。
- 公开数据集:复用 Natural Questions、HotpotQA、TriviaQA 等,但需按业务场景过滤。例如,金融 RAG 可选用 FinQA,医疗 RAG 可选用 MedQA。
- 合成数据:用 GPT-4 基于知识库生成 query-answer 对,但必须人工校验,防止幻觉污染。
3. 标注流程:一致性保障
- 定义标注规范:明确“相关文档”的标准(如 chunk 包含答案核心实体即可,不要求全文匹配)。对生成答案,定义“完全正确”“部分正确”“错误”三级。
- 交叉验证:每个样本至少由 2 人标注,计算 Cohen’s Kappa 系数(>0.7 为合格)。不一致样本由 senior 仲裁。
- 难例分析:定期收集标注分歧大的样本,更新规范。例如,发现“答案需要推理”的样本常被误判,则新增“推理型”标签。
4. 实际落地的坑 + 解法
- 坑 1:检索和生成评测脱节。例如,检索 Recall@5 很高,但生成答案仍错误。解法:构建“检索-生成”联合评测,计算“检索到正确 chunk 后生成正确率”(Conditional Accuracy)。
- 坑 2:标注成本高。解法:先用 LLM 自动标注(如用 GPT-4 生成答案和相关性判断),再人工抽样校验 20%,可降低 80% 成本。
- 坑 3:评测集过时。解法:建立月度更新机制,从线上日志新增 10% 样本,淘汰旧样本,保持评测集时效性。
5. 质量保证与迭代
- 自动回归测试:每次模型更新后,运行评测集,对比指标变化。若某个指标下降超过 2%,触发人工分析。
- 用户反馈完整流程:将线上用户反馈(点赞/点踩)作为弱监督信号,定期补充到评测集中。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,分层设计——评测集要覆盖检索、生成、端到端三个环节,分别用 Recall@K、Faithfulness、用户满意度等指标;第二,混合数据源——线上日志、人工构造、公开数据集、合成数据四类混合,确保覆盖度和真实性;第三,迭代机制——通过交叉验证保证标注一致性,每月从线上日志更新 10% 样本,防止过时。总结一句:RAG 评测集不是一次性产物,而是需要持续维护的活数据集。”
4️⃣ 高频追问 & 应对
追问 1:你提到用 LLM 自动标注,怎么保证质量?如果 LLM 本身有幻觉怎么办?
应对策略:采用“LLM 初标 + 人工抽样校验”的混合策略。具体做法:先用 GPT-4 生成答案和相关性判断,然后人工校验 20% 样本,计算 LLM 标注的准确率(如 85%)。对于 LLM 幻觉,引入“反向验证”——让 LLM 基于答案反推 query,看是否匹配。同时,对 LLM 标注的“错误”样本进行难例分析,更新 prompt 模板。例如,发现 LLM 常把“部分正确”判为“完全正确”,则在 prompt 中增加“请检查答案是否遗漏关键实体”的指令。
追问 2:你的评测集如何覆盖多轮对话场景?
应对策略:多轮对话的评测难点在于上下文依赖。解法:构建“对话历史 + 当前 query”的样本,标注时需考虑历史信息。例如,用户先问“苹果公司 CEO 是谁?”,再问“他之前在哪工作?”,答案需从历史中提取实体“Tim Cook”。评测指标上,引入“上下文召回率”(Context Recall),检查模型是否正确引用了历史中的关键信息。数据来源上,从线上对话日志中抽取多轮 session,人工标注每轮的正确答案和相关历史 chunk。
追问 3:如果业务场景是金融 RAG,评测集构建有什么特殊要求?
应对策略:金融场景对准确性和时效性要求极高。特殊要求:第一,需要标注“数据来源的权威性”,如财报、公告、新闻的优先级不同;第二,构建“时间敏感”样本,如“2024 年 Q1 营收是多少?”,答案需对应最新数据;第三,引入“合规性”评测,检查答案是否包含内幕信息或误导性陈述。数据源上,优先使用公开财报和监管文件,避免使用论坛或自媒体内容。标注时,需要金融领域专家参与,确保答案符合行业规范。
5️⃣ 避坑 · 常见错误答法
- ❌ 只提指标(如 Recall、Precision),不提数据来源和标注流程。 → ✅ 必须说明数据从哪来、怎么标、怎么保证一致性,否则面试官会认为你只会背指标,不懂落地。
- ❌ 说“用公开数据集就够了”,忽略业务场景差异。 → ✅ 强调混合数据源,尤其是线上日志和人工构造的难例,才能覆盖真实场景的长尾问题。
- ❌ 认为评测集是一次性构建的,不提迭代机制。 → ✅ 必须提到月度更新、用户反馈完整流程,体现对评测集生命周期的理解。
6️⃣ 简历呼应
- 如果你有 RAG 项目:从“线上日志采样 + 人工标注”切入,强调你如何从生产环境抽取 1000 条 query,构建了覆盖 5 种任务类型的评测集,并计算了 Recall@5 和 Faithfulness 指标。可以提到你如何通过交叉验证将标注一致性从 0.6 提升到 0.8。
- 如果你只做过传统 NLP:用“分类任务评测集”类比,强调 RAG 评测需要分层设计(检索 vs 生成),类似分类任务需要区分特征工程和模型输出。可以提到你如何复用 NER 标注经验,定义“相关文档”的边界。
- 如果你是校招无项目:聚焦公开数据集(如 Natural Questions)的复现,强调你如何用 BM25 和 DPR 构建了 500 条样本的评测集,并分析了检索和生成的联合效果。可以提到你如何用 GPT-4 自动标注并人工校验,展示了数据工程能力。
- 《RAG Evaluation: A Survey》—— 综述 RAG 评测方法
- 《CRUD-RAG: A Comprehensive Chinese Benchmark for Retrieval-Augmented Generation》—— 中文 RAG 评测集
- 《Faithfulness in RAG: Measuring and Improving Factual Consistency》—— 忠实度评测
- 《RAGAS: Automated Evaluation of Retrieval Augmented Generation》—— 自动评测框架
- 《Natural Questions: A Benchmark for Question Answering》—— 经典公开数据集