完整题目
请设计一套完整的评估体系来衡量检索增强生成(RAG)系统的性能,并列举多种可行的迭代优化手段,涵盖检索模块、生成模块以及二者协同方面的改进策略。
本文目录
一、三层评估体系设计
1. 检索模块评估
- Recall@K:答案相关文档是否在TopK中
- MRR/NDCG:排序质量,关注相关文档的位置
- 精确率指标:标题匹配率、实体命中率(针对结构化知识)
- 多跳召回率:复杂问题需跨文档推理时的召回能力
2. 生成模块评估
- 事实性:答案与检索内容的一致性(用NLI模型或人工抽检)
面试题 · 评估
搜索「SFT 微调」匹配到口述回答,相关段落已展开。查看匹配内容 ↓
请设计一套完整的评估体系来衡量检索增强生成(RAG)系统的性能,并列举多种可行的迭代优化手段,涵盖检索模块、生成模块以及二者协同方面的改进策略。
学习内容与项目面试,在同一条路上。
| 策略 | 具体手段 |
|---|---|
| 语义增强 | 查询改写(HyDE)、多向量表示(ColBERT)、重排序模型 |
| 结构优化 | 分块策略迭代(按语义/按结构)、元数据过滤、知识图谱索引 |
| 动态检索 | 自适应检索步数、迭代检索(IRCOT)、检索-生成交替进行 |
建议系统学习该知识点
场景切入
假设你做一个智能客服,用户问'我的订单到哪了',系统从知识库检索物流规则生成回答。你怎么知道这次回答对不对?如果用户说'你答错了',你打算怎么改?
层层追问
RAG系统上线后,你怎么判断它好不好?……比如用户问了一个问题,你怎么知道检索到的文档够不够?……那生成的内容是不是都来自文档?如果没有,算不算幻觉?……你打算从哪些维度去评估,又怎么一步步改进?
直球架构
设计一套完整的RAG系统评估体系,包括检索模块、生成模块和端到端的指标,再给出至少三种迭代优化策略,覆盖检索、生成和协同改进。
这道题其实是在问,你怎么把[[RAG]]系统从搭起来到真正好用,核心就是评估和优化两件事。我理解,评估是告诉你哪里有问题,优化是告诉你怎么办,两者是循环的。
先说评估。我会分成三层来看。第一层是检索模块,主要看召回率和排序质量。比如Recall@K,还有MRR,这些能反映检索器有没有把相关文档捞回来,以及是不是排在最前面。第二层是生成模块,重点看事实性和[[幻觉]]率。事实性我会用NLI模型或者人工抽检,看答案是不是基于检索内容;幻觉率就是看有没有编造。第三层是端到端,用[[RAGAS]]这类框架,综合评估[[忠实度]]、答案相关性、上下文精度和召回。当然最终要看业务指标,比如客服场景下的用户满意度或问题解决率。
优化策略这块,我习惯按三个方向展开。检索侧,最见效的是[[混合检索]],把[[BM25]]和[[Embedding]]结合起来,能覆盖关键词和语义两种场景。比如企业合规文档里,员工查“报销流程”可能用模糊描述,但查“SOP-2024-01”这种编号就必须靠关键词,所以两条路都得有。再一个就是[[分块]]策略,按语义切分比固定窗口好,但遇到表格或代码块,就得保留结构完整性。另外[[重排]]也很关键,用[[Cross-Encoder]]精排能显著提升top-K质量。
生成侧,我倾向于先做提示工程,比如强制要求引用来源,格式像“根据文档[3]”,这样幻觉率能降不少。如果还不够,再考虑[[SFT]]微调,用检索到的上下文做监督数据训练模型更忠实。后处理加个事实核查模块,对低置信度答案直接拒答或二次检索。
协同优化是进阶玩法。比如REPLUG,让生成模型给检索器反馈,或者用强化学习端到端调优。但这里有个前提,你的评估信号得足够准确,否则容易跑偏。
说到落地,我会特别关注风险和前提。冷启动阶段别想着一步到位,先固定生成模型,全力优化检索,因为检索质量是天花板,检索烂了生成再好也没用。常见失败场景是检索片段冲突,比如两个文档说法矛盾,生成模型可能取错。这时候需要做冲突检测或者投票机制。还有就是分块太碎导致上下文丢失,得用[[Parent Document]]结构,先召回大块再定位小块。
不过我觉得最值得深挖的是评估指标的可靠性。RAGAS这类自动指标和人工判断之间到底有多大差距?我观察到在复杂推理场景下,自动指标往往高估,所以上线前我会做一批标注bad case跑通人工校验。
所以整体上,我更倾向于把评估和优化做成一个闭环:先用三层评估找到瓶颈,按业务场景选优化手段,冷启动重检索,数据多了再联合调优。核心是别贪多,每个阶段只解决一个主要矛盾。