RAG 检索与生成评估
从检索质量与生成质量两层建立 RAG 离线指标总览
原题:在检索增强生成(RAG)系统的实际应用中,通常采用哪些评估指标和方法来评估系统性能?请从检索质量和生成质量两个维度进行说明。
评估与监控 · 蚂蚁真题
30 秒回答
- 检索质量指标:Recall@K、MRR、NDCG、命中率
- 生成质量指标:忠实性、答案相关性、上下文相关性
- 端到端评估方法:RAGAS、ARES、人工评估
- 指标选择需结合业务场景,没有银弹
回答与解析
答案要点
- 检索质量指标:Recall@K、MRR、NDCG、命中率
- 生成质量指标:忠实性、答案相关性、上下文相关性
- 端到端评估方法:RAGAS、ARES、人工评估
- 指标选择需结合业务场景,没有银弹
一、检索质量评估
核心指标
- Recall@K:Top-K检索中相关文档的比例,关注"找全"
- MRR(平均倒数排名):首个相关文档排名的倒数,关注"找快"
- NDCG:考虑位置加权的排序质量,关注"排好"
- 命中率(Hit Rate):查询是否命中至少一个相关文档
评估方式
- 需人工标注query-doc的相关性标签(二元或分级)
- 可用Embedding模型自动标注作为替代方案
二、生成质量评估
忠实性(Faithfulness)
- 答案是否基于检索内容,有无幻觉
- 常用方法:NLI模型判断陈述与文档的蕴含关系
答案相关性(Answer Relevance)
- 答案是否直接回应问题,有无跑题
- 可用问题-答案Embedding相似度或LLM打分
上下文相关性(Context Relevance)
- 检索到的文档与问题的相关程度
- 剔除冗余、无关信息的能力
三、端到端评估框架
| 框架 | 特点 |
|---|---|
| RAGAS | 最常用,自动化、无需人工标注,基于LLM打分 |
| ARES | 合成数据训练评判模型,成本更低 |
| TruLens | 可解释性强,提供逐层追溯 |
| 人工评估 | 最终标准,A/B测试、专家打分 |
四、实践经验
- 指标要分层:先保检索召回,再优化生成质量
- RAGAS的坑:LLM打分不稳定,建议用GPT-4级模型,或本地大模型+校准
- 业务定制:客服场景加"解决率",知识问答加"信息完整性"
口语版讲法(约4分钟)
- 一句话定位:RAG评估本质是两段式质量验证
- 检索质量:召回率和排序,业务场景决定指标侧重
- 生成质量:忠实性和相关性,LLM打分有坑
- 端到端框架:RAGAS自动但需校准,人工兜底
- 落地取舍:先保检索再优化生成,关注失败场景
这道题其实问的是RAG系统上线前怎么验证它好不好用,本质上是两段式质量验证,检索和生成得分开看,因为问题出在哪一段完全不一样。我先说检索质量。
检索评估核心就两件事:找全和排好。找全看Recall@K,比如客服退款场景,用户说“订单还没退”,系统得把退款政策和订单状态相关文档都捞出来,漏一个就可能答错。排好看MRR和NDCG,MRR关注第一个正确答案是不是排前面,NDCG则更精细,允许相关度分级。比如企业SOP文档,有的段落完全匹配,有的只沾边,NDCG就能区分。实际落地时,我倾向于混合用:Recall@K保底,MRR兜快,NDCG优化排序。但前提是得有标注数据,没有的话我会用Embedding模型自动打标做快速迭代,不过自动标注有噪声,上线前必须人工抽检。
生成质量我重点盯忠实性和答案相关性。忠实性就是看有没有Hallucination,比如明明检索文档里没写满减政策,模型却编了一个,这在商家场景里很致命。我常用NLI模型判断答案和检索内容是否矛盾,或者让LLM自己打分,但LLM打分不稳定,尤其用本地小模型时,分数经常忽高忽低,这是个大坑。答案相关性则看有没有跑题,用户问“退款到账时间”,模型回答“退款流程”,就不行。我一般用问题-答案的Embedding相似度初筛,再用LLM精判。这里有个边界:忠实性比相关性优先级高,因为不忠实等于瞎编,相关性差顶多是答非所问。
端到端评估我用RAGAS框架,它自动化程度高,不用人工标注,但LLM打分不稳定,所以我建议用GPT-4级别的模型做评判,或者本地大模型加校准,比如跑一批样本人工打分,把LLM分数映射到人工尺度上。ARES用合成数据训练评判模型,成本低,但合成数据分布和线上可能不一样,需要验证。人工评估是最终标准,A/B测试看用户反馈,比如客服场景看解决率。
不过RAGAS有个隐藏问题:它对上下文相关性的打分经常和人对不上,比如检索文档冗余但答案对,它可能判错,所以我会加一层上下文压缩的评估,看系统剔除无关信息的能力。
最后说说落地取舍。我一般先保检索Recall@K,因为检索漏了,生成再好也没用。再针对生成做忠实性过滤,分太低的直接不回答。上线我会特别关注常见失败场景:比如检索返回空集时模型怎么处理,是硬编还是拒绝回答;再比如多轮对话中上下文漂移,检索文档和当前问题脱节。说白了,没有银弹,指标得和业务绑定,客服加解决率,知识问答加信息完整性。我更倾向把评估看成持续监控,上线后跑离线集,定期看趋势,不追求单次完美。
关键一句:RAGAS对上下文相关性的打分可能和人对不上,需要额外评估上下文压缩能力。
面试官还可能这样问
- 问法 1 · 场景切入
假设你们做一个企业知识库问答系统,用户问“今年的报销政策”,你从文档里检索出几条相关条目,再让大模型生成回答。你怎么评估这个系统到底好不好?从检索和生成两方面说说你会看哪些指标。
- 问法 2 · 层层追问
RAG系统上线后,怎么判断它表现怎么样?……光看用户反馈够吗?……那检索部分有没有什么指标可以量化?……生成部分呢,答案是不是准确、有没有幻觉,这些怎么评估?
- 问法 3 · 直球架构
评估一个RAG系统,从检索质量和生成质量两个维度,你分别会用哪些指标?具体怎么计算或获取这些指标?有没有一些现成的评估框架可以用?