Resources:
检索增强生成(Retrieval-Augmented Generation,RAG)通过将大型语言模型(LLMs)的生成能力与外部知识检索机制相结合,显著提升了模型在知识密集型任务中的表现。相比单纯依赖模型参数记忆的生成方式,RAG 能够在回答问题时动态引入相关资料,从而增强答案的准确性、时效性与可追溯性。
评估 RAG 应用时,通常在两个环节展开:检索质量与生成质量。前者关注系统能否找到与问题相关、足以支撑回答的外部知识,后者关注模型能否基于这些知识生成准确、完整、忠实且符合语境的答案。通过将评估拆解为检索与生成两个维度,可以更清楚地判断 RAG 系统的实际效果,并定位问题究竟出在“没有找对资料”,还是“没有用好资料”。
检索质量评估
在 RAG 应用中,检索环节的核心目标不是简单地返回“语义相似”的文档,而是找到能够支撑最终回答的高质量上下文。一个好的检索结果应该满足几个条件:与用户问题相关、包含回答所需的关键信息、排序靠前、噪声较少,并且能够被生成模型直接利用。因此,检索质量通常可以从相关性、召回率、排序质量、噪声控制和上下文可用性几个角度进行评估。
是否找到了相关内容
是否召回了关键信息
相关内容是否排在前面
检索结果里是否有太多噪声
检索内容是否足以支撑生成答案
检索结果是否适合被模型使用
基础指标:有没有找到
Precision@K:检索结果是否准确
Precision@K衡量前K检索结果中,有多少是真正相关的内容
对于单个问题
整个评测集上的平均值为:
Precision@K关注的是:检索结果中无关的结果多不多
Precision@K越高,说明检索结果中相关内容占比越高,检索结果越干净。Precision 低意味着给大模型塞了很多无关信息,这不仅浪费Token,还可能对模型造成(噪声干扰)。
Recall@K:关键内容是否被召回
Recall@K 衡量所有相关内容中,有多少出现在 Top K检索结果中
对于单个问题
整个评测集上的平均值为:
Recall@K关注的是:回答问题所需的关键上下文有没有被找出来
在RAG应用中, Recall@K通常非常重要,如果Recall低,说明关键信息压根没被检索到,后续环节中模型很难生成可靠答案。
排序类指标:排得对不对
MRR(平均倒数排名)
MRR(Mean Reciprocal Rank),关注第一个相关结果出现在什么位置,位置越靠前,得分越高。
计算公式:
倒数排名(Reciprocal Rank,RR):针对单个查询,如果第一个相关文档排在第 位,其得分为:
如果前K个结果中完全没有相关文档,则
平均倒数排名(MRR):对所有 个查询的 值取平均:
计算示例:
假设有三个查询,检索结果中第一个相关文档的位置分别是:
查询1:第 2 位(RR = 1/2 = 0.5)
查询2:第 1 位(RR = 1/1 = 1.0)
查询3:第 4 位(RR = 1/4 = 0.25)
那么该检索系统的MRR为:
NDCG@K(归一化折损累积增益)
NDCG不仅考虑了文档的排序位置,还引入了相关性等级(例如,0=无关,1=有点相关,2=非常相关),位置越靠前、相关性越高的文档,得分越高。
NDCG的计算可以分为三个步骤:
折损累积增益(DCG@K):计算前 个检索结果的实际得分。相关性越高的文档如果排在后面,其贡献会被对数函数折损。
其中
为第 个文档的相关性分数,
为文档的排名位置
理想折损累计增益IDCG@K:假设前 个结果是完美排序(即按相关性从高到低排列)时的DCG得分。这是该查询理论上能拿到的最高分。
归一化折损累计增益NDCG@K:用实际得分除以理想得分,将分数归一化到 之间,方便不同查询之间进行对比。
计算示例:
假设检索了3个文档,其相关性评分分别为 (2=非常相关,1=相关,0=无关)。
第一步,计算DCG@3
第二步,计算IDCG@3
当前排序已经是相关性从高到低的完美排序,因此IDCG@3等于DCG@3,即2.63
第三步,计算NDCG@3
如果检索结果的排序为 ,DCG会大幅降低,NDCG也会远小于1
总结
生成质量评估
答案是否回答了用户问题?
答案是否事实正确?
答案是否完整覆盖关键点?
答案是否严格基于检索上下文?
是否出现了上下文中没有的信息?
引用是否准确?
表达是否清楚?
评估工具
RAGAS
RAGAS 是一个专为RAG设计的评估框架