跳到正文

RAG 评测优化闭环

从指标、失败切片到检索/生成实验的优化闭环

原题:请设计一套完整的评估体系来衡量检索增强生成(RAG)系统的性能,并列举多种可行的迭代优化手段,涵盖检索模块、生成模块以及二者协同方面的改进策略。

评估与监控 · 字节真题

回答与解析

一、三层评估体系设计

1. 检索模块评估

  • Recall@K:答案相关文档是否在TopK中
  • MRR/NDCG:排序质量,关注相关文档的位置
  • 精确率指标:标题匹配率、实体命中率(针对结构化知识)
  • 多跳召回率:复杂问题需跨文档推理时的召回能力

2. 生成模块评估

  • 事实性:答案与检索内容的一致性(用NLI模型或人工抽检)
  • 完整性:是否覆盖问题所有要点(可拆解子问题逐一验证)
  • 幻觉率:生成内容超出检索片段的比例
  • 流畅度:PPL、人工可读性评分

3. 端到端评估

  • RAGAS指标:faithfulness、answer_relevancy、context_precision、context_recall
  • 业务指标:用户满意度、任务完成率、纠错率
  • 对抗测试:构造边界case(如检索片段冲突、信息缺失场景)

二、迭代优化策略

检索侧

策略 具体手段
语义增强 查询改写(HyDE)、多向量表示(ColBERT)、重排序模型
结构优化 分块策略迭代(按语义/按结构)、元数据过滤、知识图谱索引
动态检索 自适应检索步数、迭代检索(IRCOT)、检索-生成交替进行

生成侧

  • 提示工程:引用格式约束(要求标注来源)、少样本示例
  • 模型微调:基于检索上下文的SFT,强化忠实度训练
  • 后处理验证:事实核查模块、置信度过滤

协同优化

  • 检索-生成联合训练:如REPLUG、RA-DIT,让生成反馈指导检索学习
  • 端到端优化:用生成损失反向优化检索器(可微分搜索或强化学习)
  • 在线闭环:用户反馈(点赞/点踩)回流优化检索排序

三、落地建议

  • 冷启动阶段:先固定生成模型,优化检索(见效快)
  • 数据积累后:引入RAGAS自动评估,建立A/B测试框架
  • 高阶阶段:针对业务bad case做专项优化(如表格理解、多文档聚合)

学习建议

建议系统学习该知识点

口语版讲法(约4分钟)

  • 一句话定位:RAG评估和优化本质是平衡检索与生成
  • 三层评估体系:检索、生成、端到端,各有侧重
  • 迭代优化:检索侧、生成侧、协同,按场景选
  • 落地风险与取舍:冷启动先搞检索,数据多了再联合优化

这道题其实是在问,你怎么把RAG系统从搭起来到真正好用,核心就是评估和优化两件事。我理解,评估是告诉你哪里有问题,优化是告诉你怎么办,两者是循环的。

先说评估。我会分成三层来看。第一层是检索模块,主要看召回率和排序质量。比如Recall@K,还有MRR,这些能反映检索器有没有把相关文档捞回来,以及是不是排在最前面。第二层是生成模块,重点看事实性和幻觉率。事实性我会用NLI模型或者人工抽检,看答案是不是基于检索内容;幻觉率就是看有没有编造。第三层是端到端,用RAGAS这类框架,综合评估忠实度、答案相关性、上下文精度和召回。当然最终要看业务指标,比如客服场景下的用户满意度或问题解决率。

优化策略这块,我习惯按三个方向展开。检索侧,最见效的是混合检索,把BM25和Embedding结合起来,能覆盖关键词和语义两种场景。比如企业合规文档里,员工查“报销流程”可能用模糊描述,但查“SOP-2024-01”这种编号就必须靠关键词,所以两条路都得有。再一个就是分块策略,按语义切分比固定窗口好,但遇到表格或代码块,就得保留结构完整性。另外重排也很关键,用Cross-Encoder精排能显著提升top-K质量。

生成侧,我倾向于先做提示工程,比如强制要求引用来源,格式像“根据文档[3]”,这样幻觉率能降不少。如果还不够,再考虑SFT微调,用检索到的上下文做监督数据训练模型更忠实。后处理加个事实核查模块,对低置信度答案直接拒答或二次检索。

协同优化是进阶玩法。比如REPLUG,让生成模型给检索器反馈,或者用强化学习端到端调优。但这里有个前提,你的评估信号得足够准确,否则容易跑偏。

说到落地,我会特别关注风险和前提。冷启动阶段别想着一步到位,先固定生成模型,全力优化检索,因为检索质量是天花板,检索烂了生成再好也没用。常见失败场景是检索片段冲突,比如两个文档说法矛盾,生成模型可能取错。这时候需要做冲突检测或者投票机制。还有就是分块太碎导致上下文丢失,得用Parent Document结构,先召回大块再定位小块。

不过我觉得最值得深挖的是评估指标的可靠性。RAGAS这类自动指标和人工判断之间到底有多大差距?我观察到在复杂推理场景下,自动指标往往高估,所以上线前我会做一批标注bad case跑通人工校验。

所以整体上,我更倾向于把评估和优化做成一个闭环:先用三层评估找到瓶颈,按业务场景选优化手段,冷启动重检索,数据多了再联合调优。核心是别贪多,每个阶段只解决一个主要矛盾。

关键一句:自动评估指标在复杂推理场景下与人工判断差距大,需人工校验

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你做一个智能客服,用户问'我的订单到哪了',系统从知识库检索物流规则生成回答。你怎么知道这次回答对不对?如果用户说'你答错了',你打算怎么改?

  2. 问法 2 · 层层追问

    RAG系统上线后,你怎么判断它好不好?……比如用户问了一个问题,你怎么知道检索到的文档够不够?……那生成的内容是不是都来自文档?如果没有,算不算幻觉?……你打算从哪些维度去评估,又怎么一步步改进?

  3. 问法 3 · 直球架构

    设计一套完整的RAG系统评估体系,包括检索模块、生成模块和端到端的指标,再给出至少三种迭代优化策略,覆盖检索、生成和协同改进。

同模块相关题目