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

图片

立即解决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

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值