给RAG开药方:亚马逊发布RAGChecker,专治AI回答不准

news2024/9/21 0:26:06

图片

立即解决AI误差:亚马逊RAGChecker的创新之举

©作者|Blaze

来源|神州问学

引言

在人工智能领域,RAG(Retrieval-Augmented Generation)模型以其强大的生成能力和灵活性赢得了广泛关注。它结合了信息检索和生成技术,能够为用户提供更准确、更丰富的回答。然而,尽管RAG模型在许多应用中表现出色,但它们在实际使用中也可能面临回答不准确的问题。这时,如何有效地诊断和解决这些问题就显得尤为重要。

近日,亚马逊发布了一个全新的开源工具——RAGChecker,旨在帮助开发者和研究人员对RAG系统进行全面、可靠、细粒度诊断,着重解决AI回答不准的问题,并为进一步提升性能,提供可操作的方向。这个工具就像是给RAG系统开了一剂“药方”,帮助它“康复”,为我们的开发者打造更智能、更可靠的RAG系统。

RAGChecker的诞生背景

RAGChecker是亚马逊推出的一款新工具,旨在解决RAG模型在实际应用中面临的准确性问题。随着生成式AI的应用场景越来越广泛,从客服聊天机器人到内容创作,再到智能助手,生成内容的准确性成为了一个关键问题。

尤其是在一些高要求的应用场景中,例如医疗咨询、法律建议、金融分析等,AI生成的不准确内容可能导致严重的后果。在这些场景中,RAG模型虽然通过检索增加了准确性,但仍然可能因为各种原因导致错误的生成。因此,RAGChecker横空出世,帮助开发者更好地评估和优化RAG模型的输出质量。

RAGChecker的功能

图片

RAGChecker 是一种先进的自动评估框架,它提供了一套全面的指标和工具,用于深入分析 RAG 性能。它的功能主要有:

整体评估:RAGChecker 提供Overall Metrics对整个 RAG 管道的评估。

诊断指标:Diagnostic Retriever Metrics用于分析检索组件。Diagnostic Generator Metrics用于评估生成组件。这些指标为有针对性的改进提供了宝贵的见解。

细粒度评估:利用claim-level entailment操作进行细粒度评估。

基准数据集:一个全面的 RAG 基准数据集,包含 4000 个问题,涵盖 10 个领域(即将推出)。

元评估:人类注释的偏好数据集,用于评估 RAGChecker 的结果与人类判断的相关性。

了解了RAGChecker的功能,那我们就快快动动手指头,来快速尝试一下吧!

RAGChecker快速入门

RAGChecker对于开发人员来说上手过程很简单,由于笔者项目中需要对RAG性能、准确率评估,所以对RAGChecker进行了使用,以下是快速入门步骤:

1.环境安装

pip install ragchecker

python -m spacy download en_core_web_sm

2.检测数据准备

需要将RAG系统按照指定的JSON格式进行输出,包括输入查询、标准答案、RAG系统的回答、检索上下文。具体的数据样本如下:


{
  "results": [
    {
      "query_id": "0",
      "query": "世界上最长的河流是什么?",
      "gt_answer": "尼罗河是非洲东北部一条主要的北流河流。它流入地中海。尼罗河是非洲最长的河流,历史上一直被认为是世界上最长的河流,尽管这一点受到了研究的质疑,表明亚马逊河略长。以年流量(立方米水量)衡量,尼罗河是世界主要河流中最小的河流之一。其流域长约 6,650 公里(4,130 英里),覆盖 11 个国家:刚果民主共和国、坦桑尼亚、布隆迪、卢旺达、乌干达、肯尼亚、埃塞俄比亚、厄立特里亚、南苏丹、苏丹和埃及。",
      "response": "世界上最长的河流是尼罗河,全长约 6,650 公里(4,130 英里),穿过非洲东北部,流经乌干达、苏丹和埃及等国家,最后注入地中海。关于这个标题存在一些争议,因为最近的研究表明,如果亚马逊河最长的支流也包括在内,亚马逊河的长度可能会更长,可能会延长至约 7,000 公里(4,350 英里)。",
      "retrieved_context": [
        {
          "doc_id": "000",
          "text": "科学家们争论亚马逊河还是尼罗河是世界上最长的河流。传统上,尼罗河被认为更长,但最近的信息表明亚马逊河可能更长。"
        },
        {
          "doc_id": "001",
          "text": "尼罗河是古埃及人财富和权力崛起的中心。由于埃及几乎不存在降雨,尼罗河及其每年的洪水为人民提供了富饶农业的肥沃绿洲。"
        },
        {
          "doc_id": "002",
          "text": "世界上最长的河流被定义为最长的天然溪流,其水流在具有明确河岸的河道或河床上流动。"
        },
        {
          "doc_id": "003",
          "text": "如果包括最长的支流,亚马逊河可能会被认为更长,可能将其长度延长至约 7,000 公里"
        }
      ]
}

其中query_id: 查询ID,query:用户的查询,gt_answer:标准答案,response:RAG系统生成的答案,retrieved_context:检索上下文,doc_id:文档片段id,text:文档片段内容

3.程序运行

可以采用两种运行方式,分别为命令行和Python运行

命令行:

ragchecker-cli \
    --input_path=examples/checking_inputs.json \
    --output_path=examples/checking_outputs.json \
    --extractor_name=bedrock/meta.llama3-70b-instruct-v1:0 \
    --checker_name=bedrock/meta.llama3-70b-instruct-v1:0 \
    --batch_size_extractor=64 \
    --batch_size_checker=64 \
--metrics all_metrics

Python代码:


from ragchecker import RAGResults, RAGChecker
from ragchecker.metrics import all_metrics
# 从JSON中初始化RAGResults
with open("examples/checking_inputs.json") as fp:
    rag_results = RAGResults.from_json(fp.read())
# 设置评估器
evaluator = RAGChecker(
    extractor_name="bedrock/meta.llama3-70b-instruct-v1:0",
    checker_name="bedrock/meta.llama3-70b-instruct-v1:0",
    batch_size_extractor=32,
    batch_size_checker=32
)
# 对结果进行评估
evaluator.evaluate(rag_results, all_metrics)
print(rag_results)

4. 输出结果


RAGResults(
  2 RAG results,
  Metrics:
  {
    "overall_metrics": {
      "precision": 76.4,
      "recall": 62.5,
      "f1": 68.3
    },
    "retriever_metrics": {
      "claim_recall": 61.4,
      "context_precision": 87.5
    },
    "generator_metrics": {
      "context_utilization": 87.5,
      "noise_sensitivity_in_relevant": 19.1,
      "noise_sensitivity_in_irrelevant": 0.0,
      "hallucination": 4.5,
      "self_knowledge": 27.3,
      "faithfulness": 68.2
    }
  }
)

5. 结果分析

通过分析输出的指标,开发者可以更有针对性的优化各自RAG系统的性能。

Precision(精确率): 精确率衡量了模型生成的答案中有多少是正确的,高精确率意味着模型生成的内容通常是可靠的,但可能牺牲了一部分覆盖面。

Recall(召回率): 召回率衡量了模型在所有正确答案中成功生成的比例,召回率的提高有助于提升答案的全面性,但可能导致噪音增加。

F1 Score: F1分数是精确率和召回率的调和平均数,是综合评估模型性能的重要指标,F1分数越高,模型在生成准确且全面答案方面表现越好。

Claim Recall(声明召回率): 声明召回率表示检索器成功找到与问题相关的信息的比例,如果该项指标较低,意味着需要改进检索策略,没有检索到足够的相关知识,需要对算法进行优化或者扩展知识库。

Context Precision(上下文精确率): 上下文精确率衡量的是检索到的信息中有多少是与问题直接相关的,上下文精确率越高,生成器使用的信息质量越好,生成的答案也更有可能准确。

Noise Sensitivity(噪音敏感度):该指标衡量生成器对相关但多余信息的敏感程度 ,较低的相关噪音敏感性有助于减少生成器因多余信息而产生的错误。

6.效果对比

为了检验RAGChecker的作用,特别选取了部分数据进行实际评估,评估结果如下:


{
  "overall_metrics": {
    "precision": 68.2,
    "recall": 55.7,
    "f1": 61.3
  },
  "retriever_metrics": {
    "claim_recall": 50.4,
    "context_precision": 74.8
  },
  "generator_metrics": {
    "context_utilization": 75.3,
    "noise_sensitivity_in_relevant": 30.7,
    "noise_sensitivity_in_irrelevant": 12.1,
    "hallucination": 12.8,
    "self_knowledge": 19.4,
    "faithfulness": 57.6
  }
}

根据RAGChecker的评估结果,通过接入更多的领域专属数据库、文献库、以及行业报告同时优化检索算法,并且对检索模型进行微调,在采取一系列措施后,评估结果有一定的提升,优化后评估结果如下:


{
  "overall_metrics": {
    "precision": 76.4,
    "recall": 62.5,
    "f1": 68.3
  },
  "retriever_metrics": {
    "claim_recall": 61.4,
    "context_precision": 87.5
  },
  "generator_metrics": {
    "context_utilization": 87.5,
    "noise_sensitivity_in_relevant": 19.1,
    "noise_sensitivity_in_irrelevant": 0.0,
    "hallucination": 4.5,
    "self_knowledge": 27.3,
    "faithfulness": 68.2
  }
}

未来展望

RAGChecker的发布只是亚马逊在改进生成式AI准确性方面迈出的第一步。未来,随着技术的不断进步,RAGChecker有望融入更多的功能,例如:

多模态支持:未来的RAGChecker可能不仅支持文本,还可以支持图像、语音等多模态数据的分析与优化,为更广泛的应用场景提供支持。

深度学习优化:通过集成更先进的深度学习算法,RAGChecker未来可能能够更深入地分析生成内容的潜在问题,并提供更智能的优化建议。

更强的自适应能力:未来的RAGChecker可能会具备更强的自适应能力,能够根据不同的应用场景自动调整优化策略,为不同领域的开发者提供量身定制的解决方案。

开放生态系统:亚马逊可能会将RAGChecker开放给更多的开发者和企业,形成一个开放的生态系统,共同推动生成式AI的进步。

结语

随着生成式AI技术的不断发展,我们对AI的期望也越来越高。然而,生成内容的准确性问题始终是一个难题。亚马逊推出的RAGChecker,为这一问题提供了一个有力的解决方案。

作为一位开发者,RAGChecker是不可或缺的得力助手,它的出现,不仅为生成式AI的应用打开了新的大门,也为未来AI技术的发展指明了方向,现在的RAG系统不再完全是一个黑匣子,开发者可以从中剖析具体问题具体分析。随着RAGChecker功能的不断丰富,我们有理由相信,生成式AI将在更多的领域发挥更大的作用,为我们的生活和工作带来更多便利。

参考文献

https://github.com/amazon-science/RAGChecker?tab=readme-ov-file

https://arxiv.org/html/2408.08067v2

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2128176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab2023a/b安装Cplex12.9(实测适配)

目录 1 Matlab2023a/b版本安装Yalmip2 下载Cplex12.92.1 登录官网2.2 搜索意向版本and下载 3 安装cplex4 matlab与cplex耦合!!!5 测试 1 Matlab2023a/b版本安装Yalmip google一下后CSDN有很多安装说明,不再赘述,可见&…

功能这么全的excel导出,你确定不需要?

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 功能这么全的excel导出,你确定不需要? 前言Maven坐标HSSFWorkbook、SXSSF…

【音视频】使用movie、drawtext过滤器实现图片、文字水印(6-3)

本来准备从六月份开始研究使用ffmpeg的movie filter实现图片水印、drawtext filter实现文字水印的能力,但一直没时间,临近中秋终于有空,于是研究了下ffmpeg命令行(这里不做展示,关注代码实现),从…

AI客服机器人开启企业客户服务新纪元

随着人工智能(AI)技术的迅猛发展,使得AI客服机器人走进了我们的视野,成为提高客户满意度和业务效率的不二法宝。这些智能机器人不仅能够处理海量信息,还能为客户提供个性化的服务体验。 一、AI客服机器人的基本原理 AI客服机器人是基于人工智…

Azure web app has no access to openai private endpoint in virtual network

题意:"Azure Web 应用无法访问虚拟网络中的 OpenAI 私有端点。" 问题背景: I am trying to host a web application similar to a private ChatGPT instance within a secluded virtual network, ensuring that theres no external internet …

​年化收益52%,最大回撤13%,卡玛比率3.77,ETF轮动系列大有可为(附策略代码和数据下载)。

原创内容第648篇,专注量化投资、个人成长与财富自由。 今天继续开发策略,先看结果: 年化52%,最大回撤13%,卡玛比率3.77。 策略逻辑: 买入规则: 5日均线大于20日均线 。 最近20个交易日的涨…

【Prompt Engineering:思维树 (ToT)、检索增强生成 (RAG)、自动推理并使用工具 (ART)】

思维树 (ToT) 对于需要探索或预判战略的复杂任务来说,传统或简单的提示技巧是不够的。最近,Yao et el. (2023)(opens in a new tab) 提出了思维树(Tree of Thoughts,ToT)框架,该框架基于思维链提示进行了总…

全球著名地标卫星影像收藏第5辑

世界那么大,一起去看看! 我们在《全球著名地标卫星影像收藏第4辑》一文中,为大家分享了10全球著名地标高清卫星影像,现在继续为大家分享10个著名地标。 我们整理这些地标的KML文件分享大家,也可以打开相应URL链接即可…

tofixed和math.round什么区别

1、floor 返回不大于的最大整数(向下取整) 2、round 则是4舍5入的计算,入的时候是到大于它的整数(当-1.5时可见,四舍五入后得到的结果不是我们期待的,解决办法是先对他取绝对值,然后在用round方…

全平台7合一自定义DIY小程序源码系统 数据库结构全新升级 带完整的安装代码包以及搭建部署教程

系统概述 随着小程序市场的日益成熟,越来越多的企业和个人开始意识到小程序在品牌推广、用户获取和服务提供方面的巨大潜力。然而,传统的小程序开发方式往往存在开发周期长、成本高、灵活性差等问题,难以满足快速变化的市场需求。因此&#…

如何做尘埃粒子计数器校准,多久一次?北京中邦兴业

尘埃粒子计数器的校准是确保其测量准确性和可靠性的重要环节。以下是关于尘埃粒子计数器校准的详细说明: 一、校准目的 尘埃粒子计数器作为评估和监控洁净室及其他控制环境中空气质量的关键仪器,其准确性和可靠性直接关系到数据的准确性和有效性。定期校…

从To B到AI:产品经理的转型攻略

经过几个月的AI学习之后,我已经对To B产品经理转型AI有了一些自己的理解。 个人认为,想要顺利转型,需要依次经历以下几个思考与学习过程: 认清AI能为产品经理带来的价值;确定AI技术的学习范围;学习AI技术…

关于项目中的内存问题、死锁问题如何定位?——Valgrind

valgrind是如何实现的? 基于仿真方式 在实际处理器的基础上仿真一个虚拟处理器,使应用程序运行于这个虚拟处理器之上,从而进行监视分析。 core dump内存问题定位: 1.无效指针(野指针) 2.内存泄漏(一般不…

Windows下SDL2创建最简单的一个窗口

先看运行效果 再上代码&#xff1a; #include <stdio.h> #include "SDL.h"int main(int argc, char* argv[]) {// 初始化SDL视频子系统if (SDL_Init(SDL_INIT_VIDEO) -1){printf("Error: %s\n", SDL_GetError());return -1;} // 创建一个窗口SDL_…

再次进阶 舞台王者 第八季完美童模全球赛品牌大使【韩嘉潞】赛场秀场超燃合集!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕。在盛大的颁奖典礼上&#xff0c;一位才能出众的少女——韩嘉潞&#xff0c;迎来了她舞台生涯的璀璨时刻。 品牌大使——韩嘉潞&#xff0c;以璀璨童星之姿&#xff0c;优雅地踏上完美童模盛宴的绚丽舞台&am…

InstantID模型部署教程

一、介绍 InstantID 是由 InstantX 团队、小红书公司和北京大学联合开发的一项前沿技术&#xff0c;旨在实现零样本身份保持生成&#xff0c;仅需单张图像即可支持多种下游任务&#xff0c;可以在几秒钟内实现零样本身份保留生成。 InstantID 以其独特的无需微调方式&#xf…

Anolis OS 8.8 CentOS8离线安装mysql-8.0.9

下载mysql安装包&#xff1a; mysql下载地址 在Linux系统中&#xff0c;mysql的安装包除了要区分系统和cpu架构之外&#xff0c;还区分安装方式&#xff0c;下载不同的包&#xff0c;安装方式也完全不一样&#xff0c;安装完成后的效果也完全不一样。 我之前下载的包按照官方…

Zabbix企业级应用案列

随着业务的越发复杂&#xff0c;对软件系统的要求越来越高&#xff0c;这意味着我们需要随时掌控系统的运行情况。因此&#xff0c;对系统的实时监控以及可视化展示&#xff0c;就成了基础架构的必须能力。 一、zabbix可视化 1.Grafana 简介 Grafana 是一个开源的指标量监测和…

汽车保养维修|基于java的汽车保养系统小程序(源码+数据库+文档)

汽车保养系统小程序 目录 基于java的汽车保养系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;阿里云…

简单聊聊bait文件

场景&#xff1a;业务同事发现某云主机部署了企业主机安全&#xff0c;在该主机上发现了一个诱饵文件&#xff0c;显示注意&#xff1a;此文件是诱饵文件&#xff0c;用于防止重要文件被病毒加密。请勿修改或删除此文件。 解决方法&#xff1a;联系企业主机安全运维同事发现&am…