大模型 | RAG系统落地实践如何进行评估?一文带你熟悉RAG 应用评估框架 RAGAS

现如今随着LLM的发展,RAG demo项目已经可以迅速被产出。但是真正完全落地到生产实践中却没有那么容易。那么,我们该如何判断RAG应用是否已经准备好进入生产阶段呢?显然,如果团队资源充足,比如你们有CX人员,那么完全可以通过人工测试来评估其准确性,但这种方法的评测指标过于单一。本文将为您介绍一个全自动化的 RAG 应用评估框架——RAGAS。

1. 从哪些维度进行评估

RAGas,也就是 RAG Assessment 的缩写,它是一个专门设计出来的解决方案,旨在评估、监控并提高大语言模型(LLM)和RAG应用在实际生产环境中的性能,包括用于生产质量监控的定制模型。除了评估功能,RAGas还能自动生成测试集,这一特性将极大地减轻人力负担,因为创建优质数据集通常会耗费大量时间和劳动力。RAGas从生成和检索两个角度对RAG应用进行评估,如下图所示:

在RAG系统的构建过程中,我们常常面临无法获取标签数据集或标准解答的问题。在RAGAS中,作者特别强调了三个至关重要的质量评价指标。

  • 忠实度(Faithfulness):这一指标要求生成的答案必须基于给定的上下文,有助于防止产生不切实际的信息,并保证被检索到的上下文能为产生的答案提供可靠的依据。

  • 答案相关性(Answer Relevance): 这意味着生成的答案需要直接回应所提出的问题。

  • 上下文相关性(Context Relevance):这个指标要求所检索到的上下文必须是专一且精确的,以最大限度地减少无关信息的干扰。考虑到大型语言模型(LLMs)处理长上下文时可能产生的成本,这一点显得尤为重要。此外,当上下文过长时,LLMs在利用这些信息方面往往效率较低,特别是当需要的信息被藏在上下文的中间部分时,会出现"信息丢失"(Loss in the middle)的问题。

2. 具体有哪些指标

Answer relevance(答案相关性)

只有当一个答案直接并适切地解决了原始问题,我们才能将其视为相关。关键在于,我们对答案的相关性评估,并不围绕其事实性进行,而是针对答案不完全或包含冗余信息的情形进行扣分。其基本理念是,如果生成的答案精确地解答了初始问题,那么大型语言模型应该能够从这个答案中生成一条与原始问题相符的问题。

为了评估这种相关性,我们需要对给定的答案answer进行处理,引导大型语言模型(LLM)根据答案内容构建出n个可能的问题question,使用的prompt类似如下:

Generate a question for the given answer.

answer: [answer]

然后,我们使用OpenAI API提供的text-embedding-ada-002模型为这些问题生成文本嵌入。对每个问题qi,我们通过计算原始问题和生成问题的嵌入向量间的余弦相似度来衡量它们的相似程度。

针对问题q的答案相关性得分AR可以按照以下公式计算:

这个指标用于测量生成的答案与原始问题或指令的匹配程度。

Faithfulness(忠实度)

生成的答案被认为是可靠的,前提是其所有观点都能从提供的背景信息中得出。评估这个因素的步骤包括首先在答案中找出关键观点。接着,用每个观点去核查原始的背景,确定其能否在其中找到依据。忠实度评分是根据以下计算方法得出的:Faithfulness = 可以从上下文中得到的观点数量 / 生成答案中的总观点数量

在评估这样的可信度时,我们首先采用大型语言模型(LLM)将回答拆解为一组更为精细的声明集合S(as(q))。此步骤旨在把复杂的句子分解为清晰简洁的陈述集。采用如下类似的prompt来实现这一点:

Given a question and answer, create one or more statements from each sentence in the given answer.

question: [question]

answer: [answer]

接着,对于陈述集中的每项陈述si,LLM通过验证函数v(si, c(q))来判定si是否能够由上下文c(q)所支持。验证过程遵循以下prompt:

Consider the given context and following statements, then determine whether they are supported by the information present in the context. Provide a brief explanation for each statement before arriving at the verdict (Yes/No). Provide a final verdict for each statement in order at the end in the given format. Do not deviate from the specified format.

statement: [statement 1]

...

statement: [statement n]

Context Relevancy(上下文相关性)

Context Relevancy衡量了检索到的上下文的相关性,基于问题和上下文进行计算。值落在范围内,较高的值表示更好的相关性。

理想情况下,检索到的上下文应该专门包含用于回答提供的查询的关键信息。为了计算这个度量标准,我们首先通过确定在检索到的上下文中与回答给定问题相关的句子来估计的值。最终的得分由以下公式确定:

在这里插入图片描述

其中,是在检索到的上下文中与回答给定问题相关的句子数量,而分母是检索到的上下文中的总句子数量。

使用到的prompt类似如下:

Please extract relevant sentences from the provided context that can potentially help answer the following question. If no relevant sentences are found, or if you believe the question cannot be answered from the given context, return the phrase "Insufficient Information". While extracting candidate sentences you’re not allowed to make any changes to sentences from given context.

Context Recall

Context Recall 是基于标注回答(ground_truths)和检索到的上下文进行计算的,取值范围在0到1之间,较高的值表示更好的性能。计算上下文召回的公式如下:

在这里插入图片描述

Answer semantic similarity

Answer semantic similarity评估生成的答案与标准回答之间的语义相似程度。测量得到的答案和标注回答的语义相似性可以为生成的响应的质量提供有价值的见解。这个评估利用交叉编码模型来计算语义相似性分数。

Aspect Critique

Aspect Critique是一种评估提交内容的方法,它是根据预设的一些方面(例如,无害和正确)进行评估。此外,用户也可以根据自己特定的标准来定义他们自己的评估方面。方面评审的结果是二进制形式的,表现为提交的内容是否符合所定义的各个方面。这种评估是以"答案"为输入进行的。

在LLM评估器中,内部的评估器会基于所提供的方面对提交的内容进行评估。Ragas Critiques提供了一系列预定义的方面,例如正确性和无害性等(你可以参考SUPPORTED_ASPECTS获取完整的列表)。如果你想要的话,还可以创建属于自己的自定义方面,依照你特殊的需求来评估提交的内容。

3. 如何使用

首先通过pip安装一下对应的包,我安装的是版本是0.2.12。

pip install ragas

然后需要准备数据集,这里为了演示,我只准备了一条数据,你们可以根据你们的需要整理数据集,数据集的每条数据包含4个属性:

  • user_input:用户的query

  • retrieved_contexts: 上下文信息

  • response: llm给出的回答

  • reference:真实的参考答案

from ragas.metrics import Faithfulness, ContextPrecision, AnswerRelevancy, ContextRecall
from langchain_openai import OpenAIEmbeddings
from langchain_openai import ChatOpenAI
from ragas.llms import LangchainLLMWrapper
from ragas import evaluate
from ragas import EvaluationDataset


dataset = []
dataset.append({
    
    "user_input": "Who introduced the theory of relativity?",
                "retrieved_contexts": ['Albert Einstein proposed the theory of relativity, which transformed our understanding of time, space, and gravity.'],
                "response": "Albert Einstein introduced the theory of relativity",
                "reference": "Albert Einstein proposed the theory of relativity, which transformed our understanding of time, space, and gravity."})

evaluation_dataset = EvaluationDataset.from_list(dataset)


llm = ChatOpenAI(model="gpt-4o")
embeddings = OpenAIEmbeddings()

evaluator_llm = LangchainLLMWrapper(llm)

result = evaluate(
    dataset=evaluation_dataset,
    metrics=[
        ContextRecall(),
        Faithfulness(),
        AnswerRelevancy(),
        ContextPrecision()],
    llm=evaluator_llm,
    embeddings=embeddings,
)
print(result)

运行结果如下:

{
    
    'context_recall': 1.0000, 'faithfulness': 1.0000, 'answer_relevancy': 0.9128, 'context_precision': 1.0000}

4. 总结

ragas 除了可以做RAG系统评测之外,也可以自动生成测试集,读者可以自行尝试一下。只是本人在公司中,一般是CX 人员给出评测集,我们只需要根据评测集验证RAG系统的效果就行。


5. 如何系统学习掌握AI大模型?

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 2024行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

猜你喜欢

转载自blog.csdn.net/m0_56255097/article/details/145860308
今日推荐