虽然基础指标提供了一个起点,但生产级RAG系统需要更精密的评估方法。简单的衡量标准,例如检索命中率或通用文本生成得分(如BLEU),常常无法反映检索器和生成器之间复杂的配合,也无法衡量答案质量的方面,例如事实一致性以及与用户真实意图的相关性。这就是进阶评估框架发挥作用的地方,它们提供结构化的方法和专业指标,以全面分析和量化RAG性能。这些框架不仅有助于基准测试,而且在找出RAG管道中需要改进的具体地方也很有帮助。在此方面有两个突出的例子是 RAGAS(检索增强生成评估)和 ARES(自动化RAG评估系统)。虽然两者都旨在让人们对RAG的效用有更全面的认识,但它们解决问题的方式不同,所用的方法论和工具集也不同。定义和整合符合应用独有需求的自定义指标的能力,仍然是成熟评估策略的重要组成部分。RAGAS:RAG组件评估RAGAS是一个开源框架,旨在通过侧重于其核心组成部分:检索和生成的表现来评估RAG管道。它遵循的原则是,RAG系统的质量取决于它获取相关上下文,并忠实地利用该上下文生成准确且相关的答案的能力。RAGAS引入了多项重要指标,其中许多指标都运用大型语言模型作为评估器,以模拟人类判断。RAGAS中的重要指标包括:忠实度:这衡量生成答案与所检索上下文的事实一致性。如果答案中所有陈述都可以从提供的上下文中推断出来,则该答案被认为是忠实的。计算通常涉及一个大型语言模型评估答案中的陈述是否得到上下文的支持。低忠实度分数表示生成器可能在“幻觉”或错误理解了检索到的信息。 分数通常计算如下: $$ \text{忠实度} = \frac{\text{答案中得到上下文支持的陈述数量}}{\text{答案中陈述的总数量}} $$答案相关性:此指标评估生成的答案与原始查询的匹配程度。它与忠实度不同,因为一个答案可以忠实于上下文,但与问题无关。答案相关性通常使用大型语言模型进行评估,以估计答案与查询之间的语义相似性或直接性,有时通过从答案生成潜在问题并将其与原始查询进行比较来评估。上下文精确度:这评估检索到的上下文中的信噪比。检索到的信息块是否真正相关并有助于回答查询?可以提示大型语言模型来确定上下文的每一部分对于形成答案是否真正有价值。高上下文精确度表示检索器正在高效识别有用信息。 $$ \text{上下文精确度} = \frac{\text{相关上下文块的数量}}{\text{检索到的上下文块的总数量}} $$ (注意:RAGAS的实际实现更为详细,通常会根据判断为回答查询所需的上下文中的句子级别相关性进行考量)。上下文召回率:这衡量检索器从可用真实数据(或全面知识库)中获取所有必要信息以充分回答查询的程度。在没有针对每个查询明确定义的真实上下文的情况下,这可能很难衡量。一种方法是使用大型语言模型来确定所提供的上下文是否足以回答问题,或将检索到的上下文与“黄金标准”上下文集进行比较。 $$ \text{上下文召回率} = \frac{\text{上下文中找到的必要真实语句数量}}{\text{必要真实语句的总数量}} $$答案语义相似度:如果提供了真实答案,此指标将比较生成答案与参考答案之间的语义相似度(例如,使用基于嵌入的余弦相似度)。答案正确性:当提供了真实答案时,这评估生成答案与真实数据的事实正确性。这可以是忠实度的一种更严格的形式,它还考虑外部知识或预定义的正确答案。RAGAS通常需要诸如查询、生成答案、检索到的上下文等输入,对于某些指标,还需要真实答案或上下文。它的优势在于其针对组件的特定指标,这有助于进行有目的的改进。然而,它依赖大型语言模型作为评估者,这意味着评估可能受到评估模型偏见和不一致性的影响,并且随着大量测试,评估成本会增加。精心设计这些评估用大型语言模型的提示也同样重要。ARES:基于合成数据和训练判别器的自动化评估ARES(自动化RAG评估系统)为RAG评估提供了不同的视角,经常侧重于生成合成评估数据集,并训练大型语言模型评估器以更好地与人类偏好保持一致,其判断还附带置信度分数。目标是构建一个更具可扩展性和可靠性的自动化评估流程,该流程可以推动RAG系统进行迭代式改进。ARES方法的重要方面通常包括:合成数据生成:ARES方法学通常涉及创建包含查询、相关上下文以及有时理想答案的合成数据集。这可以通过使用大型语言模型从现有文档中生成问题,或基于知识库创建合理的问答对来实现。这使得即使在没有大量人工标注数据的情况下也能进行评估。带置信度的大型语言模型评估器:与RAGAS类似,ARES使用大型语言模型来评估上下文相关性、答案忠实度、答案相关性等方面。然而,ARES可能侧重于训练这些评估用大型语言模型,也许通过基于人类反馈的少量样本学习或偏好微调,以改善它们与人类评估者的对齐程度。尤其重要的是,ARES通常纳入机制,让这些大型语言模型评估器在评估的同时输出一个置信度分数。这有助于理解自动化分数的可靠性。例如,低忠实度置信度分数可能标记一个需要人工复核的模糊情况。迭代评估与改进:该框架旨在支持一个迭代循环:评估RAG系统,根据指标和置信度分数找到不足之处,进行有针对性的改进(例如,微调检索器或生成器,调整提示),然后重新评估。ARES评估的核心指标(上下文相关性、答案忠实度、答案相关性)与RAGAS中的相似,但获取这些分数的方法,特别是通过可能经过训练的评估器和使用合成生成数据,标志着一个不同之处。类似ARES方法学的优势在于其在测试用例生成方面的更大自动化潜力,以及更细致、考虑置信度的判断。然而,合成数据生成和大型语言模型评估器训练的初始设置可能更复杂。合成数据的质量也是一个非常重要的因素;如果它不能反映使用模式,评估结果可能不具代表性。以下图表展示了这些进阶评估框架的信息总体流程:digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fontcolor="#495057"]; edge [fontname="sans-serif", color="#495057", fontcolor="#495057"]; subgraph cluster_inputs { label="RAG系统输出与真实数据(可选)"; bgcolor="#f8f9fa"; Query [label="查询", style="filled", fillcolor="#e9ecef"]; Contexts [label="检索到的上下文", style="filled", fillcolor="#e9ecef"]; Answer [label="生成答案", style="filled", fillcolor="#e9ecef"]; GT_Answer [label="真实答案(可选)", shape=parallelogram, style="filled", fillcolor="#dee2e6"]; GT_Contexts [label="真实上下文(可选)", shape=parallelogram, style="filled", fillcolor="#dee2e6"]; } subgraph cluster_framework { label="评估框架(例如:RAGAS, ARES)"; bgcolor="#f8f9fa"; LLM_Judge [label="基于大型语言模型的评估器/评分逻辑", shape=cylinder, style="filled", fillcolor="#74c0fc", fontcolor=white]; } subgraph cluster_outputs { label="评估指标"; bgcolor="#f8f9fa"; Faithfulness [label="忠实度", shape=ellipse, style="filled", fillcolor="#69db7c", fontcolor=white]; AnswerRelevancy [label="答案相关性", shape=ellipse, style="filled", fillcolor="#69db7c", fontcolor=white]; ContextPrecision [label="上下文精确度/相关性", shape=ellipse, style="filled", fillcolor="#69db7c", fontcolor=white]; ContextRecall [label="上下文召回率", shape=ellipse, style="filled", fillcolor="#69db7c", fontcolor=white]; CustomMetrics [label="自定义指标...", shape=ellipse, style="filled", fillcolor="#ffe066", fontcolor="#495057"]; } Query -> LLM_Judge [color="#868e96"]; Contexts -> LLM_Judge [color="#868e96"]; Answer -> LLM_Judge [color="#868e96"]; GT_Answer -> LLM_Judge [style=dashed, color="#adb5bd"]; GT_Contexts -> LLM_Judge [style=dashed, color="#adb5bd"]; LLM_Judge -> Faithfulness [color="#40c057"]; LLM_Judge -> AnswerRelevancy [color="#40c057"]; LLM_Judge -> ContextPrecision [color="#40c057"]; LLM_Judge -> ContextRecall [color="#40c057"]; LLM_Judge -> CustomMetrics [color="#fcc419"]; }RAG评估框架的输入和输出总体流程。可选输入用虚线表示。为特定需求开发自定义指标虽然RAGAS和ARES等框架提供了出色的基础指标,但它们可能无法涵盖与您的特定应用或业务目标相关的所有方面。生产RAG系统通常需要根据其独有的运行场景和预期结果来定制指标。在以下情况下,可以考虑开发自定义指标:特定领域要求:您的RAG系统在专业领域(例如,法律、医疗、金融)中运行,对答案质量或信息呈现有特定标准。例如,法律RAG系统可能需要评估其准确引用特定判例法案的能力。业务KPIs:RAG系统的性能与具体的业务绩效指标挂钩。例如,如果一个由RAG驱动的聊天机器人旨在减少客户服务电话,那么一个指标可以是“解决率”或“分流得分”。安全与合规:您对有害内容、偏见或遵守法规有严格要求。可以设计自定义指标来专门检测和惩罚违规行为。任务特有细节:RAG系统执行专业任务,例如代码生成、复杂摘要或比较分析。标准指标可能不足以满足需求。例如:引用精确度/召回率:如果您的RAG系统预期提供来源,您将需要指标来评估其提供来源的准确性和全面性。这包括检查引用的来源是否相关以及是否所有必要来源都被引用。遵守格式/风格指南:如果生成输出必须遵循特定模板或风格约定。特定信息类型的存在性:例如,确保财务摘要RAG在上下文中存在时始终包含重要的数字,如收入或利润率。在创建自定义指标时,明确定义该特定方面的“良好”标准是什么。确定如何衡量它,理想情况下以自动化或半自动化方式。这可能涉及基于规则的检查、关键词识别、模式匹配,甚至为特定评估任务训练更小、更专业的模型。平衡指标的复杂性与其实用性,以及实施和维护所需的工作量。整合框架与自定义指标最有效的评估策略通常涉及结合现有框架和自定义开发的指标。您可以从RAGAS或类似ARES的设置开始,以涵盖检索和生成质量的基本方面。然后,叠加解决您的应用独有需求的自定义指标。这种分层方法让您可以从现有框架的标准化、经过充分研究的指标中获益,同时确保您的评估全面体现RAG系统的特定成功标准。目标是构建一个全面的指标仪表板,它能提供系统性能的整体视图,使您能够就优化和持续开发做出明智的决策。多个开源库和工具可以帮助实施这些评估策略。例如,ragas库直接实现了RAGAS指标。LlamaIndex和LangChain包含可支持类似ARES评估流程和各种RAG特定指标计算的工具。DeepEval是另一个提供了一套用于大型语言模型应用(包括RAG)评估器和指标的库。在选择工具时,请考虑它们的灵活性、与现有MLOps管道的集成便捷性,以及对您计划实现指标类型的支持。