【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推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
6天前
|
机器学习/深度学习 数据采集 人工智能
探索AI技术在文本生成中的应用与挑战
【9月更文挑战第26天】本文深入探讨了AI技术在文本生成领域的应用,并分析了其面临的挑战。通过介绍AI文本生成的基本原理、应用场景以及未来发展趋势,帮助读者全面了解该技术的潜力和局限性。同时,文章还提供了代码示例,展示了如何使用Python和相关库实现简单的文本生成模型。
29 9
|
2天前
|
机器学习/深度学习 人工智能 供应链
精准农业:AI在农业生产中的应用
【10月更文挑战第1天】随着科技的发展,人工智能(AI)逐渐渗透到农业领域,通过精准监控和管理提升了农业生产效率和质量。AI在精准农业中的应用包括:精准农田管理,如个性化灌溉和施肥;作物病虫害识别与预测,及时发现并预防病虫害;智能农机自动化作业,提高作业效率;农产品质量检测与分类,确保品质;农业供应链优化,预测需求和价格。尽管面临数据收集、技术接受度等挑战,AI在精准农业中的未来前景广阔,有望实现全程自动化作业、数据驱动决策及智能预警系统,推动农业可持续发展。
22 11
|
2天前
|
机器学习/深度学习 数据采集 人工智能
探索AI在医疗诊断中的应用
【9月更文挑战第30天】本文将探讨人工智能(AI)如何在医疗诊断中发挥重要作用。我们将从AI的基本概念开始,然后深入到其在医疗领域的应用,特别是如何帮助医生进行更准确的诊断。最后,我们将通过一些实际的代码示例来展示AI是如何工作的。无论你是AI专家还是医疗专业人士,这篇文章都将为你提供有价值的信息。
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
AI在医疗诊断中的应用与未来展望
随着人工智能技术的飞速发展,AI在医疗领域的应用日益广泛。本文探讨了AI在医疗诊断中的具体应用,包括医学影像分析、电子病历分析和辅助诊断等。同时,讨论了AI技术在未来医疗中的潜力和挑战,如数据隐私保护、算法的公平性和透明度等问题。通过分析具体案例和当前研究成果,本文揭示了AI在提高医疗诊断效率和准确性方面的显著优势,并对其未来发展进行了展望。
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
AI在医疗诊断中的应用
【9月更文挑战第29天】随着科技的发展,人工智能(AI)已经在许多领域得到广泛应用,其中包括医疗诊断。AI可以帮助医生更准确、更快速地进行疾病诊断,提高医疗服务的质量和效率。本文将介绍AI在医疗诊断中的应用,包括图像识别、自然语言处理和预测分析等方面。
|
5天前
|
存储 人工智能 弹性计算
函数计算部署 AI 大模型解决方案测评
函数计算部署 AI 大模型解决方案测评
|
6天前
|
人工智能 运维 大数据
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
18 1
|
机器学习/深度学习 人工智能 算法
如果能在1分钟内训练出个AI模型,你想要什么?
随着人工智能的技术不断成熟,AI逐渐在各行业内落地,比如:在常见的安防监控领域,我们可以通过人脸识别去抓捕逃犯;在教育领域,我们可以使用OCR识别做拍题识别;在新零售领域,我们通过物体识别判断货品位置和数量;甚至在养猪场,我们都能用AI技术检测养猪的位置及数量。
1813 0
如果能在1分钟内训练出个AI模型,你想要什么?
|
13天前
|
人工智能 运维 云计算
阿里云无影AI云电脑亮相 体验大幅升级
9月20日,2024云栖大会上阿里云无影AI云电脑全新亮相,基于最新的终端云计算技术和AI大模型能力,无影的综合体验大幅提升,新增了弹性升降配、双网自由切换、多端操作系统知识库问答、编码大师等AI智能体功能,为安全办公、个人娱乐带来全新的云上流畅体验,更可畅玩《黑神话:悟空》等3A游戏大作。同时,无影还宣布向开发者全面开放应用中心生态,开发者可免费入驻。
121 15
|
7天前
|
机器学习/深度学习 人工智能 算法
AI在医疗领域的应用与挑战
【9月更文挑战第25天】AI技术在医疗领域的应用日益广泛,从辅助诊断到药物研发,再到健康管理等方面都取得了显著成果。然而,随着AI技术的深入应用,也面临着数据隐私、算法透明度、法规政策等挑战。本文将探讨AI在医疗领域的应用现状与未来趋势,以及面临的主要挑战和解决方案。

热门文章

最新文章

下一篇
无影云桌面