AI 文摘

碳泽解读RAG20,终于把RAG做对了!





作者: 上海碳泽信息科技有限公司 来源: 上海碳泽信息科技有限公司

前言

纵观人工智能行业,我们已经习惯了每天都看到东西被“杀死”。有时候,当我不得不谈论第23923次某事突然被“杀死”时,我自己也会感到不舒服。

但这种情况很少像Contextual.ai在上下文语言模型(CLM)中提出的那样引人注目,他们称之为“RAG 2.0”,以使标准检索增强生成(RAG)过时。

这一主张的背后,正是RAG的最初创建者。

尽管这是对生产级生成式人工智能现状的巨大改进,但整个领域仍然存在一个问题:RAG是否正在经历它的最后时刻,这些创新是否只是在做无用功?

01

以数据为基础

正如你已经知道或者不知道的那样,所有独立的大型语言模型(LLM),比如赫赫有名的ChatGPT,都有一个知识截止点。

这意味着预训练是一次性的(不像持续学习方法)。换句话说,LLM直到某个时间点才“看到”数据。

举例来说,截至撰写本文时,ChatGPT的更新截止日期为2023年4月。因此,它们没有准备好回答那之后发生的事实和事件。

而这就是RAG的用武之地。

只是语义相似性****

顾名思义,这个想法是从一个已知的数据库中检索数据,LLM很可能从未见过这些数据,并实时将其输入到模型中,这样它就更新了上下文,更重要的是,更新了语义相关的上下文,以提供准确的答案。

但是这个检索过程是如何工作的呢?

整个体系结构源于一个单一的原则:检索与请求或提示上下文相关的语义上有意义的数据的能力。

来源:https://www.linkedin.com/pulse/what-retrieval-augmented-generation-grow-right/

这一过程涉及到三个要素的使用:

  1. 嵌入模型

  2. 检索器,通常是矢量数据库

  3. 还有生成器——LLM

首先也是最重要的一点是,为了使这个检索过程发挥作用,你需要数据处于“嵌入形式”,即数字向量形式的文本表示。

更重要的是,这些嵌入有一个相似性原则:相似的概念会有相似的向量。

例如,“狗”和“猫”的概念与我们相似:都是动物、哺乳动物、四肢动物和家养动物。翻译成矢量,“dog”可以是[3,-1,2]和“cat”[2.98,-1,2.2],你可以把每个数字看作这个概念的“属性”。所以,相似的数字意味着相似的属性。

关于嵌入更多的探讨参考这里:https://thewhitebox.ai/what-on-earth-are-embeddings/

获得嵌入后,我们将它们插入向量数据库(检索器),这是一个存储这些嵌入的高维数据库。

应用我们前面讨论的相似性原理,在这个空间中,相似的事物更紧密地联系在一起。

然后,每当用户发送如下请求“给我一只黄色的猫类似的结果”时,矢量数据库就会执行“语义查询”。

通俗地说,它提取与用户查询最接近的向量(距离)。

由于这些向量代表基本概念,因此相似的向量将代表相似的概念,在本例中表示其他猫。

一旦我们提取了内容,我们就构建LLM提示(prompt),封装:

    1. 用户的请求
    1. 提取的内容
    1. 以及通常的一组系统指令

但系统指令是什么?

作为提示工程过程的一部分,您还需要调整模型的响应方式。典型的系统指令可能是“简洁”的。

简而言之,这就是RAG,一个为用户查询实时(在推理时)提供相关内容以增强 LLM 响应的系统。

RAG**系统之所以起作用,首先要归功于LLM的最大超能力:上下文学习,它允许模型使用以前未见过的数据来执行准确的预测,而无需权重训练。

这里深入探讨情境学习以及LLM如何学习使用它(https://thewhitebox.ai/in-context-learning-llms-greatest-superpower/)。

但这个过程听起来好得令人难以置信,当然,事情并不像看起来那么神奇。

02

缝合而不进行任何已成为过去****

将当前的RAG系统可视化的一种方式就像下图中的裤子:

虽然这种裤子可能适合一些受众,但大多数人不会穿,因为它们没有同质性,尽管缝合的裤子原本是为了不被注意到而设计的。

这个比喻背后的原因是标准的RAG系统组装了三个不同的组件,这些组件分别进行了预训练,而且从定义上来说,它们本来就不应该在一起。

相反,RAG 2.0系统(https://contextual.ai/introducing-rag2/)从一开始就被定义为“一体”。

实际上,整个系统在连接时进行端到端的训练,就像假设LLM应该始终与它们绑定的向量数据库一起保持更新一样。

与标准的RAG相比,预训练、微调和从人类反馈中进行强化学习(RLHF)等标准LLM训练的所有重要组件都是从零开始进行的,包括LLM和检索器(向量数据库)。

用更专业的术语来说,这意味着,在反向传播过程中,训练这些模型的算法,梯度不仅通过整个 LLM 传播,而且还通过检索器传播,以便整个系统作为一个整体从训练中学习数据。

不可否认的结果表明:

尽管使用了几乎可以保证比GPT-4更糟糕的独立模型,但这种新方法的性能优于GPT-4和其他检索系统之间的所有其他可能的RAG 1.0组合。

来源:Contextual.ai

原因很简单:在RAG1.0中,我们单独训练事物,然后将它们缝合在一起,并希望得到最好的结果。但在RAG 2.0中,情况大不相同,因为所有组件从一开始就在一起。

用更专业的术语来说,将两个分别训练的系统拼接在一起是灾难的前兆,尤其是在学习到的结果表示不相等的情况下。

这类似于英国人使用日语数据库;上下文在那里,但对于英国人来说并不可解释。

尽管RAG2.0的优势显而易见,但仍存在一个大问题。

03

真正的问题仍然没有答案****

尽管看起来RAG 2.0可能很快就会成为企业标准,因为它的设计专门针对那些不愿与LLM提供商共享机密数据的公司,但有理由相信,无论是哪个版本的RAG,最终都不会完全被需要。

巨大序列长度的到来

我相信你已经非常清楚这样一个事实,即我们今天的边界模型,如Gemini 1.5或Claude 3,有巨大的上下文窗口,在其生产发布的模型中有多达100万个token(75万字),在研究实验室中有多达1000万个token(750万字)。

通俗地说,这意味着这些模型可以在每个提示中输入非常长的文本序列。

供参考,《指环王》系列书籍总共有576,459字,而哈利波特的整个系列大约有1,084,170字。因此,一个750万字的上下文窗口可以将这两个故事合在一起,而且每个提示都可以五倍地容纳。

在这种情况下,我们真的需要一个知识检索器知识库,而不是仅仅在每个提示中提供信息吗?

放弃此选项的原因之一可能是准确性。序列越长,模型检索正确的上下文就越困难,对吧?

另一方面,与其在每个提示中都输入整个上下文,RAG过程允许选择仅与语义相关的数据,从而使整个过程更加高效。

然而,正如谷歌证明的那样,在长序列中,准确性并不受影响。他们甚至在长达1000万标记的上下文中也表现出几乎100%的准确率,这是在"大海捞针(Needle-in-the-Haystack)“任务中证明的,任务中会在提示的深处隐藏一个小的、有时与之无关的事实,以查看模型是否能够正确地检索到它。

确实做到了:

但这怎么可能呢?

这种不管长度如何的惊人性能背后的技术原因是,这些模型背后的基本运算符,即注意力机制(https://thewhitebox.ai/the-attention-mechanism/),具有绝对的全局上下文,因为注意力机制迫使每个标记(也就是单词或子词)都关注序列中每个之前的单词。

这确保了无论依赖关系有多长,信号有多小(关键信息可能存储在数百万个单词之外的一个单词中),模型都应该能够——而且确实能够——检测到它。

因此,在我看来,RAG最终能否生存并不取决于准确性,而是取决于技术之外的另一个关键因素:成本

更好的商业案例,或者死亡

如今,由于Transformer无法压缩上下文,较长的序列不仅意味着成本呈二次增加(序列增加2倍意味着计算成本增加4倍,或者增加3倍意味着计算成本增加9倍),还意味着由于KV缓存大小的增加而导致内存需求激增。

KV**缓存是模型的“缓存内存”,避免了重新计算大量冗余的注意力数据,否则会使过程在经济上不稳定。以下是对KV缓存是什么以及它是如何工作的深入回顾(https://thewhitebox.ai/kv-cache-chatgpts-memory/)。

简而言之,运行非常长的序列成本非常高昂,以至于对于具有极长序列长度的模态,例如DNA,甚至不考虑使用Transformer。

事实上,在DNA模型中,例如EVO,研究人员使用了Hyena运算符而不是注意力,以避免之前提到的二次关系。Hyena运算符使用长卷积而不是注意力来捕获长距离依赖关系,成本是次二次的。

但是,等等,卷积不也是二次运算吗?

是的,但是,虽然标准卷积的成本确实是二次的,但通过应用卷积定理,该定理规定了两个函数之间的卷积的傅里叶变换是它们各自傅里叶变换的点对点乘积(哈达玛积),你可以在次二次的时间和成本内执行该操作,这个操作称为“快速卷积”。

基本上,虽然你在时域计算卷积,但你是在频域中计算它作为点对点的乘积,这更快、更便宜。

其他替代方案旨在采用混合方法,而不是完全放弃注意力,在注意力和其他操作者之间找到最佳平衡点,以较低的成本保持性能。

最近的例子包括Jamba,它巧妙地将Transformer与其他更高效的架构(如Mamba)混合在一起。

Mamba*、Hyena、Attention……你可能认为我只是在提一些花哨的名词来证明一个观点。*

但不要纠结于这些奇怪的名字,归根结底,它们都归结于同样的原则:它们是揭示语言中模式的不同方式,以帮助我们的AI模型理解文本。

目前,99%的模型都依赖于Attention机制,而其余的只是在尽可能降低性能损失的前提下,寻找更廉价的方法,使LLM更加经济实惠。

总的来说,我们很快就会看到处理极长序列的成本会大大降低,甚至只是当前价格的一小部分,这应该会增加对RAG架构的需求的怀疑。

当那个时候来临时,我们几乎可以保证会发生,我们还会依赖RAG吗?我不知道,但在这一点上我们可能在做无用功。

碳泽信息从去年开始一直在针对LLM在安全运营(自动化和工作流编排)方面进行研究和实践,取得的一些进展和经验,同时也发现了一些问题。我们发现许多应用场景感觉不太对,是在用更大的成本、更慢的效率去取代一些已经很成熟的方案,这或许要等到LLM进一步发展才能得到实质性的改善。我们也在研究和使用RAG,正如本文所言,我们会依赖RAG吗?科技的快速进步会改变很多,会带来惊喜,也会带来意想不到的的问题,利用科技利用AI,而不是被科技和AI挟持。

原文作者:Ignacio de Gregorio

如想知道更多前沿技能知识**,请持续关注碳泽信息!**

End

碳泽信息

新一代智能安全运营平台

电话:400-1788-258

销售咨询:[email protected]

技术支持:[email protected]

官网:http://www.tanze.net.cn

往期推荐:

碳泽解读 | Web指纹检测技术浅析

碳泽解读 | 过多的自动化会不会成为安全运营的问题?

碳泽解读 | 威胁狩猎系列之威胁狩猎过程

碳泽解读 | 威胁狩猎系列之如何成为优秀的威胁猎手
‍‍‍‍

碳泽解读 | 威胁狩猎系列之基础篇

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具