CRAG – 直观且详尽解释

原文:towardsdatascience.com/crag-intuitively-and-exhaustively-explained-0620b9b2ef15

人工智能 | 检索增强生成 | 基准测试

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5dc0ade45b47d9fd3da5c20e00f17c4c.png

“探索边缘”由 Daniel Warfield 使用 MidJourney 创作。除非另有说明,所有图片均为作者所有。文章最初在《直观且详尽解释》上发表。

在这篇文章中,我们将讨论 Meta 的“综合 RAG 基准”(CRAG),这是一个新的基准,似乎准备改变检索增强生成(RAG)的现状。

首先,我们将简要介绍 RAG,为什么它很重要,以及它的一些局限性。然后,我们将讨论 CRAG,它存在的原因,以及为什么 CRAG 不仅标志着 RAG,而且整个 AI 领域的根本性转变。

这篇文章对谁有用? 任何想要了解 AI 当前轨迹及其如何发展的人。

这篇文章的深度如何? 这篇文章在概念上很简单,但涉及了 AI 领域的一些最前沿趋势。

先决条件: 无。

归属: 我在以下 YouTube 视频中讨论了这个话题:

cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FGzU1JfslufE%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGzU1JfslufE&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FGzU1JfslufE%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube

RAG(检索增强生成)简介

在我们讨论 CRAG 之前,我们应该首先讨论“检索增强生成”(RAG)。我有一篇专门的文章介绍这个主题,但我们将简要探讨其高级概念。

检索增强生成 – 直观且详尽解释

Retrieval Augmented Generation(RAG)的想法是通过补充一些信息来增强语言模型,使其能够提供更好的答案。在 RAG 中,这种补充信息通过将用户的查询与补充信息结合成一个单一的提示(有时被称为“提示增强”)来提供给语言模型。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9842a5b1015ba850fa2520ee1a947c23.png

使用提示增强的一个例子,其中将一段上下文相关的信息和用户的查询组合在一起。来自我的 RAG 文章

在“检索增强生成”(Retrieval Augmented Generation)中,使用一个名为“检索器”(retriever)的系统根据用户的查询自动从知识库中提取相关信息。你向检索器提出一个问题,它会尝试在知识库中找到所有回答你问题的相关信息。然后,检索器检索到的信息,连同用户的查询一起,用于构建增强的提示。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e5ecadb000c69438f490881b6bc5febd.png

RAG(检索、增强、生成)三个步骤的概念图,检索(根据用户的查询获取信息)、增强(将上下文相关的信息与用户的查询相结合)、生成(使用 LLM 根据增强的提示构建响应)。来自我的 RAG 文章

实际上做检索的方法有很多,但最常见的方法是通过距离计算。基本上,你首先使用一个叫做编码器(encoder)的东西将知识库中所有知识点的所有比特转换为向量。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4e76e4c90303f0e8acf52fd36b04ace7.png

编码的概念图,将一些文本片段蒸馏成一个向量。

在这篇文章中,我更多地讨论了嵌入(embeddings),如果你对深入挖掘感兴趣:

CLIP,直观且全面解释

一旦用户的查询和知识库中的信息被嵌入到向量中,就可以计算出从查询得到的向量和从特定信息得到的向量之间的距离。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/49e2ab136dc0a8cf5afb6ff58020ed90.png

在 RAG 环境中如何使用距离来检索正确信息的一个例子。彼此距离最小的向量被认为是相似的。

这个通用过程是大多数 RAG 系统如何检索与用户查询相关的信息。

RAG 的要点

RAG 的功能,使语言模型能够根据文档存储中的信息回答查询,已经引起了商业界的广泛关注。语言模型的训练成本高昂,为满足公司需求定制语言模型也很困难,因此 RAG 能够将信息输入到已经训练好的语言模型中,这使得它成为商业用例的有力技术。有趣的是,这个用例实际上并不是 RAG 被发明的原因。

原始 RAG 论文检索增强生成用于知识密集型 NLP 任务将更新模型信息作为一个次要目标,而首先关注的是提高模型的性能:

(语言模型)访问和精确操作知识的能力仍然有限,因此在知识密集型任务中,它们的性能落后于特定架构。此外,提供决策的来源和更新其世界知识仍然是开放的研究问题。 —— 来自RAG 论文

RAG 的核心思想是,语言模型擅长以合理的方式陈述信息,但实际上它们在回忆训练过的具体事实方面做得不好。RAG 论文的作者引用了一篇名为《人工智能的下一个十年:迈向鲁棒人工智能的四个步骤》的论文,将其作为关键灵感来源,该论文声称“鲁棒人工智能”是人工智能的下一个主要里程碑。

让我们称这个新层次为鲁棒人工智能:这种人工智能虽然不一定超越人类或自我改进,但可以依赖其在系统且可靠的方式下,将所知应用于广泛的问题,从各种来源综合知识,从而能够灵活且动态地关于世界进行推理,将一个情境中学到的知识转移到另一个情境,正如我们期望的普通成年人的方式。 —— 来自《人工智能的下一个十年》

这是一个宏伟且大胆的目标,也是原始 RAG 论文的主要焦点。虽然企业已经关注到知识可移植性的功能,但这实际上只是从研究角度来看的一个幸运事件。RAG 的主要目的是提高人工智能系统的性能、可靠性和鲁棒性。

还必须将鲁棒智能与我所说的点状智能进行对比,点状智能在很多情况下都能工作,但在很多其他情况下会失败,表面上看起来相当相似,以一种某种程度上不可预测的方式。 —— 来自《人工智能的下一个十年》

任何密切关注人工智能文献的人都会意识到,鲁棒性自始至终都未能解决该领域的问题。深度学习至今也未能解决这个问题,尽管已经投入了巨大的资源。 —— 来自 人工智能的下一个十年

正如一支 Facebook 人工智能研究团队(Nie 等人,2019 年)所说:“越来越多的证据表明,最先进的模型学会利用数据集中的虚假统计模式……而不是像人类那样以灵活和可推广的方式学习意义。” —— 来自 人工智能的下一个十年

在与 RAG 论文合著者 Patrick Lewis 的在线研讨会 In a webinar with Patrick Lewis 中,他被问及在性能方面(大约在 1:13:00 的标记处),工业界或学术界哪个是更优秀的最先进模型来源。他说出了许多研究人员都会说的话;研究的目的是不是创造最先进的模型,而是发现更好的建模方法。

只是把大量的 GPU 扔到一个问题上,用蛮力解决问题,你就能得到很好的结果,我就像为你欢呼。不是特别攻击 OpenAI,但至少对我来说,我不太对 GPT 3 感兴趣,因为很明显会发生这种情况(你会用一个大模型得到好的性能)。 —— 来自与 RAG 合著者 Patrick Lewis 的在线研讨会 From a webinar with Patrick Lewis

我认为这种普遍的理解,即 RAG 主要从研究角度提高性能、可靠性和鲁棒性,对于理解 CRAG 是什么以及为什么存在至关重要。

知识图谱简介

CRAG 和 RAG 论文都大量引用了知识图谱。基本上,在互联网上,有很多事物与其他事物有复杂的关系。知识图谱是一种存储这些实体和关系的方式。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a6f8d9ce58978a64193e0f39cae37aae.png

知识图谱的一个简单例子,来源

知识图谱长期以来一直是存储复杂关系的首选机制。虽然语言模型“某种程度上”学习了这些关系,但 RAG 的一个主要想法是,也许可以使用这些显式的高质量知识图谱来补充语言模型的能力。

CRAG 基准

CRAG 基准包含了一个多样化的 4,409 个问题,以及相应的人类标注答案,还有支持性参考文献。其想法是成为一个“综合 RAG 基准”,因此得名。

CRAG 基准主要关注两个关键问题:

  • 问题 1:LLMs 在回答关于随时间变化的事实的问题上表现不佳,即使它们已经训练了正确的答案。这是因为 LLMs 是统计模型,当面对有多个看似合理的答案的问题时可能会感到困惑。

研究表明,GPT-4 在回答涉及缓慢变化或快速变化的事实的问题上的准确率低于 15% – CRAG 论文

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/e7b5f521e824eb0fc8c004f2e2431a1a.png

询问 GPT-4 关于热门话题(头部)、中等热门话题(躯干)和高度特定话题(尾部)的问题的结果。来自How Knowledgeable are Large Language Models论文。

CRAG 基准测试包含了一些问题,这些问题 LLMs 可能在它们的训练集中看到过答案,但仍然无法准确回答,因为现实是 LLMs 不能替代像知识图谱这样的东西。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1a3e9ca3cdbf1ffe9f72f461a9f96a36.png

将各种 LLMs 应用于 CRAG 基准测试的结果。LLMs 在回答这些问题方面表现不佳(GPT-4 Turbo 的准确率为 33.5%)并且有时在回答问题时完全编造出看似合理的胡言乱语(GPT-4 Turbo 的 13.5%幻觉)。来自CRAG 论文

CRAG 基准测试中的每个问题都与可以回答这些问题的信息配对。CRAG 基准测试以三种方式提供这些信息:

  1. 每个问题最多五页网页,其中网页可能但并不保证与问题相关。

  2. 模拟 API,旨在根据模拟知识图谱提供信息,允许 RAG 系统从结构化数据中查询并综合信息。

  3. 同时提供模拟 API 和 50 页网页,这意味着这些信息更有可能回答问题,但也包含更多的噪音。

因此,CRAG 的目的是尝试使用这些知识,在这些各种表示中,使模型在 4,409 个问题上的表现更佳。

对于在家玩的人,你可能认为“这有点愚蠢,RAG 的整个目的就是你必须检索文档。他们已经做了。为什么不在提示中直接放入网页并开始比赛呢”?好吧,他们确实这样做了,但发现性能的提升微乎其微。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/84bcc7165b9db537aae8a38da97601c3.png

各种 LLM 在暴露于各种数据表示时的表现。在任务 1 中,他们将 5 个网页放入增强提示中。在任务 2 中,他们解析用户查询以构建模拟 API 的参数,然后将结果放入增强提示中。在任务 3 中,他们两者都做了。如图所示,尽管性能有所提升,但简单的 RAG 方法并非万能良药。来自CRAG 论文

他们还应用了更先进、最前沿的 RAG 技术来处理这些问题,并发现性能仍然不足。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/446fca6299ff603d374d8afc18cb4964.png

将最先进的 RAG 驱动的搜索引擎应用于 CRAG 基准测试的结果。来自CRAG 论文

我们在这个基准测试上的评估突出了与完全可信的问答之间的差距。虽然大多数先进的 LLM 在 CRAG 上的准确率≤34%,但以直接的方式添加 RAG 只能将准确率提高到 44%。最先进的行业 RAG 解决方案在没有任何幻觉的情况下只能回答 63%的问题

因此,这一点非常明确。

  • LLM 并不擅长存储大量知识。

  • 现有的 RAG 解决方案并不擅长将此类信息输入到语言模型中。

自动评估

我实际上已经进行了与 CRAG 基准测试非常相似的测试,我在一家专注于构建高性能和可靠检索引擎的公司工作,因此我们必须进行大量的此类风格测试。很多人没有意识到这个过程是多么的劳动密集型。

每次你创建一个新的 RAG 方法时,你都需要查看它在 4,409 个问题上的表现。这是一项大量工作。

解决这个问题的方法是通过让语言模型自动评估 RAG 答案是否正确。想法是,当你创建你的问题集时,你花了很多时间确保它们是好的问题,并为每个问题写下正确的答案(由人类生成)。然后,当给定的 RAG 方法生成自己的答案时,你询问语言模型根据人类定义的答案,这个答案是否正确。

这个过程可能会成功也可能失败。你实际上是在使用语言模型来检查它自己的工作,这意味着它可能会认为自己是对的,而实际上它是错的。CRAG 团队通过让几个不同的 LLM 自动判断答案来解决这个问题,避免了所谓的“自我偏好问题”(语言模型倾向于同意他们所说的话)。

令人印象深刻的是,他们设法创建了一个自动评估系统,人类有 95%以上的时间都同意。他们使用这个自动评估系统作为烟雾测试,然后对顶尖表现者进行人工评估。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/30b2fdf89eef69aa89cf196a7a093a8f.png

自动评估与人工评估的一致性如何。来自CRAG 论文

竞赛

Meta 发布了一个围绕这个基准的竞赛,大量参与者尝试了创建 RAG 方法。这将在撰写本文时结束,我很兴奋地想探索一些顶尖的表现者。

AIcrowd | Meta 综合 RAG 基准:KDD Cup 2024 | 挑战

结论

基准就像人工智能研究社区的轻油,这是一个好的基准。它很好地融入了现有的文献和问题中。总的来说,性能可靠的人工智能越来越受到人们的渴望,我认为 CRAG 定位为关键的基准,将人工智能从酷炫的技术演示转变为可靠且有用的工具。

加入 IAEE

在 IAEE,你可以找到:

  • 长篇内容,就像你刚刚读到的这篇文章

  • 基于我的数据科学家、工程总监和企业家经验的思想碎片

  • 一个专注于学习人工智能的 Discord 社区

  • 每周由我进行的讲座

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1c3a8701769bb6f0ac9511b37f264f22.png

加入 IAEE

需求响应动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕需求响应动态冰蓄冷系统及其优化策略展开研究,结合Matlab代码实现,探讨了在电力需求侧管理背景下,冰蓄冷系统如何通过优化运行策略参与需求响应,以实现削峰填谷、降低用电成本和提升能源利用效率的目标。研究内容包括系统建模、负荷预测、优化算法设计(如智能优化算法)以及多场景仿真验证,重点分析不同需求响应机制下系统的经济性和运行特性,并通过Matlab编程实现模型求解与结果可视化,为实际工程应用提供理论支持和技术路径。; 适合人群:具备一定电力系统、能源工程或自动化背景的研究生、科研人员及从事综合能源系统优化工作的工程师;熟悉Matlab编程对需求响应、储能优化等领域感兴趣的技术人员。; 使用场景及目标:①用于高校科研中关于冰蓄冷系统与需求响应协同优化的课题研究;②支撑企业开展楼宇能源管理系统、智慧园区调度平台的设计与仿真;③为政策制定者评估需求响应措施的有效性提供量化分析工具。; 阅读建议:建议读者结合文中Matlab代码逐段理解模型构建与算法实现过程,重点关注目标函数设定、约束条件处理及优化结果分析部分,同时可拓展应用其他智能算法进行对比实验,加深对系统优化机制的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值