AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


给RAG开药方:亚马逊发布RAGChecker,专治AI回答不准
发布日期:2024-08-28 19:37:05 浏览次数: 1803 来源:智见AGI



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

©作者|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, RAGCheckerfrom ragchecker.metrics import all_metrics# 从JSON中初始化RAGResultswith 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将在更多的领域发挥更大的作用,为我们的生活和工作带来更多便利。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询