RAG是否被取代(缓存增强生成-CAG)吗?

引言:

        本文深入研究一种名为缓存增强生成(CAG)的新技术如何工作并减少/消除检索增强生成(RAG)弱点和瓶颈。

LLMs 可以根据输入给他的信息给出对应的输出,但是这样的工作方式很快就不能满足应用的需要:

因为很多时候回答问题,要么知识不足,让我回答的问题会有错误, 而且很多时候回答问题的信息需要及时更新的,但是大模型的训练却不能进行同步。

为了确保LLMs能够使用最新信息来回答查询,以下技术被广泛使用:

  • 模型微调

  • 低秩适应(LoRA) 微调

  • 检索增强生成(RAG)

最近研究人员刚刚发布了一种新的技术:一种名为缓存增强生成(CAG)的新技术,可以减少对RAG(因此也减少了它的所有缺点)的需求。CAG通过将所有相关知识预先加载到LLM的扩展上下文中,而不是从知识存储中检索它,并在推理时使用这些知识来回答查询它的效果令人惊讶: 当与长上下文LLMs一起使用时,结果表明这种技术在多个基准测试中要么优于RAG,要么可以作为RAG的有效补充。通过下文,我们深入了解缓存增强生成(CAG)的工作原理以及与RAG相比的表现。

一:什么是缓存增强生成(CAG)?

       1:技术概述:

缓存增强生成(Cache-Augmented Generation, CAG)是一种新兴的技术,旨在通过预加载和缓存相关知识,提高大型语言模型(LLMs)的生成效率和响应速度。与传统的检索增强生成(Retrieval-Augmented Generation, RAG)相比,CAG 通过将所有相关知识预先加载到模型的上下文窗口中,并缓存其运行时参数,从而在推理时直接生成响应,无需实时检索。

      2:工作执行原理:

CAG 的核心在于两个主要组件:缓存生成模型。缓存存储了在之前交互或计算过程中生成的文本片段(或知识),这些存储的信息随后用于指导下一步的生成,从而加快生成过程并提高相关性。

具体步骤如下:

  1. 缓存构建:在模型生成文本时,关键信息(如常用短语、学习到的事实或上下文)被存储在缓存中。这可以在不同级别进行,无论是单词级别、句子级别,还是更抽象的语义级别。

  2. 缓存查找:当模型被要求生成新文本时,它首先检查缓存以查找相关的信息。如果找到匹配项,模型会检索并将其纳入新生成的内容中,减少从头开始计算的需求。

  3. 缓存更新:随着时间的推移,模型生成更多文本时,缓存会用新的有用信息进行更新,保持其新鲜感和相关性。

3:RAG技术原理简介:

它是一种知识整合和信息检索技术,允许LLM使用特定于用例的私有数据集来产生更准确和最新的响应。

RAG中的技术过程如下:

  • 检索:从知识库/特定私有数据集中 检索 相关信息/文档的过程。

  • 增强:检索到的信息 添加 到输入上下文的过程。

  • 生成:LLM基于原始查询和增强上下文 生成 响应的过程。

RAG-RAG的全称是Retrieval-Augmented Generation-检索增强生成

但RAG并不是一种完美的技术, 它也有非常多的缺点。

•检索延迟:在推断过程中从外部知识库获取信息需要时间, 基本上相当于传统搜索引擎需要的时间, 当然一般情况下还是可以忍受。

•检索错误:由于检索过程中选择了不相关和不完整的文档,可能会导致不准确或不相关的响应, 这就很依赖搜索引擎剧部分的效果。

•知识碎片化:不当的分块和不正确的排名可能导致检索到的文档不连贯且缺乏连贯性。所以很多时候在做RAG的时候如何去分辨如何提前对新型信息进行预处理就非常重要。

•复杂性增加:构建RAG流程需要额外复杂的基础设施,并涉及大量的维护和更新开销。  对,其实要做好RAG,其实跟做好一个受损性是比较类似的,开销都是比较大的。

二:CAG和RAG的表现和优势:

   1:用于评估 CAG 性能的考虑了两个问答 Benchmark:
  • 斯坦福问答数据集(SQuAD)1.0:由众包工作者在一组维基百科文章上提出的 100,000+ 个问题组成。每个问题的答案是相应阅读段落中的文本片段。

  • HotPotQA:由 113,000 个基于维基百科的问题-答案对组成,需要跨多个文档进行多跳推理。    

从每个数据集中创建了三个测试集,其中参考文本的长度不同,增加参考文本的长度会使检索更具挑战性。

Image

研究者使用 Llama 3.1 8-B Instruction model(上下文长度为 128k 个标记)来测试 RAG 和 CAG。

2:CAG 真的能够替代RAG吗?

令人惊讶的是,结果显示CAG 的表现优于稀疏(BM25)和密集(OpenAI Indexes)的 RAG 系统,在大多数评估中获得了最高的 BERT-Score。    

Image

此外,CAG 大大减少了生成时间,特别是随着参考文本长度的增加。

对于最大的 HotpotQA 测试数据集,CAG 比 RAG 快约40.5 倍。这是一个巨大的提升!    

Image

CAG 看起来是一个非常有前途的方法,可以确保在未来 LLM 的上下文长度进一步增加时从中检索到最新的信息(独立使用或与 RAG 结合)。

总结:

1: CAG 的优势
  • 低延迟:无需实时检索数据,从而加快推理速度。
  • 简化设计:无需向量数据库或嵌入模型,降低了系统复杂性。
  • 高吞吐量:对于同一数据集上的重复任务,效率更高。
2: CAG 的局限性
  • 知识大小有限:CAG 要求整个知识源必须能够适应模型的上下文窗口,因此对于涉及极其大数据集的任务不太适用。
  • 上下文长度限制:LLMs 的性能可能会随着上下文长度的增加而下降。
3: CAG 的应用场景
  • 企业文档助手:静态数据集,如员工手册和用户手册。
  • 医疗知识检索:医疗指南或治疗协议。
  • 法律文件摘要:预加载合同和法律简报以进行快速分析。
  • 在线学习平台:预加载静态课程内容以进行动态查询。
4:CAG 的未来展望

随着上下文窗口限制的增加(例如 1M 个标记),CAG 将变得更加可扩展。此外,结合 CAG 和 RAG 的混合架构将平衡静态和动态数据需求,而优化的标记管理将更有效地处理大型数据集。

5:结论

缓存增强生成(CAG)并不是检索增强生成(RAG)的通用替代品,但在具有有界数据集、低延迟要求和静态知识库的场景中表现出色。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP三次握手和四次挥手

TCP 三次握手和四次挥手 TCP(传输控制协议)是一种面向连接的协议,在建立连接和断开连接时分别需要通过 三次握手 和 四次挥手 来确保通信的可靠性和完整性。 1. 三次握手 三次握手是 TCP 建立连接的过程,确保客户端和服务器双方…

在线免费快速无痕去除照片海报中的文字logo

上期和大家分享了用photoshop快速无痕去除照片海报中的文字logo的方法,有的同学觉得安装PS太麻烦,有那下载安装时间早都日落西山了,问有没有合适的在线方法可以快速去除;达芬奇上网也尝试了几个网站,今天分享一个对国人…

VS C++ 配置OPENCV环境

VS C 配置OPENCV环境 1.下载opencv2.安装环境3.opencv环境4.VS配置opencv环境5.EXE执行文件路径的环境lib和dll需要根据是debug还是release环境来区分使用哪个 6.Windows环境 1.下载opencv 链接: link 2.安装环境 双击运行即可 3.opencv环境 include文件路径:opencv\build\…

excel如何查找一个表的数据在另外一个表是否存在

比如“Sheet1”有“张三”、“李四”“王五”三个人的数据,“Sheet2”只有“张三”、“李四”的数据。我们通过修改“Sheet1”的“民族”或者其他空的列,修改为“Sheet2”的某一列。这样修改后筛选这个修改的列为空的或者为出错的,就能找到两…

电路研究9.2.2——合宙Air780EP分组域相关命令

这个好像是GPRS网络相关的&#xff0c;我过来研究一下。 8.1GPRS 网络注册状态&#xff1a;ATCGREG 设置指令控制关于GPRS注册状态非请求结果码的显示。 当<n>1 并且 MT 的 GPRS 注册状态发生改变&#xff0c;即会有CGREG:<stat>的 URC 上报。 当 <n>2 并 且…

DeepSeek R1:中国AI黑马的崛起与挑战

文章目录 技术突破&#xff1a;从零开始的推理能力进化DeepSeek R1-Zero&#xff1a;纯RL训练的“自我觉醒”DeepSeek R1&#xff1a;冷启动与多阶段训练的平衡之道 实验验证&#xff1a;推理能力的全方位跃升基准测试&#xff1a;超越顶尖闭源模型蒸馏技术&#xff1a;小模型的…

UiAutomator的详细介绍

UIAutomator作为一种高效的测试框架&#xff0c;通过自动化手段显著提升了用户界面&#xff08;UI&#xff09;测试的效率与准确性。它不仅支持自动生成功能测试用例&#xff0c;还允许开发者在不同设备上执行这些测试&#xff0c;确保了应用程序的一致性和稳定性。 以下是对 …

开源物业管理系统赋能社区管理提升居民服务体验与满意度

内容概要 在现代物业管理中&#xff0c;开源物业管理系统的出现为社区管理带来了新的契机。这种系统的核心思想是通过开放、共享的方式&#xff0c;为各类物业管理需求提供灵活的解决方案。从基本的信息传递到复杂的投诉处理&#xff0c;开源物业管理系统能够根据不同社区的实…

【深入理解FFMPEG】命令行阅读笔记

这里写自定义目录标题 第三章 FFmpeg工具使用基础3.1 ffmpeg常用命令3.1.13.1.3 转码流程 3.2 ffprobe 常用命令3.2.1 ffprobe常用参数3.2.2 ffprobe 使用示例 3.3 ffplay常用命令3.3.1 ffplay常用参数3.3.2 ffplay高级参数3.3.4 ffplay快捷键 第4章 封装与解封装4.1 视频文件转…

递归搜索回溯综合练习(十五题)

目录 1.找出所有子集的异或总和再求和 2.全排列2 3.电话号码的字母组合 4.括号生成 5.组合 6.目标和 1.path作为全局变量 2.path用于传参 7.组合总和 方法一&#xff1a;按照每个空选什么数字进行递归 方法二&#xff1a;按照每个数字选几个进行递归 8.字母大小写全排…

JWT实现单点登录

文章目录 JWT实现单点登录JWT 简介存在问题及解决方案登录流程后端程序实现前端保存Tokenstore存放信息的缺点及解决 校验流程&#xff1a;为gateway增加登录校验拦截器 另一种单点登录方法&#xff1a;Token&#xff0b;Redis实现单点登录 JWT实现单点登录 登录流程&#xff…

qt-QtQuick笔记之常见项目类简要介绍

qt-QtQuick笔记之常见项目类简要介绍 code review! 文章目录 qt-QtQuick笔记之常见项目类简要介绍1.QQuickItem2.QQuickRectangle3.QQuickImage4.QQuickText5.QQuickBorderImage6.QQuickTextInput7.QQuickButton8.QQuickSwitch9.QQuickListView10.QQuickGridView11.QQuickPopu…

循环神经网络(RNN)+pytorch实现情感分析

目录 一、背景引入 二、网络介绍 2.1 输入层 2.2 循环层 2.3 输出层 2.4 举例 2.5 深层网络 三、网络的训练 3.1 训练过程举例 1&#xff09;输出层 2&#xff09;循环层 3.2 BPTT 算法 1&#xff09;输出层 2&#xff09;循环层 3&#xff09;算法流程 四、循…

Autosar-Os是怎么运行的?(多核系统运行)

写在前面&#xff1a; 入行一段时间了&#xff0c;基于个人理解整理一些东西&#xff0c;如有错误&#xff0c;欢迎各位大佬评论区指正&#xff01;&#xff01;&#xff01; 目录 1.Autosar多核操作系统 1.1多核启动过程 1.2多核运行过程 1.2.1核间任务同步 1.2.2Counte…

【C语言练习题】正弦函数

题目&#xff1a; 根据麦克劳林公式计算正弦值。 输入格式 x ε 注&#xff1a;x 为角(弧度)&#xff0c;ε 为计算精度。 输出格式 y 注&#xff1a;y 为 x 的正弦值&#xff0c;输出 6 位小数。 输入样例1 0.5235987755982989 0.00000001输出样例1 0.500000输入样例2 314.68…

GBase 8a 9.5.3.27 DBlink配置---源端GBase

原理图 1.目标端集群将数据请求由gcluster的5258端口发送至dblink的9898端口 2.Dblink将请求由9898端口转发至源端集群的5258端口 3.源端数据库将接收的请求生成执行计划&#xff0c;由gcluster的5258端口下发至各gnode的5050端口 4.源端的5050端口接收到执行计划进行查询&…

二次封装的方法

二次封装 我们开发中经常需要封装一些第三方组件&#xff0c;那么父组件应该怎么传值&#xff0c;怎么调用封装好的组件原有的属性、插槽、方法&#xff0c;一个个调用虽然可行&#xff0c;但十分麻烦&#xff0c;我们一起来看更简便的方法。 二次封装组件&#xff0c;属性怎…

*胡闹厨房*

前期准备 详细教程 一、创建项目 1、选择Universal 3D,创建项目 2、删除预制文件Readme:点击Remove Readme Assets,弹出框上点击Proceed 3、Edit-Project Setting-Quality,只保留High Fidelity 4、打开 Assets-Settings ,保留URP-HighFidelity-Renderer 和 URP-High…

Effective Objective-C 2.0 读书笔记—— objc_msgSend

Effective Objective-C 2.0 读书笔记—— objc_msgSend 文章目录 Effective Objective-C 2.0 读书笔记—— objc_msgSend引入——静态绑定和动态绑定OC之中动态绑定的实现方法签名方法列表 其他方法objc_msgSend_stretobjc_msgSend_fpretobjc_msgSendSuper 尾调用优化总结参考文…

Three.js实战项目02:vue3+three.js实现汽车展厅项目

文章目录 实战项目02项目预览项目创建初始化项目模型加载与展厅灯光加载汽车模型设置灯光材质设置完整项目下载实战项目02 项目预览 完整项目效果: 项目创建 创建项目: pnpm create vue安装包: pnpm add three@0.153.0 pnpm add gsap初始化项目 修改App.js代码&#x…