在长窗口时代,RAG技术是否仍然必要?

news2024/11/24 3:13:49

自从谷歌推出 Gemini 1.5 Pro,行业内部对于 RAG 的讨论就不绝于耳。

Gemini 1.5 Pro 的性能确实令人瞩目。根据谷歌公布的技术文档,该系统能够稳定处理长达 100 token 的内容,相当于一小时的视频、十一小时的音频、超过三万行的代码或七十万个文字。其处理能力上限更是达到惊人的 1000 万 token,相当于《指环王》三部曲的长度,刷新了上下文窗口长度的记录。

凭借超长上下文理解能力,Gemini 1.5 Pro 得到了很多用户的认可。很多测试过 Gemini 1.5 Pro 的人更是直言,这个模型被低估了。有人尝试将从 Github 上下载的整个代码库连同 issue 都扔给 Gemini 1.5 Pro,结果它不仅理解了整个代码库,还识别出了最紧急的 issue 并修复了问题。

当然,除了谷歌在卷 “上下文长度”,其他大模型公司也都在卷这个能力。去年下半年,GPT-3.5 上下文输入长度从 4 千增长至 1.6 万 token,GPT-4 从 8 千增长至 3.2 万 token;OpenAI 最强竞争对手 Anthropic 一次性将上下文长度打到了 10 万 token;LongLLaMA 将上下文的长度扩展到 25.6 万 token,甚至更多。

在国内,刚刚完成 8 亿美元融资的 AI 大模型公司月之暗面,也把 “长文本(Long Context)” 当前主打的技术之一。去年 10 月,当时月之暗面发布了首个模型 Moonshot 和 Kimi 智能助手,支持 20 万字的输入。

那么,上下文到底意味着什么,为什么大家都在卷这个能力?

01 上下文长度,大模型好用的关键

上下文技术,是指模型在生成文本、回答问题或执行其他任务时,能够考虑并参照的前置文本的数量或范围,是一种大模型信息量处理能力的评价维度。用通俗的话来说,如果参数规模大小比喻成模型的计算能力,那么上下文长度更像是模型的 “内存”,决定了模型每轮对话能处理多少上下文信息,直接影响着 AI 应用的体验好坏。

比如,随着上下文窗口长度的增加,可以提供更丰富的语义信息,有助于减少 LLM 的出错率和「幻觉」发生的可能性,用户使用时,体验能提升不少。

在业内人士看来,上下文长度增加对模型能力提升意义巨大。用 OpenAI 开发者关系主管 Logan Kilpatrick 话说,“上下文就是一切,是唯一重要的事”,提供足够的上下文信息是获得有意义回答的关键。

02 这跟 RAG 有啥关系?

RAG,中文翻译过来就是检索增强生成,所做的事情并不复杂,就是通过检索获取与用户输入相关的知识并在上下文中提供给大模型,为大模型提供更多更有效的信息,增强生成内容的质量。

具体来说,在语言模型生成答案前,RAG 先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。

举个例子,作为一名员工,你可以直接问大模型 “我们公司对迟到有什么惩罚措施?”,在没有读过《员工手册》的情况下,大模型没有办法回答。但是,借助 RAG 方法,我们可以先让一个检索模型到《员工手册》里去寻找最相关的几个答案,然后把你的问题和它找到的相关答案都送到生成模型中,让大模型生成答案。这就解决了之前很多大模型上下文窗口不够大(比如容不下《员工手册》)的问题。

不过嘛,现在情况不一样了。如果一个模型可以直接处理 1000 万 token 的上下文信息,还有必要再通过额外的检索步骤来寻找和整合相关信息吗?用户可以直接将他们需要的所有数据作为上下文放入模型中,然后像往常一样与模型进行交互。「大型语言模型本身已经是一个非常强大的检索器,为什么还要费力建立一个弱小的检索器,并在分块、嵌入、索引等方面耗费大量工程精力呢?」爱丁堡大学博士生符尧评论道。

那么,RAG 技术是否已经过时了?它是会被长文本彻底取代,还是维持配角现状,还是跟大模型共同进化?

为此,我们采访了 PingCAP AI Lab 的数据科学家孙逸神,以下为他的看法 ——

03 上下文窗口与 RAG 共存共赢

我认为,在假定 LLM 有足够的阅读理解能力的前提下,RAG 的本质就是在上下文窗口的约束下,提高 Prompt 的有效信息密度,从而提高生成质量的有力手段。而这两者,是毫无冲突的。

是的,我认为上下文跟 RAG 并不矛盾。GPT-4o 的回答,基本上表达了我的观点:

Q: LLM 的 context window 和 RAG 有什么关系吗?

A: LLM(大型语言模型)的 context window 和 RAG(Retrieval-Augmented Generation)是两个相关但不同的概念。它们在信息处理和生成方面有着不同的作用和机制。

首先来看看他们各自的应用场景和具体作用:

Context Window,指大型语言模型在一次生成或处理过程中能够看到和使用的文本长度。注意,它是有长度限制的。例如,GPT-4 的 context window 可能是 8,000 或 32,000 个 token(具体长度取决于模型的版本)。

在这个窗口内,模型可以使用上下文信息来理解和生成文本。如果超出上下文窗口限制,模型就无法利用所有相关信息,可能会导致直接报错退出。

所以,context window 是任何任务的约束条件,即大模型单次最多能读的内容量,模型在处理当前任务时依赖于它能看到的上下文。

Retrieval-Augmented Generation,一种结合检索和生成的技术,旨在提高生成文本的质量和信息性。

图源:https://github.com/hymie122/RAG-Survey

在检索阶段,RAG 系统首先从一个大规模的知识库或文档数据库中检索出与查询相关的信息。这通常使用信息检索技术,例如 BM25、TF-IDF 或基于深度学习的检索模型(如 Dense Passage Retrieval, DPR);当然,也可以是向量检索,总而言之,检索并不限定某一种特定方法,甚至可以多种方法进行组合。

在生成阶段,RAG 系统会把检索到的相关文档或信息作为上下文的一部分提供给生成模型,生成模型使用这些上下文来生成更准确和相关的回答。另外,通过使用检索到的外部信息,RAG 能生成更具信息性的回答,特别是在模型本身知识库不足或需要实时信息时。这就是结合上下文生成和增强生成。

那它们俩之间有啥关系?

  1. 增加有效信息输入:

      RAG 技术可以在上下文窗口以内,增加有效消息量。LLM 的 context window 有限,但通过检索相关文档并将其作为上下文传递给生成模型,可以在不直接增加模型 context window 的情况下提供更多的相关信息。

  2. 提高准确性:

      当需要生成具体领域或最新的信息时,RAG 的检索机制可以提供精确的上下文,帮助 LLM 生成更准确的回答。这样可以弥补模型训练时的数据不足或过时的问题。

所以,LLM 的 context window 和 RAG 在生成文本时都有重要作用,但它们通过不同的方式来增强文本生成的质量和连贯性。context window 提供了模型在单次处理中的上下文范围,而 RAG 通过检索相关信息提高了上下文的信息质量,使得模型可以生成更为信息丰富和准确的内容。

04 未来,RAG 也不会被取代

我认为,与其聚焦于现下讨论它们之间的优劣势,不妨以发展的眼光来看 LLM 和 RAG 的关系。

从 OpenAI 推出 ChatGPT 开始,人们体验到了碾压以往同类 “智障聊天机器人” 的 AI 产品。ChatGPT 引爆全球以后,大家发现了它巨大潜力的同时,也同样发现了它很多的能力缺陷,其中首当其冲的就是幻觉。另外,上下文有限也限制了应用的想象力。

如何减轻幻觉?一种方式是重新训练基础模型,用更多更高质量的语料,费人费时费能费钱。于是人们又使用了微调的方法,用相对少的训练量,修改部分深度网络的参数,来达到质量提升的效果。它的性价比已经是小团队或个人开发者可以接受的状态了。

但为什么还会继续发展到 RAG 呢?其中一方面原因是微调依然需要对语料的质量有要求,虽说微调本身不花太长时间,但是语料的收集和前处理是需要一定时间的;另一方面还有一个原因是,无论是训练还是微调,大方向上看是总体提升的,但是期待没有一个点变弱也是不太可控的,它可以定向地学习好的,但是难以定向地遗忘不好的,所以是存在变差的可能性的。

于是,RAG 也很自然地成为大家提高输出质量的一个研究方向。RAG 能起到作用,本身隐含了一个前提条件,就是 LLM 在上下文窗口内存在较强的 “阅读理解” 能力。虽说我依然不认为 LLM 有 “逻辑” 能力(为什么 LLM 看起来是有 “逻辑” 的,因为 “逻辑” 的最大载体是语言,如果 LLM 输入 “学习” 的是大量蕴含正确逻辑的文本,那它作为一个类似马尔科夫决策过程,它的生成也会倾向于有 “逻辑” 的输出,但这不等于理解 “逻辑” 并能自如地运用 “逻辑”),但它确实在绝大多数情况下表现出了优秀的 “阅读理解” 能力以及续写和回答问题的能力。

既然这个前提在广泛的实践上被证实大体有效,那人们可以很自然地想到一个降低 LLM 幻觉,改善 LLM 输出质量的方法。第一,更充分地利用上下文窗口的长度。这和人类间的交互是类似的,就像提问的智慧一样,给予更多的信息,通常对于生成的内容是有帮助的。如果输入内容的有效信息密度提高,同样也是有益的。这一点很容易直观地理解。

那接下来,如何提高上下文窗口限制内的有效信息密度,第一种方式就是人工提供。就是一开始大家钻研玩花的 Prompt 魔法。

但每次手工输入在工程上是没法 Scale 的,所以上述方式更多是对直接使用 Chat 的终端用户有价值,对于要包装 LLM 为用户提供更好服务的中间商是不太可行的,于是 RAG 自然就出现了。如果你把它理解成搜索引擎,就是在上下文窗口长度限制内,增加更多与用户输入 “相关” 的内容。提供的内容越多,通常 LLM 自由发挥天马行空的概率就会降低,这也是很朴素的一个结论。RAG 就是一个尽可能提高有效信息密度的工程实现手段。

到这里,其实主要的观点 —— 上下文窗口与 RAG 没有任何矛盾的结论已经可以支撑住了。

进一步补充说明的话,RAG 整个系统的目的还是 Generation,Retrieval 是一种提高质量 (Augmented) 的手段,上下文窗口是 Generation 子系统的一个参数或者说约束,Retrieval 是在这个约束内工作的,属于是带着镣铐跳舞的状态。窗口小就少 Retrieving 一些东西回来,窗口大就多 Retrieving 一些东西回来,就是这么一个朴素的逻辑。

而上下文的拓展本身,与需要表达的观点无关,需要关注的是,趋势上来看,上下文越长,LLM 的能力会相应变弱,这是符合直觉的,人类也有同样的问题。第二是上下文拓展的方法,这个在 LLAMA 上研究得已经很多了。开发 LLM 的人目标一定是更长的上下文且不断提高在此前提下的输出质量。

另外要补充说明的一个角度是,LLM 在不断地进步,很多早期通过包装 LLM 来为用户提供价值的中间商被上游新一代的 LLM 直接降维打击出局,所以围绕 LLM 做开发的人都不免要担心自己在做的事情,会不会被下一代 LLM 干掉,这是一个很现实的问题。我的观点是 RAG 不会,Agent 也不太会 (此处不展开)。RAG 能够长期立足的原因在于,训练和微调之间是有时间差的,这个时间差会变小,但长期来看,不会变为 0,在这个时间差以内的信息,只能通过 RAG 的方式注入。同样的,私域知识也只可能通过 RAG 的方式注入。时效性需求和私有性需求决定了 RAG 会一直存在,大家要做的只是进一步提高 RAG 的搜索质量,让 LLM 可以更好地为用户所爱。

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

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

相关文章

服务器的初始化

服务器的初始化 新的服务器到手,部署服务器的初始化。 1、配置ip地址 网关 dns解析(static)内网和外网 2、安装源,外网(在线即可)内网(只能用源码包编译安装) 3、磁盘分区&#…

2024年第一期“数据安全咨询(高级)”培训开启报名!

各有关单位 为加速数据安全专业人才的培育,增强企事业单位数据安全治理与防御能力,提升数据安全从业人员的业务能力和管理水平,在中国电子学会、杭州市计算机学会、浙江省网安协数据安全治理专委会的支持下,浙江省电子学会、杭州…

【Qt】Qt界面美化指南:深入理解QSS样式表的应用与实践

文章目录 前言:1. 背景介绍2. 基本语法3. QSS 设置方式3.1. 设置全局样式3.2. 从文件加载样式表3.3. 使用 Qt Designer 编辑样式 总结: 前言: 在当今这个视觉至上的时代,用户界面(UI)的设计对于任何软件产…

apexcharts数据可视化之圆环柱状图

apexcharts数据可视化之圆环柱状图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式: 基础圆环柱状图多组数据圆环柱状图图片背景自定义角度渐变半个圆环图虚线圆环图 基础圆环图 import ApexChart from react-apexcharts;export function Cir…

效率管理时间应用:滴答清单

一、简介 1、滴答清单(TickTick),一款由杭州随笔记网络技术有限公司开发的待办事项和任务提醒工具,作为TickTick的中国服务器版本,它提供了易用、轻量、功能完整的解决方案,支持Web、iOS、Android等多个平…

【大比武10】行业垂直大模型应用在档案管理中的探索

关注我们 - 数字罗塞塔计划 - # 大比武2024 本篇是参加“华夏伟业”杯第二届档案信息化公司业务与技术实力大比武(简称“大比武 2024”)的投稿文章,来自广州龙建达电子股份有限公司,作者:陶宣任。 在这个人工智能技…

学习笔记:(2)荔枝派Nano开机显示log(全志F1C200S)

学习笔记:TF卡启动荔枝派Nano(全志F1C200S) 1.u-boot配置2.需要配置LCD的显示设备树1.u-boot配置 ARM architecture Enable graphical uboot console on HDMI, LCD or VGAx:480,y:272,depth:

李廉洋:5.31黄金原油末日砸盘,美盘分析及策略。

黄金消息面分析:过去几天股市的抛售也是金属市场的利多因素。美国商务部将第一季度GDP预期从1.6%下修至1.3%后,美国国债收益率下降。同时,美国劳工部公布,上周首次申请失业救济人数从前一周修正后的21.6万人上升至21.9万人。综合来…

python3.5如何安装numpy

python3.5如何安装numpy?步骤如下: 1.首先应该将你的Python环境变量设置正确。检验是否正确的方法就是winR,输入cmd 。在窗口中输入python,应该得到如下所示的效果图: 可以在命令框中直接编译python。 2.安装pip&…

【农村电商1004】 电子商务进农村示范县名单:全面数据集等你探索!

今天给大家分享的发表在国内顶级期刊金融研究的2023年论文《农村发展电子商务能减缓资本与劳动力要素外流吗?——以电子商务进农村综合示范案例为例》使用到的重要数据集电子商务进农村综合示范政策县数据,该论文采用了双重差分法和全国县域面板数据研究…

MySQL:MySQL执行一条SQL查询语句的执行过程

当多个客户端同时连接到MySQL,用SQL语句去增删改查数据,针对查询场景,MySQL要保证尽可能快地返回客户端结果。 了解了这些需求场景,我们可能会对MySQL进行如下设计: 其中,连接器管理客户端的连接,负责管理连接、认证鉴权等;查询缓存则是为了加速查询,命中则直接返回结…

[代码复现]Self-Attentive Sequential Recommendation

参考代码:SASRec.pytorch 可参考资料:SASRec代码解析 前言:文中有疑问的地方用?表示了。可以通过ctrlF搜索’?。 环境 conda create -n SASRec python3.9 pip install torch torchvision因为我是mac运行的,所以device是mps 下面…

谁是镰刀谁是韭菜?程序交易与手动交易的博弈,靠技术还是靠运气

备受争议的话题,很多人认为程序化交易是在破坏市场的平衡,大量的程序交易订单可能会造成市场价格的异常波动,尤其是在高频交易未被监管时,程序化交易者占尽优势,来回收割。 而支持程序交易的人认为,市场是…

redis 高可用及哨兵模式 @by_TWJ

目录 1. 高可用2. redis 哨兵模式3. 图文的方式让我们读懂这几个算法3.1. Raft算法 - 图文3.2. Paxos算法 - 图文3.3. 区别: 1. 高可用 在 Redis 中,实现 高可用 的技术主要包括 持久化、复制、哨兵 和 集群,下面简单说明它们的作用&#xf…

vscode怎么点击路径直接跳转对应文件

在vue项目中经常要引入工具类、组件、模版等,想要直接去看对应文件,只能自己找到对应路径再去打开。 我们可用在js项目中创建一个 jsconfig.json文件,TS项目可以创建tsconfig.json 文件代码 {"compilerOptions": {"baseUrl&…

Ubuntu16.04 opencv环境搭建(C++)

Ubuntu下vscode跑opencv程序环境搭建。 目录 1 ubuntu查看opencv版本 2 下载opencv包 3 依赖配置 4 进入安装包内执行 5 配置环境变量 6 VScode配置-下载c扩展 7 编译运行helloworld 8 在vscode中配置opencv环境 9 运行结果 1 ubuntu查看opencv版本 pkg-config --mo…

根据模板和git commit自动生成日·周·月·季报

GitHub - qiaotaizi/dailyreport: 日报生成器 GitHub - yurencloud/daily: 程序员专用的日报、周报、月报、季报自动生成器! config.json: { "Author": "gitname", "Exclude": ["update:", "add:", "…

Flink实现实时异常登陆监控(两秒内多次登陆失败进行异常行为标记)

Flink实现异常登陆监控(两秒内多次登陆失败进行异常行为标记) 在大数据处理领域,Apache Flink 是一个流行的开源流处理框架,能够高效处理实时数据流。在这篇博客中,我们将展示如何使用 Apache Flink 从 MySQL 中读取数…

LIO-EKF: 运行数据UrbanNav与mid360设备详细教程

一、代码连接 代码下载连接: YibinWu/LIO-EKF: Maybe the simplest LiDAR-inertial odometry that one can have. (github.com) 编译步骤: cd srcgit clone gitgithub.com:YibinWu/LIO-EKF.gitcatkin_makesource devel/setup.bash 运行步骤: …

opencv进阶 ——(八)图像处理之RMBG模型AI抠图

BRIA.AI团队于HuggingFace开源了一个基于ISNet背景移除模型RMBG-1.4,它可以有效对前景与背景进行分离。RMBG-1.4在精心构建的数据集上训练而来,该数据包含常规图像、电商、游戏以及广告内容,该方案达到了商业级性能,但仅限于非商业…