一文读懂RAG评估:解锁大模型性能密码
什么是 RAG 评估
在深入探讨 RAG 评估之前,我们先来了解一下什么是 RAG。RAG,即检索增强生成(Retrieval-Augmented Generation),是一种结合了信息检索和文本生成的技术。它通过从外部知识源(如文档、数据库或互联网)中检索相关信息,并将这些信息与生成模型结合,从而生成更准确、更相关的文本 。比如在问答系统中,RAG 可以从知识库中检索相关文档,然后基于这些文档生成答案,使得答案更加准确和丰富;在文档生成任务里,它能结合检索到的信息提升内容质量。
那么为什么要对 RAG 进行评估呢?评估对于 RAG 系统的发展至关重要。一方面,在构建 RAG 系统时,评估可以帮助我们识别系统中需要改进的领域,优化系统性能。例如,通过评估不同的嵌入模型、检索算法和语言生成模型的组合,我们能深入了解哪些方法在特定任务和领域中能产生最佳结果 。另一方面,当 RAG 系统部署后,评估可以确保系统的有效性、可靠性和性能。因为随着时间的推移,用于检索的数据可能会变得过时或不相关,语言生成模型也可能无法适应不断变化的用户查询或目标领域的变化,持续的评估可以及时发现这些问题并进行改进。
RAG 评估指标大揭秘
了解了 RAG 评估的重要性后,接下来我们一起深入探讨 RAG 评估的关键指标,包括上下文召回率、上下文相关性、答案忠实度、答案相关性和答案正确性。这些指标从不同角度全面评估 RAG 系统的性能,帮助我们更精准地衡量和优化系统。
上下文召回率
上下文召回率用于衡量检索到的上下文是否覆盖了参考答案所需的所有关键信息,避免遗漏关键信息 。该指标取值在 0 到 1 之间,数值越高,表示检索到的上下文覆盖越全面。其计算公式为:上下文召回率 = 上下文覆盖的关键信息数量 / 参考答案中关键信息总数量 。
比如,若参考答案需要 5 个关键信息,检索到的上下文覆盖其中 4 个关键信息,那么上下文召回率就是 4÷5=0.8 。
提升上下文召回率可以从以下几个方面着手:在问题优化与扩展方面,可以通过 LLM 对原问题进行改写或扩写,生成多个相关问题,从而扩大检索范围。还能应用 HyDE(假设性文档嵌入)生成假设性答案作为查询向量,提升上下文召回率。分块策略优化上,要根据文档类型调整分块大小和相邻分块的重叠大小;为每个文本块添加显式标题或背景,提升语义检索准确性;结构化文档,如将 PDF 文件先转为 Markdown 文件再进行分块;使用 LLM 生成主题连贯的文本块,替代传统递归分割,减少上下文断裂问题。在检索策略改进方面,可以采用混合检索,结合稠密检索(向量搜索)与稀疏检索(如 BM25),通过加权融合(如 60% 稠密 + 40% 稀疏)兼顾语义关联与关键词匹配,提升上下文召回率;还能动态调整 Top-K 候选文档数量,根据查询复杂度优化检索策略。
上下文相关性
上下文相关性用于衡量检索到的上下文与问题之间的相关性,避免包含无关冗余内容。取值同样在 0 到 1 之间,数值越高,表示检索到的上下文相关性越高 。计算公式为:上下文相关性 = 上下文中与问题相关的片段数量 / 上下文中片段总数量 。比如,检索到的上下文总共有 5 个片段,其中与问题相关的片段有 4 个,那么上下文相关性就是 4÷5=0.8 。
想要提升上下文相关性,在问题优化与扩展上,通过 LLM 对原问题进行改写或扩写,生成多个相关问题,覆盖用户意图的不同表达形式;应用 HyDE(假设性文档嵌入)生成假设性答案作为查询向量,增强问题与上下文的匹配度。分块策略优化时,根据文档类型调整分块大小和相邻分块的重叠大小;为每个文本块添加显式标题或背景,提升语义检索准确性;结构化文档,如将 PDF 文件先转为 Markdown 文件再进行分块;使用 LLM 生成主题连贯的文本块,替代传统递归分割,减少上下文断裂问题。还可以进行 Embedding 模型优化,采用更高性能的 Embedding 模型,或通过领域知识库微调 Embedding 模型。检索策略改进方面,采用混合检索,结合稠密检索(向量搜索)与稀疏检索(如 BM25),通过加权融合(如 60% 稠密 + 40% 稀疏)兼顾语义关联与关键词匹配,提升上下文相关性;将检索与重排序结合,先扩大检索范围(如 Top 100)实现最大化召回,然后使用重排序模型筛选 Top 5-10,兼顾效率与相关性;引入知识图谱(Knowledge Graph)增强检索,通过实体链接和路径扩展挖掘深层语义关系,解决传统 RAG 对复杂关系推理的不足。
答案忠实度
答案忠实度用于衡量实际答案是否严格基于检索到的上下文,避免幻觉,取值范围为 0 到 1,数值越高,表明实际答案越严格基于检索到的上下文。其计算公式是:答案忠实度 = 上下文能够推断出事实的数量 / 答案拆解出的事实总数量 。比如,实际答案拆解出 5 个事实,检索到的上下文覆盖其中 4 个事实,则答案忠实度为 4÷5=0.8 。
要提升答案忠实度,一方面要优化检索阶段的精准性,提高上下文召相关性,另一方面在生成阶段通过 Prompt 设计约束 LLM 严格按上下文生成答案。
答案相关性
答案相关性用于衡量实际答案是否直接完整回答用户问题,排除冗余或跑题。取值在 0 到 1 之间,数值越高,表示实际答案更直接完整回答用户问题。计算公式为:答案相关性 = 与实际问题相关的模拟问题数量 / 实际答案推导出的模拟问题总数量 。比如,实际答案推导出 5 个模拟问题,若其中 4 个与实际问题相关,那么答案相关性为 4÷5=0.8 。
提升答案相关性,需要优化检索阶段的精准性与全面性,提高上下文召回率和相关性;在生成阶段通过 Prompt 设计约束 LLM 直接完整回答用户问题。
答案正确性
答案正确性用于衡量实际答案的准确性,需与参考答案对比,取值在 0 到 1 之间,数值越高,表示实际答案与参考答案匹配度越高,准确性也就越高。计算公式为:答案准确性 = 实际答案覆盖的关键信息数量 / 参考答案中关键信息总数量 。比如,参考答案需要 5 个关键信息,若实际答案覆盖其中 4 个关键信息,则答案正确性为 4÷5=0.8 。
为提升答案正确性,同样需要优化检索阶段的精准性与全面性,提高上下文召回率和相关性;在生成阶段通过 Prompt 设计约束 LLM 直接完整回答用户问题。
RAG 评估方法大盘点
了解了评估指标后,我们再来看看有哪些实用的 RAG 评估方法。目前主要的评估方法包括用户反馈、人工标注和 LLM 评估 ,它们各有优劣,在不同场景下发挥着重要作用。
用户反馈
用户反馈是一种直接获取真实使用体验的评估方式。可以通过问卷调查、用户访谈、在线评论和客服记录等多种渠道收集用户反馈 。例如,设计简洁明了的问卷,涵盖系统的功能、性能、用户体验等多维度问题,像 "您对系统提供的答案满意吗""您认为系统的响应速度如何" ;进行一对一的用户访谈,深入了解用户的具体需求和不满之处;监控社交媒体、论坛等平台上的用户评论和讨论,以及记录客服与用户沟通中的问题和解决方案 。
这种方法的优点在于能反映真实用户体验,获取用户对系统的整体满意度和具体问题反馈,为改进提供方向 。但缺点也很明显,数据收集和分析成本高,且用户反馈可能存在主观性和片面性,受用户表达能力和情绪影响较大 。
人工标注
人工标注是邀请专家或人工评估员依据预先定义的标准,对 RAG 生成的结果进行质量评估,评估维度包括准确性、连贯性、相关性等 。比如在评估一个 RAG 生成的新闻稿件时,评估员会检查内容是否准确无误、语句是否通顺连贯、与主题是否紧密相关 。
其优势在于能提供高质量、细致的反馈,结果可靠性高 。然而,它也存在明显的缺点,耗时费力,需要大量人力和时间,成本较高,且不同评估员可能存在评估标准不一致的情况 。
LLM 评估
LLM 评估是利用强大的语言模型(如 GPT-4 等)作为评估工具,通过设计特定的评估 Prompt,让 LLM 对 RAG 生成的结果进行打分或评价 。比如,针对一个 RAG 生成的问答结果,向 LLM 提问 "请判断这个答案与问题的相关性,从 1 到 10 打分,并说明理由" 。
这种评估方法的优点是效率高、可扩展性强,能快速处理大量数据,且评估标准相对统一 。随着 LLM 技术的不断发展,其评估能力也在不断提升,未来有望成为主流的评估方式 。不过,它也有局限性,评估结果依赖于 LLM 的能力和准确性,可能会受到 LLM 自身局限性的影响,如对某些领域知识的理解偏差等 。
RAG 评估工具推荐
了解了评估指标和方法后,下面给大家推荐几款实用的 RAG 评估工具,帮助大家更高效地进行评估工作。
Prompt+LLM
使用 Prompt+LLM 是一种较为灵活的评估方式。我们可以精心设计特定的评估 Prompt,然后借助强大的语言模型(如 GPT-4 等)对 RAG 生成的结果进行打分或评价 。例如,针对一个 RAG 生成的文本摘要,我们可以向 LLM 提问 "请判断这个摘要是否准确概括了原文的主要内容,从 1 到 10 打分,并说明理由" 。通过这种方式,能够快速获得对 RAG 结果的初步评估。
然而,这种方式也面临一些挑战。一方面,它对 Prompt 的设计能力要求较高,需要精准地引导 LLM 进行评估 。如果 Prompt 设计不合理,可能导致 LLM 给出不准确的评价。另一方面,评估结果高度依赖于 LLM 的能力和准确性,不同的 LLM 可能会给出不同的评价,且 LLM 自身也存在对某些领域知识理解偏差等问题,这可能影响评估的可靠性 。
Trulens
Trulens 是一款专门用于评估和改进 LLM 应用的软件工具 ,它在 RAG 评估方面具有独特的优势。它相对独立,却可以与 LangChain 或 LlamaIndex 等 LLM 开发框架进行很好的集成 ,方便用于评估基于这些框架搭建的 RAG 应用 。
在实际应用中,TruLens 使用反馈函数来客观地衡量 LLM 应用的质量和效果,包括分析相关性、适用性和有害性等方面 。它提供程序化反馈,支持 LLM 应用的快速迭代,比人工反馈更快速、更可扩展 。例如,在开发一个基于 RAG 的智能客服系统时,使用 TruLens 可以实时监测用户提问与检索出的上下文之间的相关性,以及生成的回答与提问的相关性等指标,从而及时发现问题并进行优化 。
Ragas
Ragas 是一款专注于评估 RAG 应用的工具,通过简单的接口即可实现评估 ,使用起来非常便捷。使用时,只要把 RAG 过程中的 question、contexts、answer、ground_truths 构建成一个 Dataset 实例,就能一键启动测评 。
Ragas 的指标种类丰富多样,对 RAG 应用的框架没有要求 。它可以评估检索质量,如上下文相关性(context_relevancy)和上下文召回率(context_recall) ;也能评估生成质量,包括忠实度(faithfulness)和答案相关性(answer_relevancy)等 。同时,还可以结合 langsmith 来监控每次评估的过程,帮助分析每次评估的原因和观察 API key 的消耗 。比如在评估一个企业内部知识问答的 RAG 系统时,Ragas 可以全面评估系统在各个指标上的表现,为进一步优化提供详细的数据支持 。
总结
RAG 评估对于优化和提升 RAG 系统的性能至关重要。通过深入了解上下文召回率、上下文相关性、答案忠实度、答案相关性和答案正确性等关键评估指标,以及用户反馈、人工标注和 LLM 评估等多种评估方法,再结合 Prompt+LLM、Trulens、Ragas 等实用的评估工具,我们能够全面、准确地评估 RAG 系统,发现问题并及时改进 。
更多大模型知识
搜索【码上有模力】