收藏 | RAG检索增强生成评估全解析:小白也能看懂的大模型评估秘籍
发布时间:2026/9/4 7:14:46 作者:尧图编辑部 阅读量:1,286

本文深入解析了RAG检索增强生成大模型架构的评估方法。核心原则是先评估检索阶段再评估生成阶段因为检索是基础。文章详细介绍了检索的两阶段架构粗筛和重排及其评估指标包括Precisionk、Recallk、MRR和NDCGk并阐述了如何选择合适的指标。此外还讨论了文档分块策略对检索效果的影响以及生成阶段的忠实度和相关性评估方法。最后总结了评估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、Precisionk前 k 个结果里有多少是相关的Precisionk即精确率衡量的是检索返回的前 k 个文档中真正相关的占多少比例。计算方式前 k 个结果中相关文档的数量 / k。比如检索器返回了前 5 个文档其中 3 个是相关的Precision5 3/5 0.6即 60% 的结果是有用的。Precisionk 关注的是返回的东西里有多少是好的对精度要求高的场景有用。但在 RAG 的第一阶段粗筛中它通常不是最重要的指标因为粗筛阶段宁可多捞一些不相关的也不能漏掉关键文档。真正不能接受的是漏掉。2、Recallk该找到的有没有找到Recallk即召回率衡量的是所有相关文档中有多少比例出现在了检索结果的前 k 个里。计算方式前 k 个结果中相关文档的数量 / 该查询对应的全部相关文档数量。比如某个查询一共有 4 个相关文档块检索器的前 5 个结果里包含了其中 3 个Recall5 3/4 0.75意思是 75% 的相关内容被找到了还有 25% 被漏掉了。在 RAG 的第一阶段粗筛中Recallk 是最重要的指标。 原因是如果一个关键文档在粗筛阶段就被漏掉了重排和生成都没有机会弥补因为它们只能在粗筛结果的范围内工作。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 就不合适了这种多跳问题应该用 Recallk 或 NDCGk。这里还涉及一个叫 “lost in the middle” 的效应LLM 对上下文的注意力分布不均匀排在开头和末尾的内容更容易被关注排在中间的内容更容易被忽略。所以即使相关文档被检索到了排在什么位置也会实实在在影响最终效果。4、NDCGk排序质量的综合衡量前面三个指标有一个共同的简化它们都把相关性简单地分成相关和不相关两类没有中间地带。但现实中文档的相关程度是有层次的。比如查询总结市中心豪华公寓的市场趋势一份最新的市场分析报告是高度相关的一份笼统的城市经济概览是略微相关的一份餐厅指南是完全不相关的。如果只按相关/不相关来看前两个都算相关区分不出来。NDCGk 的全称是 Normalized Discounted Cumulative Gain即归一化折扣累积增益。它用分级相关性比如 0 到 3 分来衡量排序质量越相关的文档排得越靠前分数就越高。NDCG 看着复杂但它是一步步打补丁构建出来的每一步都是为了修补前一步的缺陷。第一步CG累积增益把相关性分数加起来。最朴素的想法既然每个文档有相关性分数比如 0/1/2/3那把前 k 个结果的分数加起来就行了。假设前 3 个文档的相关性分数是 3、1、2CG 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.77NDCG 3.77 / 4.77 ≈ 0.79说明只发挥了理想排序约八成的价值。归一化后NDCG 永远在 0 到 1 之间1.0 是完美排序0.5 是只拿到了一半的理想价值。不同查询的 NDCG 可以放在一起比较因为都是跟自己的满分对照。NDCG 在 RAG 里什么时候用 重排阶段。因为重排的目标就是把最相关的文档排到最前面而 NDCG 恰好衡量的就是有没有把好东西排在前面。一个要留神的坑 NDCG 可能给出反直觉的分数。一个系统只检索到一堆略微相关的文档但排得很完美NDCG 可能很高另一个系统检索到了高度相关的文档但排得靠后NDCG 反而更低。所以NDCG 要跟 Recall 一起看Recall 管该找的找到没有NDCG 管找到的排得好不好。怎么选指标一个汇总指标衡量什么适合什么场景局限Precisionk前 k 个结果中相关文档的比例对精度要求高的场景不关心是否漏掉了相关文档Recallk所有相关文档中被检索到的比例第一阶段粗筛不关心排序只关心有没有找到MRR第一个相关文档排得多靠前只需要一个关键事实的问题只看第一个相关文档忽略其余NDCGk排序质量越相关的是否排越前重排阶段需要区分相关程度不直接衡量是否漏掉了文档要跟 Recall 配合书里给了一个实用的默认建议第一阶段用 Recallk重排阶段用 NDCGk。 Recall 确保正确的文档进入了候选集NDCG 确保它们被排到了前面。检索效果不理想时先看分块策略检索的结果直接取决于文档怎么切块。块太小一个完整的信息可能被切成两半检索器只找到其中一半块太大混进去大量无关内容既浪费 LLM 的上下文窗口也干扰生成质量。最简单的分块方式是按固定大小切比如每 256 个 token 一块。为了避免在块边界处把一个完整的信息切断可以加重叠即相邻的块共享一部分 token。比如块大小 256、重叠 128第一个块覆盖 token 1-256第二个块覆盖 token 129-384边界附近的内容至少出现在两个块里。书里建议用网格搜索调参选几组块大小和重叠量的组合对每组重新建索引用测试数据集量 Recallk 和 NDCGk挑最好的组合。书中给了一组假设的网格搜索结果块大小token重叠tokenRecall5NDCG512800.820.69128640.880.7525600.860.742561280.890.7751200.800.725122560.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%免费】