RAG 2.0,让RAG 终成正果

news2024/12/26 9:32:10

在观察人工智能行业的时候,我们已经习惯了每天看到各种事物被“淘汰”。有时候,当我不得不第23923次谈论某个事物突然被“淘汰”时,我自己也会感到不安。

然而,像Contextual.ai提出的基于情境语言模型(CLMs)的“RAG 2.0”这样的案例却很少见,它试图让目前最流行(如果不是最受欢迎的话)的生成式AI模型实现方式之一——标准检索增强生成(RAG)变得过时。提出这种主张的,恰恰是RAG的创造者。

虽然这是对生产级生成式AI现状的一次重大改进,但整个子领域仍存在一个疑问:RAG是否正在走向末路,这些创新是否只是在对一个已经死去的马施加无效的鞭打?

从数据的角度看问题

你可能知道,也可能不知道,所有的独立大规模语言模型(LLMs),如ChatGPT等,都有一个“知识截止日期”。

这意味着预训练是一次性的任务(与持续学习方法不同)。换句话说,LLMs只能“看到”截止到某一时间点的数据。例如,撰写本文时,ChatGPT的数据截止于2023年4月。因此,它们无法回答在那个日期之后发生的事实和事件。

这就是RAG发挥作用的地方。

一切都关于语义相似性

顾名思义,RAG的理念是从已知数据库中检索数据,这些数据可能是LLM从未见过的,并实时地将它们输入模型,以便为模型提供最新的,更重要的是,语义相关的上下文,从而提供准确的答案。

那么,这个检索过程是如何运作的呢?

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

来源

这个过程涉及到三个元素:

  1. 嵌入模型
  2. 检索器,通常是一个向量数据库
  3. 生成器,也就是LLM

首先,为了让检索过程有效,我们需要将数据转换为“嵌入”形式,也就是将文本表示为数值向量。

这些嵌入遵循一个相似性原则:相似的概念会有相似的向量。例如,“狗”和“猫”的概念在我们看来是相似的:它们都是动物、哺乳动物、四足动物并且可以被人类驯养。因此,当它们被转换为向量后,“狗”可能是3, -1, 2,“猫”可能是2.98, -1, 2.2,我们可以将每个数字视为该概念的一个“属性”。因此,相似的数字意味着相似的属性。

如果你想深入了解什么是嵌入,请查阅我的深度解析文章。

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

根据之前讨论的相似性原则,在这个空间中,相似的事物会彼此更接近。

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

用通俗的话说,它会提取出与用户查询向量距离最近的向量。

由于这些向量代表了底层的概念,所以相似的向量将代表相似的概念,在这个例子中,就是其他的猫。

来源

一旦我们提取了相关的内容,我们就为大型语言模型(LLM)构建了一个提示,这个提示包括了:

  • 用户的请求
  • 提取的内容
  • 通常还包括一组系统指令

那么,什么是系统指令呢?

在构建提示的过程中,你可能会希望调整模型的响应方式。一个典型的系统指令可能是“要简洁”。

这就是RAG(Retrieval-Augmented Generation,检索增强生成)的精髓,一个能够在推理时提供与用户查询相关的实时内容以增强LLM响应的系统。

RAG系统之所以能工作,是因为LLM的一个重要特性:上下文学习。这使得模型能够使用以前未见过的数据,在没有进行权重训练的情况下进行准确的预测。

让我们深入探讨一下上下文学习,以及LLM是如何学习使用它的。

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

理解推动前沿AI模型发展的关键直觉是困难的。但它不必如此。

无需拼凑的解决方案,已经过时

我们可以用下面的裤子图形象地表示当前的RAG系统:

虽然这些裤子可能适合某些观众,但大多数人永远不会穿它们,因为尽管补丁裤最初是为了不引人注意,但它们并没有统一性。

这个类比背后的原因是因为标准的RAG系统组装了三个不同的组件,这些组件是分别预训练的,并且根据定义,它们本来就不应该在一起。

相反,RAG 2.0系统从一开始就被定义为“一体”。#RAG2.0#

这里不允许有“弗兰肯斯坦”(意指拼凑而成的东西)

在实践中,整个系统是端到端训练的,同时保持连接,就像假设大型语言模型(LLM)应该始终有一个向量数据库与之相连,以保持更新。

与标准的RAG相比,预训练、微调以及从人类反馈中学习强化学习(RLHF),所有这些是标准LLM训练的基本组成部分,都是从头开始执行的,包括大型语言模型和检索器(向量数据库)。

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

而结果证明了这一点:

尽管使用的模型几乎肯定比GPT-4更差,但这种新的方法在所有可能的GPT-4和其他检索系统的RAG 1.0组合中表现最好。

来源:Contextual.ai

原因很简单:在RAG 1.0中,我们分别训练各个部分,然后把它们拼接在一起,希望得到最好的结果。但在RAG 2.0中,所有组件从一开始就在一起。

用更专业的术语来说,把两个独立训练的系统拼接在一起是制造灾难的配方,尤其是在学习到的表示不平衡的情况下。

这就像一个英国人试图使用一个日本数据库;虽然上下文存在,但它不能被英国人理解。

但即使RAG 2.0的优势明显,还有一个重大问题仍未解决。

真正的问题还未得到解答

尽管RAG 2.0可能很快成为那些不愿与大型语言模型(LLM)提供商共享机密数据的公司的企业标准,但有理由怀疑,无论是哪个版本的RAG,最终可能都不再需要。

巨大序列长度的到来

我相信你非常清楚,我们今天的前沿模型,比如Gemini 1.5或Claude 3,它们的上下文窗口非常大,在生产发布的模型中可以达到一百万个令牌(75万字),在研究实验室中可以达到一千万个令牌(750万字)。

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

作为参考,《指环王》系列书籍总共有576,459个单词,而《哈利·波特》整个系列书籍大约有1,084,170个单词。因此,一个750万字的上下文窗口可以在每个提示中五次装下这两个故事。

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

一个可能放弃这个选项的理由可能是准确性。序列越长,模型检索正确上下文的难度应该越大,对吗?

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

然而,正如谷歌所证明的那样,在长序列中准确性并不会受到影响,他们甚至在一千万个令牌长度的上下文中展示了几乎100%的准确性,对于“大海捞针”任务,其中在提示的深处隐藏了一个很小的,有时不相关的事实,以查看模型是否能够正确检索它。

而它确实做到了:

但这是如何做到的呢?

这些模型无论长度如何都能表现出惊人性能的背后的技术支持是,这些模型的基本操作符——注意力机制——具有绝对的全局上下文,因为注意力机制迫使序列中的每一个单独的令牌(也就是一个单词或子词)去关注序列中每一个其他的之前的单词。

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

因此,在我看来,RAG最终是否存活下来不会取决于准确性,而是取决于另一个超越技术的关键因素:

成本。

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

今天,由于Transformer无法压缩上下文,更长的序列不仅意味着成本呈二次方增长(序列增加2倍意味着计算量增加4倍,或者序列增加3倍意味着计算成本增加9倍),而且还意味着由于KV缓存大小的增加,内存需求会爆炸性增长。

KV缓存是模型的“缓存内存”,用于避免重新计算大量冗余的注意力数据,否则这个过程在经济上是不可行的。这里是关于KV缓存是什么以及它如何工作的深入回顾。

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

事实上,在像EVO这样的DNA模型中,研究人员使用了海纳(Hyena)操作符而不是注意力来避免前面提到的二次方关系。海纳操作符使用长卷积而不是注意力来以次二次方的成本捕捉长距离依赖。

但等等,卷积不也是一个二次方操作吗?

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

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

其他的替代方案在寻求一种混合方法,而不是完全放弃注意力,而是找到注意力和其他操作符之间的最佳平衡点,以在保持性能的同时降低成本。

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

Mamba、Hyena、Attention……你可能认为我只是为了证明一个观点而随意列举一些花哨的词汇。

但忘掉这些不同的名字吧,在一天结束时,一切都归结为同一个原则:它们是揭示语言模式的不同方式,帮助我们的AI模型理解文本。

注意力机制驱动了当今99%的模型,其余的只是在尝试找到尽可能最小的性能降低的更便宜的方式,使大型语言模型(LLM)更加经济。

总的来说,我们很快就能看到处理极长序列的成本仅为现在的一小部分,这应该会增加对RAG架构需求的怀疑。

当那个时刻到来时,我们可以几乎肯定它会发生,我们还会依赖RAG吗?我不知道,但有可能我们现在正在做的都是无用功。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1646117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI预测体彩排3第3套算法实战化赚米验证第2弹2024年5月6日第2次测试

由于今天白天事情比较多,回来比较晚了,趁着还未开奖,赶紧把预测结果发出来吧~今天是第2次测试~ 2024年5月6日排列3预测结果 6-7码定位方案如下: 百位:2、3、1、5、0、6 十位:4、3、6、8、0、9 个位&#xf…

【数据可视化-02】Seaborn图形实战宝典

Seaborn介绍 Seaborn是一个基于Python的数据可视化库,它建立在matplotlib的基础之上,为统计数据的可视化提供了高级接口。Seaborn通过简洁美观的默认样式和绘图类型,使数据可视化变得更加简单和直观。它特别适用于那些想要创建具有吸引力且信…

微信视频号如何变现呢,视频号涨粉最快方法

今天给大家带来的是视频号分成计划 视频号流量主这个项目,可以说这是目前的一个蓝海赛道,做的人也少,外面开的培训也很少,作为副业还是比较适合个人的,如果想批量操作这个项目,也比较适合工作室的。而且这…

【CTF Web】XCTF GFSJ0485 simple_php Writeup(代码审计+GET请求+PHP弱类型漏洞)

simple_php 小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 解法 &#xfeff;<?php show_source(__FILE__); include("config.php"); $a$_GET[a]; $b$_GET[b]; if($a0 and $a){echo $flag1; } if(is_numeric($b)){exit(); } if($b>1234){ech…

Python学习笔记------处理数据和生成折线图

给定数据&#xff1a; jsonp_1629344292311_69436({"status":0,"msg":"success","data":[{"name":"美国","trend":{"updateDate":["2.22","2.23","2.24",&qu…

Llama3-Tutorial之Llama3本地Web Demo部署

Llama3-Tutorial之Llama3本地 Web Demo部署 Llama3-Tutorial之Llama3本地Web Demo部署章节。 参考&#xff1a; https://github.com/SmartFlowAI/Llama3-Tutorial 1. 环境配置 conda create -n llama3 python3.10conda activate llama3conda install pytorch2.1.2 torchvision0…

【MicroPython ESP32】ssd1306驱动0.96“I2C屏幕汉字显示示例

所需模块micropython-ssd1306模块 中文下载站&#xff1a;https://www.cnpython.com/pypi/micropython-ssd1306/download 官方下载站&#xff1a;https://pypi.org/project/micropython-ssd1306/ 汉字取模说明 取模工具&#xff1a;pctolcd2002取模方式&#xff1a; UTF-8字…

Python | Leetcode Python题解之第61题旋转链表

题目&#xff1a; 题解&#xff1a; class Solution:def rotateRight(self, head: ListNode, k: int) -> ListNode:if k 0 or not head or not head.next:return headn 1cur headwhile cur.next:cur cur.nextn 1if (add : n - k % n) n:return headcur.next headwhi…

暂不要创业,谁创业谁死

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 卢松松视频号会员专区有个会员提问&#xff0c;我感觉挺有代表性的&#xff0c;写成公众号文章&#xff0c;分享给大家&#xff1a; 松哥&#xff0c;我花了太多时间在思考上&#xff0c;而一直没有行动&#xff…

从ChatGPT革命性的对话系统,看人机交互模式6个阶段的演变

ChatGPT引领革命&#xff0c;看人机交互六步飞跃 ©作者|wy 来源|神州问学 引言 在科技的浪潮中&#xff0c;人机交互模式不断演进&#xff0c;从最初的简单指令输入到如今的智能对话系统&#xff0c;每一次革新都昭示着人类与机器交流方式的深刻变革。ChatGPT&#xff0…

使用nvm切换nodejs版本

查看可以安装的版本&#xff1a; 使用nvm list显示已安装的nodejs版本&#xff1a; 选择一个版本下载&#xff1a; 切换对应的版本&#xff1a;

触摸OpenNJet,感悟云原生

小程一言 云原生使得应用充分利用云计算、容器化和微服务架构等现代技术来构建和运行应用程序。 云原生技术的用处在于提高应用程序的可靠性、可伸缩性和灵活性&#xff0c;加快开发和部署速度&#xff0c;降低成本&#xff0c;提升整体的效率和竞争力。通过采用云原生技术&a…

【微服务】网关(详细知识以及登录验证)

微服务网关 网关网关路由快速入门路由属性 路由断言网关登录校验自定义过滤器实现登录校验网关传递用户OpenFeign传递用户 网关 网络的关口&#xff0c;负责请求的路由&#xff0c;转发&#xff0c;身份校验 当我们把一个单体项目分成多个微服务并部署在多台服务器中&#xff…

辐射类案例分析

辐射类案例分析 1.1 接地对辐射实验的影响 金属外壳接地已经成为了一种共识&#xff0c;很多人可能会认为金属外壳就该接地&#xff0c;接地可以改善EMC性能&#xff0c;对于抗干扰类实验&#xff0c;情况可能是这样&#xff0c;但是对于辐射类实验而言&#xff0c;有时候会有…

人工智能概述与入门基础简述

人工智能&#xff08;AI&#xff09;是计算机科学的一个分支&#xff0c;它致力于创建能够执行通常需要人类智能的任务的机器。这篇科普文章将全面介绍人工智能的基本概念、发展历程、主要技术、实际应用以及如何入门这一领域。 一、人工智能的定义与发展历程 人工智能的概念…

【C++】 认识多态 + 多态的构成条件详细讲解

前言 C 目录 1. 多态的概念2 多态的定义及实现2 .1 虚函数&#xff1a;2 .2 虚函数的重写&#xff1a;2 .2.1 虚函数重写的两个例外&#xff1a; 2 .3 多态的两个条件&#xff08;重点&#xff09;2 .4 析构函数为啥写成虚函数 3 新增的两个关键字3.1 final的使用&#xff1a;3…

笔记86:关于【#ifndef + #define + #endif】的用法

当你在编写一个头文件&#xff08;例如 pid_controller.h&#xff09;时&#xff0c;你可能会在多个源文件中包含它&#xff0c;以便在这些源文件中使用该头文件定义的函数、类或其他声明。如果你在多个源文件中都包含了同一个头文件&#xff0c;那么当你将整个工程统一编译&am…

HFSS学习-day1-T形波导的内场分析和优化设计

入门实例--T形波导的内场分析和优化设计 HFSS--此实例详细步骤1.创建项目2.设置求解类型3.设置与建模相关的一些信息设置默认的建模长度单位 4.创建T形模型的三个臂基本参数端口激励进行复制 5.创建被挖去的部分设置正确的边界条件和端口激励方式添加求解设置添加扫频项检查一下…

2010-2022年上市公司彭博ESG披露评分、分项得分数据

2010-2022年上市公司彭博ESG披露评分、分项得分数据 1、时间&#xff1a;2010-2022年 2、来源&#xff1a;Bloomberg ESG 指数 3、指标&#xff1a;股票代码、股票简称、年份、ESG披露评分、环境披露评分、社会信息披露评分、治理披露评分 4、范围&#xff1a;上市公司 5、…

服务运营 | 精选:快递小哥几点到?送货上门服务中的优化问题

推文作者信息&#xff1a;杨春苇&#xff0c;香港城市大学系统工程系在读博士生&#xff0c;研究方向: 专注于线上平台的服务运营管理&#xff0c;涵盖匹配、定价、调度和路径规划等问题。通过将数据科学与运筹优化相结合&#xff0c;提供高效实用的决策支持系统。​ ​ 编者按…