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

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 【AI大模型应用开发】【RAG评估】1. 通俗易懂:深度理解RAGAS评估方法的原理与应用
  • 大家好,我是同学小张,日常分享AI知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:


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

0. 简介及评估指标

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

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

该方法有四个评估指标:

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

1. 在LangChain中使用

1.1 首先构建你的RAG程序

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

构建完的代码示例如下:

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 结果示例

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)最后分数的计算,计算公式

其中V为可以被支撑的s的数量,S为生成的statement数量。

2.2 answer_relevancy

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

2.2.1 测量步骤

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

Prompt如下:

Generate a question for the given answer.
answer: [answer]
• 1
• 2

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

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

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

即最终对所有的向量相似度取个平均数。

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)最后分数计算,计算公式

即:对答案有用的句子数量 / 上下文中全部句子的数量

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知识和实战案例
  • 欢迎 点赞 + 关注 👏,持续学习持续干货输出
  • 一起交流💬,一起进步💪。
  • 微信公众号也可搜【同学小张】 🙏

本站文章一览:

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
12天前
|
人工智能 安全 数据安全/隐私保护
文档智能 & RAG让AI大模型更懂业务测评
文档智能 & RAG让AI大模型更懂业务
133 73
|
2天前
|
人工智能
AniDoc:蚂蚁集团开源 2D 动画上色 AI 模型,基于视频扩散模型自动将草图序列转换成彩色动画,保持动画的连贯性
AniDoc 是一款基于视频扩散模型的 2D 动画上色 AI 模型,能够自动将草图序列转换为彩色动画。该模型通过对应匹配技术和背景增强策略,实现了色彩和风格的准确传递,适用于动画制作、游戏开发和数字艺术创作等多个领域。
31 16
AniDoc:蚂蚁集团开源 2D 动画上色 AI 模型,基于视频扩散模型自动将草图序列转换成彩色动画,保持动画的连贯性
|
11天前
|
人工智能 安全 测试技术
EXAONE 3.5:LG 推出的开源 AI 模型,采用 RAG 和多步推理能力降低模型的幻觉问题
EXAONE 3.5 是 LG AI 研究院推出的开源 AI 模型,擅长长文本处理,能够有效降低模型幻觉问题。该模型提供 24 亿、78 亿和 320 亿参数的三个版本,支持多步推理和检索增强生成技术,适用于多种应用场景。
64 9
EXAONE 3.5:LG 推出的开源 AI 模型,采用 RAG 和多步推理能力降低模型的幻觉问题
|
11天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
12月05日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·电子科技大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
|
5天前
|
人工智能 API Windows
免费部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型(简单5步实现,免费且比GPT4.0更好用)
本文介绍了如何部署本地AI大语言模型聊天系统,使用Chatbox AI客户端应用和Grok-beta大模型。通过获取API密钥、下载并安装Chatbox AI、配置模型,最终实现高效、智能的聊天体验。Grok 2大模型由马斯克X-AI发布,支持超长文本上下文理解,免费且易于使用。
34 0
|
6天前
|
人工智能 自然语言处理 物联网
AI Safeguard联合 CMU,斯坦福提出端侧多模态小模型
随着人工智能的快速发展,多模态大模型(MLLMs)在计算机视觉、自然语言处理和多模态任务中扮演着重要角色。
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
56 10
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用
|
6天前
|
机器学习/深度学习 人工智能 算法
探索AI在医疗诊断中的应用与挑战
【10月更文挑战第21天】 本文深入探讨了人工智能(AI)技术在医疗诊断领域的应用现状与面临的挑战,旨在为读者提供一个全面的视角,了解AI如何改变传统医疗模式,以及这一变革过程中所伴随的技术、伦理和法律问题。通过分析AI技术的优势和局限性,本文旨在促进对AI在医疗领域应用的更深层次理解和讨论。
|
11天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建