收藏 | RAG检索增强生成评估全解析:小白也能看懂的大模型评估秘籍
2026/9/4 7:14:45 网站建设 项目流程

本文深入解析了RAG(检索增强生成)大模型架构的评估方法。核心原则是先评估检索阶段再评估生成阶段,因为检索是基础。文章详细介绍了检索的两阶段架构(粗筛和重排)及其评估指标,包括Precision@k、Recall@k、MRR和NDCG@k,并阐述了如何选择合适的指标。此外,还讨论了文档分块策略对检索效果的影响,以及生成阶段的忠实度和相关性评估方法。最后,总结了评估RAG时常见的误区和调试技巧,强调分开评估检索和生成的重要性,帮助读者准确定位问题所在。

RAG是什么?

RAG 的基本思路是:用户提一个问题,系统先从知识库(文档库、结构化表格、网页等)里检索出相关的内容,再把这些内容连同问题一起交给 LLM,让它基于检索到的上下文生成回答。

跟直接让 LLM 回答不同,RAG 是一条流水线,至少包含两个独立的环节:检索和生成。每个环节都可以独立出错,而且环节之间有依赖关系:如果检索没有找到正确的文档,生成端无论多强也答不对。反过来,检索找对了文档,生成端也可能编造内容或答非所问。所以只看最终答案对不对是不够的,还需要分清是检索的问题还是生成的问题。

这就引出了这一章的核心原则:在RAG系统的评估中,要先评检索,再评生成。 检索是地基,地基不行上面再修也没用。

检索的两个阶段

现代 RAG 系统通常采用两阶段检索架构,两个阶段各自追求不同的目标,对应不同的评估指标。

第一阶段:粗筛。 用轻量的方法(向量相似度、BM25 等)快速从整个语料库里捞出一批候选文档。这一步的目标是高召回,宁可多捞一些不太相关的,也不能漏掉正确的文档。因为漏掉了就再也找不回来,后续的环节全白费。

第二阶段:重排。 对粗筛的结果做精细排序。用更重的模型(cross-encoder 或 LLM)把查询和每个候选文档放在一起联合打分,把最相关的排到前面。这一步的目标变成了高精度和排序质量,因为 LLM 的上下文窗口有限,需要确保最有用的内容排在最前面。

检索怎么评

先要有测试数据

评估检索需要一个数据集:每条数据包含一个查询和它对应的正确文档块。有了这种配对,才能衡量检索器"找没找对"。

手动标注这种数据质量最高但成本也高,书里给了一套用 LLM 合成的方法来降低成本。

基础合成: 对语料库里的每个文档块,让 LLM 从中提取一个核心事实,再生成一个只能靠这个事实回答的问题。这样每个问题天然对应一个正确的文档块,不需要人工去标。

进阶合成: 基础版的问题在于合成的问题措辞往往跟原文高度重合,关键词匹配就能找到正确的块,对检索器没什么挑战。进阶版的做法是:先找到跟目标块相似但不包含答案的干扰块,再让 LLM 生成一个只有目标块能回答、但用词跟干扰块也重叠的问题。这样检索器如果只靠关键词匹配就会被干扰块误导,必须学会区分"看起来相关"和"真正回答了问题"。

书里举了一个金融新闻的例子。目标块说"2020 年 4 月,该公司季度收入下降 17%,是 2008 年以来最大降幅";干扰块说"该公司在 2008 年金融危机期间遭受重大损失"。两个块都提到了同一家公司和 2008 年,关键词高度重叠。生成的问题是"该公司自 2008 年金融危机以来最大的收入降幅发生在什么时候?",只有目标块能答,但干扰块对关键词匹配的检索器来说看着也很像正确答案。

过滤: 合成的问题可能不够真实或脱离实际场景。书里建议用 LLM 对合成问题做真实性打分,过滤掉不合格的。同时也特别提醒:合成数据不能完全替代真实查询,定期用真实用户的查询做验证是必要的。

用什么指标衡量检索质量

有了测试数据,就可以用指标来衡量检索器的表现了。书里介绍了四个常用指标,各自衡量不同的东西,适合不同的场景。

1、Precision@k:前 k 个结果里有多少是相关的

Precision@k,即精确率,衡量的是检索返回的前 k 个文档中,真正相关的占多少比例。

计算方式:前 k 个结果中相关文档的数量 / k。

比如检索器返回了前 5 个文档,其中 3 个是相关的,Precision@5 = 3/5 = 0.6,即 60% 的结果是有用的。

Precision@k 关注的是"返回的东西里有多少是好的",对精度要求高的场景有用。但在 RAG 的第一阶段粗筛中,它通常不是最重要的指标,因为粗筛阶段宁可多捞一些不相关的,也不能漏掉关键文档。真正不能接受的是漏掉。

2、Recall@k:该找到的有没有找到

Recall@k,即召回率,衡量的是所有相关文档中,有多少比例出现在了检索结果的前 k 个里。

计算方式:前 k 个结果中相关文档的数量 / 该查询对应的全部相关文档数量。

比如某个查询一共有 4 个相关文档块,检索器的前 5 个结果里包含了其中 3 个,Recall@5 = 3/4 = 0.75,意思是 75% 的相关内容被找到了,还有 25% 被漏掉了。

在 RAG 的第一阶段粗筛中,Recall@k 是最重要的指标。 原因是:如果一个关键文档在粗筛阶段就被漏掉了,重排和生成都没有机会弥补,因为它们只能在粗筛结果的范围内工作。LLM 有一定的能力在上下文中忽略无关内容,但如果关键信息根本不在上下文里,它无论如何也生成不了正确答案。

3、MRR:第一个相关文档排得多靠前

MRR 的全称是 Mean Reciprocal Rank,即平均倒数排名。它衡量的是第一个相关文档在排序列表中出现得有多早。

对单个查询,先算它的倒数排名:找到第一个相关文档的排名位置,取倒数。比如第一个相关文档排在第 1 位,倒数排名就是 1/1 = 1.0;排在第 3 位,就是 1/3 ≈ 0.33。如果前 k 个结果里一个相关文档都没有,记为 0。MRR 是所有查询的倒数排名的平均值。

第一个相关文档的位置倒数排名
第 1 位1/1 = 1.0
第 2 位1/2 = 0.5
第 3 位1/3 ≈ 0.33
第 5 位1/5 = 0.2
第 10 位1/10 = 0.1

之所以用"倒数",是因为它的衰减方式符合排序位置的实际价值。从第 1 到第 2 掉了 0.5,从第 5 到第 6 只掉了 0.03。靠前的位置之间差异大,靠后的位置之间差异小。把答案从第 5 位提到第 4 位用户体感几乎没差别,但从第 2 位提到第 1 位是"一眼就看到"和"要往下找"的区别。

MRR 只关心第一个相关文档,后面还有没有其他相关文档它不看。所以它适合那种只需要一个关键事实就能回答的问题,比如"123 Main St 的房产税是多少"。

但如果问题需要综合多个文档块才能回答(比如"我们在西伯克利的房源里哪一套房产税最高",需要同时用到房源列表和税务信息),MRR 就不合适了,这种多跳问题应该用 Recall@k 或 NDCG@k。

这里还涉及一个叫 “lost in the middle” 的效应:LLM 对上下文的注意力分布不均匀,排在开头和末尾的内容更容易被关注,排在中间的内容更容易被忽略。所以即使相关文档被检索到了,排在什么位置也会实实在在影响最终效果。

4、NDCG@k:排序质量的综合衡量

前面三个指标有一个共同的简化:它们都把相关性简单地分成"相关"和"不相关"两类,没有中间地带。但现实中文档的相关程度是有层次的。比如查询"总结市中心豪华公寓的市场趋势":一份最新的市场分析报告是高度相关的,一份笼统的城市经济概览是略微相关的,一份餐厅指南是完全不相关的。如果只按"相关/不相关"来看,前两个都算"相关",区分不出来。

NDCG@k 的全称是 Normalized Discounted Cumulative Gain,即归一化折扣累积增益。它用分级相关性(比如 0 到 3 分)来衡量排序质量:越相关的文档排得越靠前,分数就越高。

NDCG 看着复杂,但它是一步步"打补丁"构建出来的,每一步都是为了修补前一步的缺陷。

第一步:CG,累积增益,把相关性分数加起来。

最朴素的想法:既然每个文档有相关性分数(比如 0/1/2/3),那把前 k 个结果的分数加起来就行了。

假设前 3 个文档的相关性分数是 3、1、2,CG = 3 + 1 + 2 = 6。

缺陷:CG 完全不管顺序。排成 [3, 1, 2] 和排成 [1, 2, 3],CG 都是 6。但好的检索器应该把最相关的排最前面。

第二步:DCG,折扣累积增益,给靠后的位置打折。

要让顺序起作用,就得让靠后位置的文档贡献变小。DCG 的做法是:每个文档的相关性分数除以 log₂(位置 + 1),位置越靠后,除的数越大,贡献越小。

各位置的折扣效果:

位置除以 log₂(位置+1)贡献保留比例
第 1 位log₂(2) = 1100%(不打折)
第 2 位log₂(3) ≈ 1.58约 63%
第 3 位log₂(4) = 250%
第 5 位log₂(6) ≈ 2.58约 39%
第 10 位log₂(11) ≈ 3.46约 29%

用一个例子来看效果。同样三个文档,分数 3、1、2:好的排序 [3, 1, 2]:DCG = 3/1 + 1/1.58 + 2/2 = 3 + 0.63 + 1 = 4.63差的排序 [1, 2, 3]:DCG = 1/1 + 2/1.58 + 3/2 = 1 + 1.27 + 1.5 = 3.77

同样的文档,好的排序 DCG 更高,顺序现在起作用了。

用对数而不是直接除以位置数,是因为对数的下降先快后慢,前几位之间的差距被放大,靠后的位置之间差距被压缩,符合"靠前的位置更值钱"的实际情况,这跟 MRR 用倒数是同一个思路。

缺陷:DCG 的绝对值没法跨查询比较。一个查询有多个高度相关的文档,DCG 天然就高;另一个查询只有一个略微相关的文档,DCG 天然就低。高不代表排得好,只是这个查询本身"料多"。

第三步:NDCG,归一化,跟自己的满分比。

把同一批文档按相关性从高到低重新排列,得到理想排序,算出它的 DCG,叫 IDCG(理想 DCG)。然后 NDCG = DCG / IDCG。

接上面的例子。排序 [3, 1, 2] 的 DCG 是 4.63。理想排序应该是 [3, 2, 1],其 IDCG = 3/1 + 2/1.58 + 1/2 = 3 + 1.27 + 0.5 = 4.77。所以 NDCG = 4.63 / 4.77 ≈ 0.97,接近满分,说明排序很好但不完美(2 和 1 的位置反了)。如果排序是 [1, 2, 3],DCG = 3.77,NDCG = 3.77 / 4.77 ≈ 0.79,说明只发挥了理想排序约八成的价值。

归一化后,NDCG 永远在 0 到 1 之间:1.0 是完美排序,0.5 是只拿到了一半的理想价值。不同查询的 NDCG 可以放在一起比较,因为都是跟自己的满分对照。

NDCG 在 RAG 里什么时候用: 重排阶段。因为重排的目标就是把最相关的文档排到最前面,而 NDCG 恰好衡量的就是"有没有把好东西排在前面"。

一个要留神的坑: NDCG 可能给出反直觉的分数。一个系统只检索到一堆"略微相关"的文档但排得很完美,NDCG 可能很高;另一个系统检索到了"高度相关"的文档但排得靠后,NDCG 反而更低。所以NDCG 要跟 Recall 一起看:Recall 管"该找的找到没有",NDCG 管"找到的排得好不好"。

怎么选指标:一个汇总
指标衡量什么适合什么场景局限
Precision@k前 k 个结果中相关文档的比例对精度要求高的场景不关心是否漏掉了相关文档
Recall@k所有相关文档中被检索到的比例第一阶段粗筛不关心排序,只关心有没有找到
MRR第一个相关文档排得多靠前只需要一个关键事实的问题只看第一个相关文档,忽略其余
NDCG@k排序质量(越相关的是否排越前)重排阶段,需要区分相关程度不直接衡量是否漏掉了文档,要跟 Recall 配合

书里给了一个实用的默认建议:第一阶段用 Recall@k,重排阶段用 NDCG@k。 Recall 确保正确的文档进入了候选集,NDCG 确保它们被排到了前面。

检索效果不理想时先看分块策略

检索的结果直接取决于文档怎么切块。块太小,一个完整的信息可能被切成两半,检索器只找到其中一半;块太大,混进去大量无关内容,既浪费 LLM 的上下文窗口,也干扰生成质量。

最简单的分块方式是按固定大小切:比如每 256 个 token 一块。为了避免在块边界处把一个完整的信息切断,可以加重叠,即相邻的块共享一部分 token。比如块大小 256、重叠 128,第一个块覆盖 token 1-256,第二个块覆盖 token 129-384,边界附近的内容至少出现在两个块里。

书里建议用网格搜索调参:选几组块大小和重叠量的组合,对每组重新建索引,用测试数据集量 Recall@k 和 NDCG@k,挑最好的组合。书中给了一组假设的网格搜索结果:

块大小(token)重叠(token)Recall@5NDCG@5
12800.820.69
128640.880.75
25600.860.74
2561280.890.77
51200.800.72
5122560.830.74

两个规律:

  • 加重叠在所有块大小下都能提升效果(减少了边界处信息被切断的概率);
  • 太大的块(512)反而不如中等大小的(256),可能是因为包含了太多无关内容。

除了固定大小分块,还有其他方式:按文档结构切(标题、段落、主题边界),让每个块对应一个完整的语义单元;给每个块补上文档标题和章节标题等上下文信息,让块更自包含,帮助检索器更准确地理解它的内容。这些方式可以跟固定大小分块做对比,用同样的检索指标来判断哪种更好。

生成怎么评

即使检索找对了文档,LLM 在生成环节仍然可能出问题,因此生成质量需要单独评估,主要看两个维度。

最后

2026 年一晃已经过半,AI 大模型的热潮不仅没有降温,反而持续升温!

金融行业用大模型做风控、医疗依靠 AI 解析影像,电商、制造、教育各行各业,都在把 AI 融入日常业务。曾经热闹的 “百模大战”,早就告别单纯比拼模型参数,正式进入落地应用时代

现在企业疯狂紧缺一类人才:懂业务、懂 AI、能做出可上线项目的大模型开发工程师,岗位缺口大,薪资待遇十分可观。

风口再好,不如手握高薪 offer 实在。行情火热,普通人、程序员该怎样从零入门大模型,抓住这波机会?

今天整理好【2026 最新版】AI 大模型全套免费学习资源,覆盖零基础入门、项目实战、理论知识、大厂面试,从基础一路进阶。所有资料分类归档,没有多余杂料,无套路免费分享给想要入局 AI 赛道的程序员与零基础小白!

👇👇扫码免费领取全部内容👇👇

1、大模型系统化完整学习路线

2、大模型经典书籍&文档

3、AI 大模型最新行业研究报告

4、企业级实战项目 + 完整配套源码

5、大厂大模型面试真题汇总

6、这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询