文章详细介绍了大型语言模型应用的评估方法,涵盖多轮对话、RAG系统和智能体应用程序的关键指标。讨论了传统指标如BLEU、ROUGE,以及新兴的"LLM作为评判者"方法。针对RAG系统,文章分析了检索和生成两部分的评估指标;针对智能体,则关注任务完成和工具正确性。最后比较了RAGAS、DeepEval、OpenAI的Evals和MLFlow的Evals等评估框架,帮助开发者选择适合的工具,确保系统性能和一致性。

前排提示,文末有大模型AGI-CSDN独家资料包哦!

评估不同系统时可以测量的各种指标

基于智能体的评估(Agentic Evals)主要是关于测试您的LLM应用程序,以确保其性能的一致性。

这可能不是最令人兴奋的话题,但越来越多的公司开始关注它。因此,深入研究哪些指标可以用来实际衡量性能是值得的。

在推送更改时,拥有适当的评估也有助于确保系统不会出现异常。

因此,在本文中,我研究了多轮聊天机器人、RAG(检索增强生成)和基于智能体应用程序的常见指标。

我还简要介绍了DeepEval、RAGAS和OpenAI的Evals库等框架,以便您了解何时选择何种工具。

img

我们稍后将介绍的几种流行评估框架

本文分为两部分。如果您是新手,第1部分会简要讨论传统指标如BLEU和ROUGE,涉及LLM基准测试,并介绍在评估中使用LLM作为评判者的概念。

如果这些对您来说不陌生,可以跳过这部分。第2部分深入探讨了不同类型LLM应用程序的评估。

我们以前的做法

如果您熟悉我们如何评估NLP任务以及公共基准测试的工作原理,可以跳过第一部分。

如果不熟悉,了解准确率和BLEU等早期指标最初的用途和工作原理,以及我们如何测试MMLU等公共基准是有益的。

评估NLP任务

当我们评估传统的NLP任务,如分类、翻译、摘要等时,我们会使用传统指标,如准确率(accuracy)、精确率(precision)、F1值、BLEU和ROUGE。

img

这些指标至今仍在使用,但主要用于模型产生单一、易于比较的"正确"答案的情况。

以分类为例,任务是为每个文本分配一个标签。为了测试这一点,我们可以使用准确率,通过比较模型分配的标签与评估数据集中的参考标签,看它是否正确。

这非常明确:如果分配了错误的标签,得分为0;如果分配了正确的标签,得分为1。

这意味着,如果我们为包含1,000封电子邮件的垃圾邮件数据集构建分类器,而模型正确标记了其中的910封,则准确率为0.91。

对于文本分类,我们通常还使用F1值、精确率和召回率。

对于摘要和机器翻译等NLP任务,人们经常使用ROUGE和BLEU来查看模型的翻译或摘要与参考文本的匹配程度。

这两种评分都计算重叠的n-gram,虽然比较的方向不同**,**但本质上意味着共享的词块越多,得分越高。

这种方法相当简单,因为如果输出使用不同的措辞,得分会很低。

所有这些指标在有单一正确答案的情况下效果最佳,通常不适合我们今天构建的LLM应用程序。

LLM基准测试

如果您关注新闻,可能已经注意到每次发布大型语言模型的新版本时,都会跟随一些基准测试:MMLU Pro、GPQA或Big-Bench。

img

这些是通用评估,正确的术语实际上是"基准测试"(benchmark)而非"评估"(evals)(我们稍后会介绍)。

虽然每个模型还进行了其他各种评估,包括毒性、幻觉和偏见方面的评估,但最受关注的是那些更像考试或排行榜的评估。

像MMLU这样的数据集是多项选择题,已经存在很长时间了。我实际上曾浏览过它,发现它相当混乱。

一些问题和答案相当模糊,这让我认为LLM提供商会尝试在这些数据集上训练他们的模型,以确保它们能够正确回答。

这在公众中引起了一些担忧,认为大多数LLM在这些基准测试上表现良好时可能只是过拟合,这也是为什么需要更新的数据集和独立评估的原因。

LLM评分器

要对这些数据集进行评估,通常可以使用准确率和单元测试。然而,现在的不同之处在于增加了所谓的"LLM作为评判者"(LLM-as-a-judge)。

为了对模型进行基准测试,团队主要使用传统方法。

只要是多项选择题或只有一个正确答案,除了将答案与参考进行精确匹配外,不需要其他方法。

img

对于多答案问题,我们只需解析响应

这适用于MMLU和GPQA等具有多项选择答案的数据集。

对于编码测试(HumanEval、SWE-Bench),评分器可以简单地运行模型的补丁或函数。如果每个测试都通过,则问题被视为已解决,反之亦然。

然而,可以想象,如果问题模糊或开放式,答案可能会波动。这一差距导致了"LLM作为评判者"的兴起,即使用GPT-4等大型语言模型对答案进行评分。

img

我们让LLM通过推理对答案进行评分

MT-Bench是使用LLM作为评分器的基准测试之一,它将两个竞争的多轮对话答案输入GPT-4,并询问哪一个更好。

使用人类评分员的Chatbot Arena,我认为现在也通过结合使用LLM作为评判者来扩展规模。

为了透明起见,您还可以使用BERTScore等语义评分器来比较语义相似性。我简略介绍了现有的方法,以保持内容简洁。

因此,团队可能仍然使用BLEU或ROUGE等重叠指标进行快速检查,或在可能的情况下依赖精确匹配解析,但新的方法是让另一个大型语言模型来评判输出。

我们如何处理LLM应用程序

现在主要的变化是我们不仅测试LLM本身,还测试整个系统。

img

我们评估的是整个系统的输出,而不仅仅是LLM

在可能的情况下,我们仍然使用程序化方法进行评估,就像以前一样。

对于更细微的输出,我们可以从便宜且确定性的方法如BLEU或ROUGE开始,查看n-gram重叠,但现在大多数现代框架将使用LLM评分器进行评估。

有三个值得讨论的领域:如何评估多轮对话、RAG和智能体,包括评估方法和可以使用的指标类型。

您可以在下面看到这三个领域中已经定义的大量指标。

img

在介绍帮助我们的不同框架之前,我们将简要讨论所有这些指标。

多轮对话

第一部分是关于为多轮对话构建评估,即我们在聊天机器人中看到的那种。

当我们与聊天机器人互动时,我们希望对话感觉自然、专业,并且它能记住正确的信息。我们希望它在整个对话中保持主题,并实际回答我们提出的问题。

这里有一些人们跟踪的标准指标。首先我们可以讨论相关性/连贯性(Relevancy/Coherence)和完整性(Completeness)。

相关性是一个应该跟踪LLM是否适当地解决用户查询并保持主题的指标,而完整性则是指最终结果是否真正解决了用户的目标。

img

也就是说,如果我们可以跟踪整个对话的满意度,我们也可以跟踪它是否真正"降低了支持成本"并增加了信任,同时提供高"自助服务率"。

第二部分是知识保留(Knowledge Retention)和可靠性(Reliability)。

也就是说:它是否记住了对话中的关键细节,我们是否可以信任它不会"迷失"?它不仅需要记住细节,还需要能够纠正自己。

img

这是我们在编程工具中看到的情况。它们忘记了自己犯过的错误,然后继续犯同样的错误。我们应该将此视为低可靠性或稳定性。

我们可以跟踪的第三部分是角色遵守(Role Adherence)和提示对齐(Prompt Alignment)。这跟踪LLM是否坚持其被赋予的角色,以及是否遵循系统提示中的指令。

接下来是关于安全的指标,如

幻觉(Hallucination)和偏见/毒性(Bias/Toxicity)。

幻觉很重要但也很难跟踪。人们可能尝试设置网络搜索来评估输出,或者将输出分成不同的声明,由更大的模型评估(LLM作为评判者风格)。

还有其他方法,如SelfCheckGPT,它通过在同一提示上多次调用模型来检查模型的一致性,看它是否坚持原始答案以及它偏离的次数。

对于偏见/毒性,您可以使用其他NLP方法,如微调的分类器。

您可能想要跟踪的其他指标可能是特定于您的应用程序的,例如,代码正确性、安全漏洞、JSON正确性等。

至于如何进行评估,您并不总是需要使用LLM,尽管在大多数情况下,标准解决方案确实使用LLM。

在我们可以提取正确答案的情况下,例如解析JSON,我们自然不需要使用LLM。正如我前面所说,许多LLM提供商也使用单元测试对与代码相关的指标进行基准测试。

不言而喻,用于评判的LLM并不总是超级可靠,就像它们评估的应用程序一样,但我没有具体数据提供给您,所以您需要自行寻找这方面的信息。

检索增强生成(RAG)

继续构建我们可以跟踪的多轮对话指标,我们可以转向使用RAG时需要测量的内容。

对于RAG系统,我们需要将过程分为两部分:分别测量检索和生成指标。

img

要测量的第一部分是检索,以及获取的文档是否是查询的正确文档。

如果我们在检索方面得分较低,我们可以通过设置更好的分块策略、更改嵌入模型、添加混合搜索和重排序等技术、使用元数据过滤等方法来调整系统。

为了测量检索,我们可以使用依赖于精心策划的数据集的旧指标,或者使用以LLM作为评判者的无参考方法。

我首先需要提到经典的IR(信息检索)指标,因为它们是最早出现的。对于这些指标,我们需要"黄金"答案,即设置一个查询,然后为该特定查询对每个文档进行排名。

虽然您可以使用LLM构建这些数据集,但我们不使用LLM进行测量,因为我们已经在数据集中有了可以比较的分数。

img

最著名的IR指标是Precision@k、Recall@k和Hit@k。

这些指标测量获取的相关文档数量、基于黄金参考答案检索到的相关文档数量,以及至少一个相关文档是否进入了结果。

RAGAS和DeepEval等较新的框架引入了无参考、LLM评判风格的指标,如上下文召回率(Context Recall)和上下文精确率(Context Precision)。

这些指标根据查询计算真正相关的块有多少进入了前K列表,使用LLM进行评判。

也就是说,基于查询,系统是否真的返回了任何相关文档,或者是否有太多不相关的文档无法正确回答问题?

要构建用于评估检索的数据集,您可以从真实日志中挖掘问题,然后让人类进行策划。

您还可以使用LLM的帮助使用数据集生成器,这些生成器存在于大多数框架中,或者作为独立工具,如YourBench。

如果您要使用LLM设置自己的数据集生成器,可以执行以下操作。

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line

如果我们转向RAG系统的生成部分,我们现在测量它如何使用提供的文档回答问题。

如果这部分表现不佳,我们可以调整提示,调整模型设置(温度等),完全替换模型,或者针对领域专业知识进行微调。我们还可以强制它使用CoT风格的循环进行"推理",检查自我一致性等。

对于这部分,RAGAS提供了有用的指标:答案相关性(Answer Relevancy)、忠实度(Faithfulness)和噪声敏感性(Noise Sensitivity)。

img

这些指标询问答案是否真正解决了用户的问题,答案中的每个声明是否都得到了检索文档的支持,以及一点不相关的上下文是否会使模型偏离轨道。

如果我们看RAGAS,对于第一个指标,他们可能会要求LLM"从0到1评分这个答案直接解决问题的程度",提供问题、答案和检索的上下文。这会返回一个原始的0-1分数,可用于计算平均值。

因此,总结一下,我们将系统分为两部分进行评估,虽然您可以使用依赖于IR指标的方法,但也可以使用依赖于LLM评分的无参考方法。

最后,我们需要介绍智能体如何扩展我们现在需要跟踪的指标集,超出我们已经介绍的内容。

智能体

对于智能体,我们不仅关注输出、对话和上下文。

现在我们还评估它如何"移动":它是否能完成任务或工作流程,它的效率如何,以及它是否在正确的时间调用正确的工具。

框架可能会对这些指标有不同的称呼,但本质上您想要跟踪的两个主要指标是任务完成(Task Completion)和工具正确性(Tool Correctness)。

img

对于跟踪工具使用情况,我们想知道是否为用户的查询使用了正确的工具。

我们确实需要某种带有内置真实情况的黄金脚本来测试每次运行,但您可以一次性编写它,然后在每次进行更改时使用它。

对于任务完成,评估是阅读整个跟踪和目标,并返回一个介于0和1之间的数字,并附有理由。这应该衡量智能体完成任务的有效性。

对于智能体,您仍然需要测试我们已经介绍过的其他方面,具体取决于您的应用程序。

我必须指出:即使有相当多的已定义指标可用,您的用例会有所不同,所以值得了解常见的指标,但不要假设它们是跟踪您的应用程序的最佳指标。

接下来,让我们概述一下可以帮助您的流行框架。

帮助您的框架

有相当多的框架可以帮助您进行评估,但我想谈谈几个流行的框架:RAGAS、DeepEval、OpenAI和MLFlow的Evals,并分析它们的优势以及何时使用哪一个。

img

您可以在这个仓库中找到我发现的不同评估框架的完整列表。

您还可以使用相当多的特定于框架的评估系统,如LlamaIndex,特别是用于快速原型设计。

OpenAI和MLFlow的Evals是附加组件而非独立框架,而RAGAS主要是为评估RAG应用程序而构建的指标库(尽管它们也提供其他指标)。

DeepEval可能是所有这些中最全面的评估库。

img

然而,重要的是要提到,它们都提供了在自己的数据集上运行评估的能力,适用于多轮对话、RAG和智能体,支持LLM作为评判者,允许设置自定义指标,并且对CI友好。

它们的区别,如前所述,在于它们的全面性。

MLFlow主要是为评估传统ML管道而构建的,因此它为基于LLM的应用程序提供的指标数量较少。OpenAI是一个非常轻量级的解决方案,期望您设置自己的指标,尽管它提供了一个示例库来帮助您入门。

RAGAS提供了相当多的指标,并与LangChain集成,因此您可以轻松运行它们。

DeepEval提供了大量开箱即用的功能,包括RAGAS指标。

img

框架比较,请参见这里的Github仓库

如果我们看一下提供的指标,我们可以了解这些解决方案的广泛程度。

值得注意的是,提供指标的框架并不总是遵循标准命名。它们可能指的是同一件事,但称呼不同。

例如,一个框架中的忠实度(faithfulness)可能与另一个框架中的接地性(groundedness)相同。答案相关性(answer relevancy)可能与响应相关性(response relevance)相同,等等。

这在评估系统方面造成了很多不必要的混淆和复杂性。

尽管如此,DeepEval以超过40个可用指标脱颖而出,并提供了一个名为G-Eval的框架,帮助您快速设置自定义指标,使其成为从想法到可运行指标的最快途径。

OpenAI的Evals框架更适合于需要定制逻辑的情况,而不是仅需要快速评判的情况。

根据DeepEval团队的说法,自定义指标是开发人员最常设置的,所以不要纠结于谁提供什么指标。您的用例将是独特的,评估方式也是如此。

那么,在什么情况下应该使用哪种框架?

当您需要针对RAG管道的专门指标且设置最少时,使用RAGAS。当您想要一个完整的、开箱即用的评估套件时,选择DeepEval。

如果您已经投资于MLFlow或偏好内置跟踪和UI功能,MLFlow是一个不错的选择。OpenAI的Evals框架是最基础的,因此如果您与OpenAI基础设施绑定并希望灵活性,它是最佳选择。

最后,DeepEval还通过其DeepTeam框架提供红队测试,该框架自动化LLM系统的对抗性测试。其他框架也提供这一功能,尽管可能不那么全面。

我将来需要研究LLM系统的对抗性测试和提示注入。这是一个有趣的话题。

数据集业务是一个利润丰厚的业务,这就是为什么我们现在能够使用其他LLM来注释数据或评分测试是很好的。

然而,LLM评判者并不神奇,您设置的评估可能会有点不稳定,就像您构建的任何其他LLM应用程序一样。根据互联网的说法,大多数团队和公司每隔几周进行人工抽样审核以保持真实性。

您为应用程序设置的指标可能是自定义的,所以即使我现在让您听了很多标准指标,您可能还是会构建自己的指标。

了解标准指标是什么还是很好的。

希望这篇文章对您有所启发。

如果您喜欢这篇文章,请务必阅读我关于智能体框架或构建高级RAG智能体的其他文章。

该框架自动化LLM系统的对抗性测试。其他框架也提供这一功能,尽管可能不那么全面。

我将来需要研究LLM系统的对抗性测试和提示注入。这是一个有趣的话题。

数据集业务是一个利润丰厚的业务,这就是为什么我们现在能够使用其他LLM来注释数据或评分测试是很好的。

然而,LLM评判者并不神奇,您设置的评估可能会有点不稳定,就像您构建的任何其他LLM应用程序一样。根据互联网的说法,大多数团队和公司每隔几周进行人工抽样审核以保持真实性。

您为应用程序设置的指标可能是自定义的,所以即使我现在让您听了很多标准指标,您可能还是会构建自己的指标。

了解标准指标是什么还是很好的。

希望这篇文章对您有所启发。

如果您喜欢这篇文章,请务必阅读我关于智能体框架或构建高级RAG智能体的其他文章。

文章来自网上,侵权请联系博主
读者福利:倘若大家对大模型感兴趣,那么这套大模型学习资料一定对你有用。

针对0基础小白:

如果你是零基础小白,快速入门大模型是可行的。
大模型学习流程较短,学习内容全面,需要理论与实践结合
学习计划和方向能根据资料进行归纳总结

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

这里我们能提供零基础学习书籍和视频。作为最快捷也是最有效的方式之一,跟着老师的思路,由浅入深,从理论到实操,其实大模型并不难

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

更多推荐