您目前处于:AI&大模型
2025-02-27
|
|||||||||||||||||||
系列文章:自动化测试是工程优化的重要手段。借助量化的自动化测试,可以帮你在改进 RAG 应用时,从感觉变好了,转变为指标量化显示应用表现更好。这不仅可以帮助你更快地评估RAG应用的问答质量、找到优化方向,还能将你所作出的优化结果量化出来。 当然,有了自动化测试并不意味着你就完全不需要人工评估了,建议在实际应用时,邀请 RAG 应用对应的领域专家一起构建能反映真实场景问题分布的测试集,并且持续更新测试集。 同时,由于大模型并不能总是做到 100% 准确,也建议你在实际使用时,定期抽样评估自动化测试结果的精度,并且尽量不要频繁更换大模型与 embedding 模型。对于 Ragas,你可以通过调整默认评测方法中的提示词(比如补充和你的业务领域相关的参考样例),来改善其表现(详情请参考拓展阅读)。 一、使用 Ragas 来评估应用表现agas 提供了多项指标,可以用来全链路评测应用的问答质量。比如: 1、整体回答质量的评估:
2、生成环节的评估:
3、召回阶段的评估:
1、评估 RAG 应用回答质量(1)快速上手 在评估 RAG 应用整体回答质量时,使用 Ragas 的 Answer Correctness 是一个很好的指标。为了计算这个指标,你需要准备以下两种数据来评测 RAG 应用产生的 answer 质量:
(2)了解 answer correctness 的计算过程 从直观感受上 Answer correctness 的打分确实与你的预期相符。它在打分过程使用到了大模型与 embedding 模型,由 answer 和 ground_truth 的语义相似度和事实准确度计算得出。 语义相似度 语义相似度是通过 embedding 模型得到 answer 和 ground_truth 的文本向量,然后计算两个文本向量的相似度。向量相似度的计算有许多种方法,如余弦相似度、欧氏距离、曼哈顿距离等, Ragas 使用了最常用的余弦相似度。 事实准确度 事实准确度是衡量 answer 与 ground_truth 在事实描述上差异的指标。 answer 和 ground_truth 在事实描述上存在差异(工作方向),但也存在一致的地方(工作部门)。这样的差异很难通过大模型或 embedding 模型的简单调用来量化。Ragas 通过大模型将 answer 与 ground_truth 分别生成各自的观点列表,并对观点列表中的元素进行比较与计算。 下图可以帮助你理解 Ragas 衡量事实准确度的方法: 分数汇总 得到语义相似度和事实准确度的分数后,对两者加权求和,即可得到最终的 Answer Correctness 的分数。 2、评估检索召回效果(1)快速上手 Ragas 中的 context precision 和 context recall 指标可以用于评估 RAG 应用中的检索的召回效果。
实际应用时,可以将两者结合使用。 为了计算这些指标,你需要准备的数据集应该包括以下信息:
(2)了解 context recall 和 context precision 的计算过程 Context recall 你已经从上文了解到 context recall 是衡量 contexts 与 ground_truth 是否一致的指标。 在Ragas 中,context recall 用来描述 ground_truth 中有多少比例的观点可以得到 contexts 的支持,计算过程如下:
Context precision 在Ragas 中,context precision 不仅衡量了 contexts 中有多少比例的 context 与 ground_truth 相关,还衡量了 contexts 中 context 的排名情况。计算过程比较复杂:
3、其他推荐了解的指标Ragas 还提供了很多其他的指标,这里就不一一介绍,你可以访问 Ragas 的文档来查看更多指标的适用场景和工作原理。 Ragas 支持的指标可以访问:https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/ 二、如何根据 Ragas 指标进行优化做评测的最终目的不是为了拿到分数,而是根据这些分数确定优化的方向。你已经学习到了answer correctness、context recall、context precision三个指标的概念与计算方法,当你观察到某几个指标的分数较低时,应该制定相应的优化措施。 1、context recallcontext recall指标评测的是RAG应用在检索阶段的表现。如果该指标得分较低,你可以尝试从以下方面进行优化: (1)检查知识库 知识库是RAG应用的源头,如果知识库的内容不够完备,则会导致召回的参考信息不充分,从而影响context recall。你可以对比知识库的内容与测试样本,观察知识库的内容是否可以支持每一条测试样本(这个过程你也可以借助大模型来完成)。如果你发现某些测试样本缺少相关知识,则需要对知识库进行补充。 (2)更换embedding模型 如果你的知识库内容已经很完备,则可以考虑更换embedding模型。好的embedding模型可以理解文本的深层次语义,如果两句话深层次相关,那么即使“看上去”不相关,也可以获得较高的相似度分数。比如提问是“负责课程研发的是谁?”,知识库对应文本段是“张伟是教研部的成员”,尽管重合的词汇较少,但优秀的embedding模型仍然可以为这两句话打出较高的相似度分数,从而将“张伟是教研部的成员”这一文本段召回。 (3)query改写 作为开发者,对用户的提问方式做过多要求是不现实的,因此你可能会得到这样缺少信息的问题:“教研部”、“请假”、“项目管理”。如果直接将这样的问题输入RAG应用中,大概率无法召回有效的文本段。你可以通过对员工常见问题的梳理来设计一个prompt模板,使用大模型来改写query,提升召回的准确率。 2、context precision与context recall一样,context precision指标评测的也是RAG应用在检索阶段的表现,但是更注重相关的文本段是否具有靠前的排名。如果该指标得分较低,你可以尝试context recall中的优化措施,并且可以尝试在检索阶段加入rerank(重排序),来提升相关文本段的排名。 3、answer correctnessanswer correctness指标评测的是RAG系统整体的综合指标。如果该指标得分较低,而前两项分数较高,说明RAG系统在检索阶段表现良好,但是生成阶段出了问题。你可以尝试前边教程学到的方法,如优化prompt、调整大模型生成的超参数(如temperature)等,你也可以更换性能更加强劲的大模型,甚至对大模型进行微调等方法来提升生成答案的准确度。 拓展阅读更换 Ragas 的提示词模板Ragas 的许多评测指标是基于大模型来实现的。与 LlamaIndex 一样,Ragas 的默认提示词模板是英文的,同时允许自定义修改。你可以将 Ragas 各指标的默认提示词翻译成中文,使得评测的结果更符合中文问答场景。 我们在ragas_prompt文件夹中提供了中文的提示词模板,你可以参考以下代码将中文提示词适配到 Ragas 的不同指标中。
更多评价指标除了RAG外,还有许多种大模型或者自然语言处理(NLP)的应用或任务,如Agent、NL2SQL、机器翻译、文本摘要等。Ragas提供了许多可以评测这些任务的指标。
课后小测验【单选题】Context Precision 指标检测的是?( )
答案:B 转载请并标注: “本文转载自 linkedkeeper.com ” ©著作权归作者所有 |
|||||||||||||||||||