您的位置:首页 > 科技 > 能源 > 给RAG开药方:亚马逊发布RAGChecker,专治AI回答不准

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

2024/10/7 4:31:25 来源:https://blog.csdn.net/2401_82452722/article/details/142167991  浏览:    关键词:给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

图片

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com