RAG概述(一):RAG架构的演进

news2024/11/16 9:34:37

目录

概述

RAG核心步骤

Indexing索引

Retrieval检索

Generation生成​​​​​​​

Native RAG

Advanced RAG

Modular RAG

参考


概述

RAG:Retrieval-Augmented Generation 检索增强生成。

RAG通过结合LLMs的内在知识和外部数据库的非参数化数据,提高了模型在知识密集型任务中的准确性和可信度。

RAG是一种通过整合外部知识库来增强LLMs的范式。

RAG的发展经历了三个主要阶段:初级(Native RAG)、高级(Advanced RAG)和模块化RAG(Modular RAG)。

RAG核心步骤

  1. Indexing 索引
  2. Retrieval检索
  3. Generation生成

Q&A场景下的RAG工作流示例:

用户询问ChatGPT关于一个最近的高调事件(例如,OpenAI首席执行官的突然解雇和复职),这引起了公众的广泛讨论。

ChatGPT作为最著名和广泛使用的LLM,受到其预训练数据的限制,缺乏对最近事件的了解。

RAG通过从外部知识库检索最新的文档摘要来解决这一差距。这些文章与初始问题一起,被合并成一个丰富的提示,使ChatGPT能够综合出一个知情的回应。

这个例子说明了RAG过程,展示了它通过实时信息检索增强模型响应的能力。

Indexing索引

索引过程是数据准备中的一个关键初始步骤,它在离线状态下进行,并涉及多个阶段。

【数据提取】它从数据索引开始,原始数据被清洗和提取,各种文件格式如PDF、HTML、Word和Markdown被转换成标准化的纯文本。

【分块】为了适应语言模型的上下文限制,这些文本随后被分割成更小、更易于管理的块,这个过程被称为分块。

【向量化】这些块随后通过一个嵌入模型转换为向量表示,这有助于在检索阶段进行相似性比较。

【索引】最后,创建一个索引来存储这些文本块及其向量嵌入作为键值对,这允许高效和可扩展的搜索能力。

Retrieval检索

【查询向量化】在收到用户查询后,系统使用与索引阶段相同的编码模型将输入转换为向量表示。

【相似度计算】然后计算查询向量与索引语料库中向量化块之间的相似度分数。

【topk】系统优先检索与查询最相似的前K个块。这些块随后被用作扩展的上下文基础,以解决用户的请求。

Generation生成

【组装prompt】提出的查询和选定的文档被渲染成一个提示(Prompt),大型语言模型生成回答。

【剩下的就交给模型了】模型的回答方法可能因任务特定标准而异,允许它要么利用其内在的参数知识,要么将其回应限制在提供的文档内包含的信息。

在持续对话的情况下,任何现有的对话历史可以被整合到提示中,使模型能够有效地参与多轮对话互动。

Native RAG

就是包括最基本的Indexing-Retrieval-Generation三个过程。

不足:效果不好

具体表现:

  1. 准确性低:Retrieval阶段查询到的块,和query本身的相关性低。可能导致LLM出现幻觉或空中掉物等问题。
  2. 召回低:Retrieval阶段查询的块,并没有返回足够多的相关块,进一步降低了LLM构建全面回应的可能性。
  3. 组装prompt的问题:这个阶段会将检索到的块和query融合,构建一个prompt给到LLM。若检索到的多个块中包含了相似或重复的内容,可能导致最终LLM生成内容的冗余和重复,也就是表现的婆婆妈妈。
  4. 灵活性问题:若检索阶段拿到了足够丰富的信息,和query一起构建扔给LLM后,LLM的生成完全基于检索出的内容,并没有增加新生成的内容,变成了复读机。

Advanced RAG

概述:对Native RAG做了些优化

Advanced RAG是为了解决Naive RAG的不足而开发的,它实现了预检索和后检索策略。

为了解决Naive RAG在索引过程中遇到的挑战,Advanced RAG改进了其索引方法,使用了滑动窗口、细粒度分割和元数据等技术。它还引入了各种方法来优化检索过程。

(且听下回分解)

Modular RAG

概述:Indexing-Retrieval-Generation三段论不变,额外配置了一个超大的武器库,你可以自由选用合适的组件加入到三段论中。

模块化RAG结构与传统的朴素RAG框架不同,提供了更大的灵活性和适应性。它整合了各种方法来增强功能模块,例如加入搜索模块进行相似性检索,并在检索器中应用微调方法。重构的RAG模块和迭代方法已被开发出来以解决特定问题。

模块化RAG范式在RAG领域越来越成为常态,允许通过多个模块进行序列化流水线或端到端训练。

然而,模块化RAG并非独立存在。高级RAG是模块化RAG的一种特殊形式,而朴素RAG本身是高级RAG的一个特例。这三种范式之间的关系是继承和发展。

(且听下回分解)

参考

  1. https://arxiv.org/pdf/2312.10997
  2. https://zhuanlan.zhihu.com/p/683651359

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

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

相关文章

区间合并-leetcode合并石头的最低成本-XMUOJ元素共鸣:深层次的唤醒

题目 思路 话不多说,直接上代码 附上INT_MAX和INT_MIN 【C】详解 INT_MAX 和 INT_MIN(INT_MAX 和 INT_MIN是什么?它们的用途是什么?如何防止溢出?)_c int max-CSDN博客 代码 /* leetcode合并石头的最低…

未授权访问:Hadoop 未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、通过REST API命令执行 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬总结好的文章…

【机器学习数据可视化-07】波士顿房价预测数据分析

波士顿房价预测:基于数据可视化的深入探索 一、引言   在当今社会,房地产市场作为经济的重要支柱之一,其走势与波动直接影响着国家经济的稳定和人民生活的品质。波士顿,这座历史悠久且充满活力的城市,其房地产市场一…

ElasticSearch学习篇12_《检索技术核心20讲》基础篇

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243 课程分为基础篇、进阶篇、系统案例篇 主要记录企业课程学习过程课程大纲关键点,以文档形式记录笔记。 内容 检索技术:它是更底层的通用技术&#xff0c…

如何用bet快速创建文件夹多个同级文件夹,多层子文件夹

第一种用txt编辑,保存格式改为bat 运行即可 md用来创建文件夹 md空格文件夹名字 或者 md空格文件夹名字\子文件夹名字 第一个创建一个文件夹,或者多个同级文件夹用空格隔开或者用,英文逗号隔开 md 00 md 00 md 11 md 22 md 33 或者 md 00 1…

Python 中别再用 ‘+‘ 拼接字符串了!

当我开始学习 Python 时,使用加号来连接字符串非常直观和容易,就像许多其他编程语言(比如Java)一样。 然而,很快我意识到许多开发者似乎更喜欢使用.join()方法而不是。 在本文中,我将介绍这两种方法之间的…

Charles抓包App_https_夜神模拟器

Openssl安装 下载安装 下载地址: http://slproweb.com/products/Win32OpenSSL.html 我已经下载好了64位的,也放出来: 链接:https://pan.baidu.com/s/1Nkur475YK48_Ayq_vEm99w?pwdf4d7 提取码:f4d7 --来自百度网…

Golang实现文件复制

方法:三种 package zdpgo_fileimport ("errors""io""os" )// CopyFile 使用io.Copy进行文件的复制,同时也会复制文件的所有权限 // param src 复制文件 // param des 目标文件 // return error 错误信息 func CopyFile(s…

MacOS安装Docker-Compose

方法一 按照百度的方法进行安装,我大致复制一下百度的方法 1.确保您已经安装了Docker Desktop。 2.下载Docker Compose二进制文件。 3.将二进制文件移动到/usr/local/bin目录。 4.更改二进制文件的权限,使其可执行。 以下是具体的命令:…

LiveGBS流媒体平台GB/T28181用户手册-用户管理:添加用户、编辑、关联通道、搜索、重置密码

LiveGBS流媒体平台GB/T28181用户手册-用户管理:添加用户、编辑、关联通道、搜索、重置密码 1、用户管理1.1、添加用户1.2、编辑用户1.3、关联通道1.4、重置密码1.5、搜索1.6、删除 2、搭建GB28181视频直播平台 1、用户管理 1.1、添加用户 添加用户,可以配置登陆用户…

git 无法下载UE5源码问题

最近做镜像,突然遇到这个问题。 无法下载,应该如何解决呢? 1.首先 跳过htts ssl验证 2,设置更大的缓冲区 结果还是这个问题:

鹏特资本进入中国市场具有以下一些优势

1. 带来资金:补充国内资金缺口,为企业发展和项目建设提供重要的资金支持。 2. 先进技术和管理经验:有助于推动技术创新和管理水平提升,促进产业升级和优化。 3. 促进竞争:激发国内市场活力,促使本土企业不…

【调和级数】100321. 优质数对的总数 II

本文涉及知识点 调和级数 质数、最大公约数、菲蜀定理 LeetCode100321. 优质数对的总数 II 给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以被 nums2[j] * k 整除,则称数对 (i, j) 为 优质数对&#…

网络模型-路由策略

一、路由策略 路由策略(Routing Policy)作用于路由,主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。目的:设备在发布、接收和引入路由信息时,根据实际组网需要实施一些策略&#xff0c…

什么是聚簇索引和非聚簇索引,如何理解回表、索引下推

聚簇索引(Clustered Index)和非聚簇索引(Non-clustered Index)是数据库中的两种索引类型,它们在组织和存储数据时有不同的方式。 聚簇索引 聚簇索引简单理解就是将数据与索引放在一起,找到索引即找到了数…

当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Qt 界面上字体自适应控件大小 - 随控件缩放

Qt 界面上字体自适应控件大小 - 随控件缩放 引言一、设计思路二、进阶版大致思路三、参考链接 引言 Qt控件自适应字体大小可以用adjustSize()函数,但字体自适应控件大小并没有现成的函数可调. - 本文实现了按钮上的字体随按钮大小变化而变化 (如上图所示) - 其他控件…

[CISCN2024]-PWN:gostack解析(go语言程序,syscall)

查看保护 ida比较复杂,建议动调配合静态分析程序运行 这里函数返回不用leave和ret,而是利用add rsp和ret,所以要动调查看到底要覆盖哪里。 完整exp: from pwn import* pprocess(./gostack) syscall0x4616c9 pop_rax0x40f984 po…

电子电器架构 - AUTOSAR ON THE AIR

电子电器架构 - AUTOSAR ON THE AIR 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

C# 控制台应用模板可生成顶级语句

C# 控制台应用模板可生成顶级语句 项目2024/01/0810 个参与者 反馈 本文内容 使用新的程序样式隐式 using 指令全局 using 指令使用旧程序样式 从 .NET 6 开始,新 C# 控制台应用的项目模板在 Program.cs 文件中生成以下代码: C#复制 // See https…