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

自从谷歌推出 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 可以更好地为用户所爱。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Alibaba-09-Seata分布式事务

Lison <dreamlison163.com>, v1.0.0, 2024.5.03 Spring Cloud Alibaba-09-Seata分布式事务 文章目录 Spring Cloud Alibaba-09-Seata分布式事务分布式事务基础事务本地事务分布式事务分布式事务的场景 分布式事务的解决方案全局事务可靠消息服务最大努力通知TCC事务 Se…

Java实现数据结构---数组

文章目录 概念存储原理数组的操作完整代码 概念 数组是&#xff08;Array&#xff09;是有限个相同类型的变量所组成的有序集合&#xff0c;数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。 数组下标从零开始。 存储原理 数组用一组连续的内存空间来存储一…

蓝桥杯第17135题 不完整的算式 C++ Java Python

目录 题目 思路和解题方法 步骤 1&#xff1a;识别缺失的部分 步骤 2&#xff1a;根据已知条件计算或推断 步骤 3&#xff1a;处理特殊情况和验证 c 代码 Java 版本 Python 版本&#xff08;仅供参考&#xff09; 代码和解题细节&#xff1a; 题目 题目链接&#xff…

STM32自己从零开始实操03:输出部分原理图

一、继电器电路 1.1指路 延续使用 JZC-33F-012-ZS3 继电器&#xff0c;设计出以小电流撬动大电流的继电器电路。 &#xff08;提示&#xff09;电路需要包含&#xff1a;三极管开关电路、续流二极管、滤波电容、指示灯、输出部分。 1.2数据手册重要信息提炼 联系排列&…

神经网络与深度学习——第3章 线性模型

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第3章 线性模型 线性模型 线性模型&#xff08;Linear Model&#xff09;是机器学习中应用最广泛的模型&#xff0c;指通过样本特征的线性组合来进行预测的模型&#xff0c;给定一个 D D D维样本 x [ x …

解锁 GPT-4o 背后数据带来的情绪价值

GPT-4o 可以说已经是一个富有情感、通人性的智能语音助手&#xff0c;或者更准确地说&#xff0c;是一个越来越接近人类交互的 “新物种”。这个强大的模型同时具备文本、图片、视频和语音理解和合成方面的能力&#xff0c;甚至可以被视为 GPT-5 的一个未完成版。 01 富有情感的…

lipo制作通用版本静态库

文章目录 目的了解多架构的maclipo如何利用lipo编译通用版本静态库lipo 命令整理扩展目的 主要是使用lipo命令在macOS上创建通用版本的静态库(.a文件),来支持多种架构,如arm64,x86_64。 学习目的: 了解mac 不同架构arm64, x86_64了解lipo命令了解多架构的mac 随着appl…

Linux - 文件管理高级1

0.管道 | 将前面命令的标准输出传递给管道作为后面的标准输入 1.文件查找 find find 进行文件查找时&#xff0c;默认进行递归查找&#xff0c;会查找隐藏目录下的文件 1.1 用法 # find 查找路径 查找条件... -type // 文件类型 f 普通文件 b 设备 d …

数据目录用处如此之大?四个步骤教你构建数据目录

在数字化浪潮的推动下&#xff0c;数据已成为企业决策的核心。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;如何高效地管理和利用这些宝贵的数据资产&#xff0c;成为了一个日益严峻的挑战。企业需要一个强大的工具来组织、索引和解释其数据&#xff0c;以便快速发现和…

代理IP怎么检测?如何判断IP好坏?

当我们的数字足迹无处不在&#xff0c;隐私保护显得愈发重要。而代理IP就像是我们的隐身斗篷&#xff0c;让我们在各项网络业务中更加顺畅。 我们常常看到别人购买了代理IP服务后&#xff0c;用在线检测网站检查IP&#xff0c;相当于一个”售前检验““售后质检”的作用。但是…

图书管理系统——Java实现

文章目录 Java实现图书管理系统问题分析框架搭建业务实现项目测试代码演示BookioperationUserMain&#xff08;默认包&#xff09; Java实现图书管理系统 学习了前六篇的SE语法&#xff0c;我们现在要用它们实现一个简单的图书管理系统项目&#xff0c;深入了解各个知识点的应…

【CH32V305FBP6】4. systick 配置

配置 main.c void SYSTICK_Init_Config(u_int64_t ticks) {SysTick->SR & ~(1 << 0);//clear State flagSysTick->CMP ticks - 1;SysTick->CNT 0;SysTick->CTLR 0xF;NVIC_SetPriority(SysTicK_IRQn, 15);NVIC_EnableIRQ(SysTicK_IRQn); }中断计数 …

算法-扫描线

目录 什么是扫描线算法&#xff1f; 扫描线简单应用 更多的扫描线 什么是扫描线算法&#xff1f; 在计算几何中&#xff0c;扫描线算法&#xff08;scan line algorithm&#xff09;一般用来解决几何图形的面积交并&#xff0c;周长交并问题&#xff0c;扫描线算法的核心思想…

Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

Leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串 给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串&#xff0c;请返回 true &#xff0c;否则请返回 false 。 截取每个长度为 k 的字符串&#xff0c;加入 Set 中&#x…

wpf listbox实现选中动画

效果如下&#xff1a; 参考&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers/blob/master/src/WPFDevelopers.Samples.Shared/Controls/NavigateMenu/NavigateMenu.xaml 实现上述效果的前台代码&#xff1a; <Windowx:Class"ListBox.MainWindow"…

数据隐私新篇章:Facebook如何保护用户信息

随着数字化时代的到来&#xff0c;数据隐私保护成为了社交媒体平台和用户共同关注的焦点。作为全球最大的社交网络之一&#xff0c;Facebook一直致力于保护用户的隐私和数据安全。本文将深入探讨Facebook在数据隐私保护方面的措施和实践&#xff0c;以及其如何开启数据隐私的新…

C++系列-类模板

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 类模板的定义格式&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; template<class T> class Stack { public:Stack(size_…

u盘文件保密的方法有哪些?关于U盘的使用你要知道这些!

U盘作为便携式的存储设备&#xff0c;被广泛应用于日常工作和生活中。 然而&#xff0c;U盘的丢失或被盗可能导致敏感数据泄露&#xff0c;因此&#xff0c;掌握U盘文件保密的方法至关重要。 本文将介绍几种有效的U盘文件保密方法&#xff0c;并分享关于U盘使用的关键知识&…

BioVendor—Surfactant Protein D Human ELISA

人表面活性剂蛋白D是糖蛋白和钙依赖凝集素胶原亚家族的一员。SP-D是一种同源三聚体蛋白&#xff0c;由三个43kDa单元组成&#xff0c;这些单元在它们的中间结合。大多数SP-D主要含有十二聚体(四个三聚体亚单位)&#xff0c;但也观察到更高的多聚体。每个单元由至少四个离散的结…

旧衣回收小程序带来的收益优势,小程序有哪些功能?

随着互联网的快速发展&#xff0c;大众对旧衣回收市场也越来越了解&#xff0c;对于闲置的旧衣物也有了适合的处理方式。旧衣回收也符合了当下资源回收利用&#xff0c;因此&#xff0c;旧衣回收市场获得了爆发式增长&#xff0c;市场规模不断扩大。同时市场中还吸引了越来越多…