【AI大模型应用开发】【RAG评估】1. 通俗易懂:深度理解RAGAS评估方法的原理与应用

这篇具有很好参考价值的文章主要介绍了【AI大模型应用开发】【RAG评估】1. 通俗易懂:深度理解RAGAS评估方法的原理与应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记


上篇文章【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标, 我们盘点了当前RAG系统评估的一些主流方法、工具和评估指标。本文我们针对其中的RAGAS评估方法进行详细介绍。我们将深入其原理,理解其评估指标背后是怎么实现的。都是我根据自己的理解用大白话解释,保证大家能看懂。

  • RAGAS论文地址:https://arxiv.org/pdf/2309.15217.pdf

0. 简介及评估指标

RAGAS是一个对检索增强生成(RAG)pipeline进行无参考评估的框架。

考虑标准的RAG设置,即给定一个问题q,系统首先检索一些上下文c(q),然后使用检索到的上下文生成答案as(q)。在构建RAG系统时,通常无法访问人工标注的数据集或参考答案,因此该工作将重点放在 完全独立且无参考的度量指标上

该方法有四个评估指标:

  • 评估检索质量:
    • context_relevancy(上下文相关性,也叫 context_precision)
    • context_recall(召回性,越高表示检索出来的内容与正确答案越相关)
  • 评估生成质量:
    • faithfulness(忠实性,越高表示答案的生成使用了越多的参考文档(检索出来的内容))
    • answer_relevancy(答案的相关性)

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记

1. 在LangChain中使用

1.1 首先构建你的RAG程序

retriever的构建步骤就不展开了,需要的同学可以去看下我之前的文章:【AI大模型应用开发】【LangChain系列】4. 从Chain到LCEL:探索和实战LangChain的巧妙设计

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记

构建完的代码示例如下:

from langchain.chains import RetrievalQA
......
# !!!!!主要应用点:RetrievalQA构建的qa_chain的返回结果
qa_chain = RetrievalQA.from_chain_type(
    llm,
    retriever=retriever,
    return_source_documents=True,
)
question = "How did New York City get its name?"
result = qa_chain({"query": question})

关键点:使用RetrievalQA去获取结果,因为使用RetrievalQA去获取的结果中包含key:query, result, source_documents,这是LangChain集成的Ragas直接需要的,不用自己再组装数据结构了:

  • 上述result中包含query, result, source_documents字段,这三个字段可以直接用来评估出 context_relevancy, faithfulness, answer_relevancy 三个指标,context_recall无法评估

  • 要想评估 context_recall 指标,需要人工添加预期的答案,并添加到 result 的key=“ground_truths” 的字段,例如下面的代码

result_with_truth = result
result_with_truth["ground_truths"] = "XXXXXXXXXXXX"

1.2 评估

  • 引入Ragas封装:RagasEvaluatorChain
  • 引入Ragas评估指标
  • 构造评估的chain,需传入构造的chain的评估指标类型
  • 将上面RAG的结果传入这个评估chain,获得评估结果
from ragas.langchain.evalchain import RagasEvaluatorChain
from ragas.metrics import (
    faithfulness,
    answer_relevancy,
    context_precision,
    context_recall,
)

# create evaluation chains
faithfulness_chain = RagasEvaluatorChain(metric=faithfulness)
answer_rel_chain = RagasEvaluatorChain(metric=answer_relevancy)
context_rel_chain = RagasEvaluatorChain(metric=context_precision)
context_recall_chain = RagasEvaluatorChain(metric=context_recall)

# 获取结果
eval_result = faithfulness_chain(result)
eval_result = answer_rel_chain(result)
eval_result = context_rel_chain(result)
eval_result = context_recall_chain(result_with_truth)

1.3 结果示例

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记

2. 原理

2.1 faithfulness

This measures the factual consistency of the generated answer against the given context. It is calculated from answer and retrieved context. The answer is scaled to (0,1) range. Higher the better.

这衡量了生成的答案在给定上下文中的事实一致性。它是根据答案和检索到的上下文来计算的。答案按比例缩放到(0,1)范围。越高越好。

2.1.1 测量步骤

(1)首先使用LLM来根据问题和答案提取一组语句S。这一步骤的目的是将较长的句子分解为更短、更集中的断言。

该步骤的Prompt如下:

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

(2)针对生成的每个语句s,再次使用大模型或验证函数来判断这个语句是否能用上下文中的信息来支撑。

该步骤的Prompt如下(最后输出Yes或No):

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]

(3)最后分数的计算,计算公式

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记
其中V为可以被支撑的s的数量,S为生成的statement数量。

2.2 answer_relevancy

答案与问题的相关程度。不考虑答案的正确性,但是对答案不完整或包含冗余信息的情况进行惩罚。

2.2.1 测量步骤

(1)根据最终答案,利用大模型生成针对该问题的多个潜在的问题。

Prompt如下:

Generate a question for the given answer.
answer: [answer]

(2)针对生成的每个潜在问题,利用OpenAI的嵌入模型 text-embedding-ada-002 来计算与原始问题的向量相似度(余弦距离)。

不懂向量相似度或余弦距离是什么的,可以参考下我之前的文章:【AI大模型应用开发】【补充知识】文本向量化与向量相似度(含Python代码)

(3)最后分数的计算,计算公式

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记
即最终对所有的向量相似度取个平均数。

2.3 context_relevancy

检索回的上下文与原始问题之间的相关性,对其中的冗余信息进行惩罚

2.3.1 测量步骤

(1)利用大模型,从给定的context上下文信息中,提取出所有对最终答案直接相关或重要的句子,不改变句子内容。

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.

(2)最后分数计算,计算公式

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记
即:对答案有用的句子数量 / 上下文中全部句子的数量

2.4 context_recall

论文中没提到这个指标,待查。这个需要认为给定参考答案,在RAGAS评估中比较少用。

3. 其它接口

langchain中的ragas还提供了其它的评估接口,简单看一个。

3.1 批量评估 evaluate()

给定一系列需要测试的输出结果,批量生成评估结果。

# run the queries as a batch for efficiency
predictions = qa_chain.batch(examples)

# evaluate
print("evaluating...")
r = faithfulness_chain.evaluate(examples, predictions)

# output
[{'faithfulness_score': 1.0},
 {'faithfulness_score': 0.5},
 {'faithfulness_score': 1.0},
 {'faithfulness_score': 1.0},
 {'faithfulness_score': 0.8}]

4. 总结

本文详细介绍了RAGAS的原理及在LangChain中的使用方式。对于RAGAS的原理更是用通俗易懂的语言进行了深入讲解,相信大家都能看懂!

从上面的评测步骤可以看到,RAGAS各个指标的评测都依赖了大模型的能力。所以也会有一定的不稳定性。

如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • +v: jasper_8017 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

ragas需要调用大模型吗,大模型,人工智能,gpt,langchain,RAG,经验分享,学习,笔记文章来源地址https://www.toymoban.com/news/detail-850348.html

到了这里,关于【AI大模型应用开发】【RAG评估】1. 通俗易懂:深度理解RAGAS评估方法的原理与应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大模型时代,如何快速开发AI应用

    本文分享自华为云社区 《【云享问答】第3期:大模型时代,如何快速开发AI应用》,作者:华为云社区精选。 大模型快速普及应用的当下,AI浪潮汹涌而至,对于开发者来说,开发一款属于自己的AI应用并不是遥不可及。华为云AI生态技术专家、中科院计算所博士坐阵,从数

    2024年02月08日
    浏览(42)
  • RAG应用开发实战02-相似性检索的关键 - Embedding

    将整个文本转化为实数向量的技术。 Embedding优点是可将离散的词语或句子转化为连续的向量,就可用数学方法来处理词语或句子,捕捉到文本的语义信息,文本和文本的关系信息。 ◉ 优质的Embedding通常会让语义相似的文本在空间中彼此接* ◉ 优质的Embedding相似的语义关系可

    2024年04月14日
    浏览(48)
  • AI大模型开发架构设计(10)——AI大模型架构体系与典型应用场景

    1 AI大模型架构体系你了解多少? GPT 助手训练流程 横向来看,分为四步:预训练(无监督、99%算力+时间)、有监督微调、奖励模型、强化学习 纵向来看,每一部分需要:数据集(Dataset)、算法(Algorithm)、模型(Model)、花销 GPT 助手训练数据预处理 2个训练案例分析 2 AI 大

    2024年02月20日
    浏览(55)
  • 全域Serverless+AI,华为云加速大模型应用开发

    日前,华为全联接大会2023在上海召开。华为云CTO张宇昕在大会上发布了基于Serverless技术的大模型应用开发框架,框架以面向AI领域全新升级的FunctionGraph 3.0为核心,将BaaS for AI 后端和开放平台快速无缝集成,助力企业轻松商用AI应用。 在“全域Serverless + AI 加速应用创新”专题

    2024年02月08日
    浏览(50)
  • AI大模型开发架构设计(2)——AI绘画技术架构&应用实践

    1 AI绘画整体流程 第一步:输入 Prompt 提示词: /mj 提示词 第二步:文生图(Text-to-Image)构图 第三步:图片渲染 第四步:图片展示 2 AI绘画技术架构 文生图核心算法原理 把人类创造的内容用一个高维的数学向量进行表示 如果内容到向量的“翻译” 足够合理 且能 代表内容的特

    2024年01月25日
    浏览(46)
  • 【基础篇001】⼤模型理论基础——初探大模型:起源与发展《AI 大模型应用开发实战指南》

      目录 基础篇:⼤模型理论基础 初探大模型:起源与发展 什么是大模型?

    2024年02月09日
    浏览(56)
  • Spring AI 来了,打造Java生态大模型应用开发新框架!

    尽管 Python 长期主导 AI 大模型应用开发领域,但 Java 并未熄火!Spring AI 来了,正式告别实验期,迈向广泛应用新阶段!这意味着 Spring 生态体系的广大开发者,迎来 AI 大模型应用开发的新里程。 Spring AI 是一个 AI 工程师的应用框架,它提供了一个友好的 API 和开发 AI 应用的抽

    2024年04月12日
    浏览(51)
  • OpenAI开发系列(十五):AI敏捷开发的新范式:利用大模型优化和自动化应用开发流程(上)

    授权声明: 本文基于九天Hector的原创课程资料创作,已获得其正式授权。 原课程出处:九天Hector的B站主页,感谢九天Hector为学习者带来的宝贵知识。 请尊重原创,转载或引用时,请标明来源。 全文共5000余字,预计阅读时间约30~50分钟 | 满满干货(附代码),建议收藏! 本文

    2024年02月03日
    浏览(46)
  • 【AI大模型应用开发】【LangFuse: LangSmith平替,生产级AI应用维护平台】0. 快速上手 - 基本功能全面介绍与实践(附代码)

    大家好,我是同学小张,日常分享AI知识和实战案例 欢迎 点赞 + 关注 👏, 持续学习 , 持续干货输出 。 +v: jasper_8017 一起交流💬,一起进步💪。 微信公众号也可搜【同学小张】 🙏 本站文章一览: 前面我们介绍了LangChain无缝衔接的LangSmith平台,可以跟踪程序运行步骤,提

    2024年03月21日
    浏览(71)
  • AI大模型探索之路-应用篇16:GLM大模型-ChatGLM3 API开发实践

    目录 一、ChatGLM3-6B模型API调用 1. 导入相关的库 2. 加载tokenizer 3. 加载预训练模型 4. 实例化模型 5.调用模型并获取结果 二、OpenAI风格的代码调用 1. Openai api 启动 2. 使用curl命令测试返回 3. 使用Python发送POST请求测试返回 4. 采用GLM提供的chat对话方式 5. Embedding处理 三、Functio

    2024年04月23日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包