RAG技术综述

在这里插入图片描述
RAG的基本架构。,生成器和检索器。
参考paper:https://arxiv.org/html/2402.19473v4

文中将rag的内容从文本扩展至多模态,打开了思路。

生成器:transformer,LSTM,扩散模型,gan
检索器:稀疏检索(tf-idf,bm25),密集检索(余弦相似度,内积,l2距离),混合检索

一、RAG的类别

基于查询的 RAG、基于潜在表征的RAG、基于Logit的RAG,推测型RAG

1.基于查询的 RAG

基于查询的RAG无缝整合了用户的查询与检索到的信息见解,直接在语言模型输入的初始阶段使用。这种方法在RAG应用中很普遍。检索完成后,获取的内容与用户的原始查询合并形成一个复合输入序列,然后由生成器处理以创建响应。基于查询的RAG广泛应用于各种模式。

2.基于潜在表征的RAG

基于潜在表示的RAG框架的原理是通过将检索到的信息作为潜在表示(latent representations)直接纳入生成模型中,以增强模型的理解能力和生成内容的质量。其核心思想是将检索到的相关信息编码为潜在表示,然后在生成过程中将这些表示与原始输入信息相结合,提供更丰富的上下文和背景知识,从而生成更准确和相关的输出。

3.基于Logit的RAG

基于Logit的RAG(Retrieval-Augmented Generation)在生成模型的解码过程中通过Logit整合检索到的信息。具体来说,这种方法在生成每一步时,将语言模型生成的概率与检索到的相似前缀的概率进行组合,通常通过简单的求和或其他模型计算出每一步的生成概率。这样,模型能够在每一步生成过程中利用检索到的上下文信息,从而提高生成结果的质量和相关性。

4.推测型RAG

基于推测的RAG(Speculative
RAG)旨在寻找使用检索替代纯生成的机会,以节省资源并加快响应速度。这种方法通过在生成过程中更多地依赖检索信息,而不是完全依赖生成模型,从而提高效率。

基本原理
  1. 推测解码:传统推测解码中,使用较小的模型来生成草稿,然后由更大的模型进行精炼。REST [32] 提出了用检索替代小模型来生成草稿。
  2. 语义缓存:GPTCache [39] 通过建立一个语义缓存来存储LLM的响应,解决了使用LLM API时高延迟的问题。这意味着,当遇到类似的查询时,可以直接从缓存中检索结果,而不需要重新生成。
  3. 文本生成过程的分解:COG [122] 将文本生成过程分解为一系列的复制粘贴操作,从文档中检索单词或短语,而不是生成它们。这种方法通过减少生成步骤,提高了生成效率。
  4. 短语级内容检索:Cao等人[123] 提出了一个新范式,通过直接检索短语级内容来消除最终结果对第一阶段检索内容质量的依赖,从而替代生成。
优势
  • 资源节约:通过减少生成过程中的计算量,基于推测的RAG方法可以显著节省计算资源。
  • 加快响应速度:由于减少了依赖生成模型的次数,响应速度得以加快。
  • 利用预训练模型:这种方法可以直接利用预训练的生成模型和检索模型,使其更加灵活和高效。
挑战
  • 检索内容的质量:检索内容的质量直接影响最终生成结果的质量。因此,如何优化检索过程和结果是一个关键问题。
  • 融合策略:如何有效地将检索内容与生成内容融合也是一个需要解决的问题。

二、RAG的增强方向

在这里插入图片描述

1.输入增强

指的是用户的query。
方法:查询转换、数据增强。
查询转换:通过修改输入查询来增强检索结果。
数据增强:在检索前改善数据,包括去除无关信息、消除歧义、更新过时文档、合成新数据等技术。

2.检索器增强

检索内容的质量决定了生成器输入的信息质量。较低的内容质量会增加模型产生幻觉或其他性能下降的风险。
方法:
递归检索:进行多次搜索以获取更丰富和高质量内容的方法。如COT,蒙特卡洛树搜索。
块优化:是指调整块大小以改进检索结果。
检索器微调:检索器在RAG系统中起着核心作用,依赖于高效的嵌入模型来聚类相关内容并传递给生成器,从而提升系统性能。
混合检索:同时使用多种检索方法或从多个不同来源提取信息。
重排序技术:是指对检索内容进行重新排序,以实现更大的多样性和更好的结果。
检索转换:检索转换涉及重新措辞检索内容,以更好地激发生成器的潜力,从而改进输出。(内容过滤、向量压缩、模板重构)

3.生成器增强

在RAG系统中,生成器的质量通常决定了最终输出结果的质量。因此,生成器的能力决定了整个RAG系统的效果上限。

提示工程技术:旨在提高LLM输出的质量,这些技术包括提示压缩、Stepback Prompt、Active Prompt、链式思维提示等。
解码调整:通过调整超参数来增强生成器控制,以增加多样性和限制输出词汇表等方式进行。
微调生成器:可以增强模型对更精确领域知识的掌握或更好地与检索器配合。

4.结果增强

在许多情况下,RAG的结果可能未达到预期效果,一些结果增强技术可以帮助缓解这个问题。

输出重写:指在某些情况下重写生成器生成的内容,以满足下游任务的需求。
SARGAM、Ring、CBR-KBQA

5.RAG管道增强

RAG管道增强是指在系统层面优化RAG的处理流程,以实现更好的性能结果。

1.自适应检索
检索并不总是能增强最终结果。过度检索可能会导致资源浪费,并在模型固有的参数化知识足以回答相关问题时引起潜在的混乱。
确定检索必要性的方法:基于规则的方法和基于模型的方法。
基于规则的方法:(对于高频问题直接回答,低频问题应用RAG​ ;通过生成过程中的概率主动决定是否以及何时进行搜索)
基于模型的方法:使用“判断提示”确定LLM是否能回答相关问题以及其答案是否正确,从而辅助确定检索的必要性。

2.迭代RAG
通过多次循环检索和生成阶段逐步优化结果,而不是单轮操作。
如:使用零次链式思维提示由LLM初步生成内容,然后通过从外部知识库检索知识来修正每个思维步骤​ 。

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

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

相关文章

Sourcetree安装教程及使用

1 Sourcetree介绍 Sourcetree是一款免费的Git图形化客户端,它由Atlassian开发,提供了跨平台的支持,可运行在Windows和Mac操作系统上。Sourcetree可以让开发者更方便地使用Git来管理代码,不需要在命令行中输入复杂的Git命令&#x…

【强训笔记】day25

NO.1 思路&#xff1a;哈希质数判断。 代码实现&#xff1a; #include <iostream> #include<string> #include<cmath> using namespace std;bool isprime(int n) {if(n<2) return false;for(int i2;i<sqrt(n);i){if(n%i0) return false;}return true…

Python筑基之旅-运算符

目录 一、运算符 1、了解定义 2、理解意义 2-1、基本数据处理 2-2、条件判断 2-3、逻辑操作 2-4、赋值和更新 2-5、位操作 2-6、提高代码可读性 2-7、解决实际问题 2-8、学习其他编程语言的基础 3、探索方法 3-1、理解概念 3-2、练习基本运算 3-3、掌握优先级 …

ICML 2024 Mamba 论文总结

2024ICML&#xff08;International Conference on Machine Learning&#xff0c;国际机器学习会议&#xff09;在2024年7月21日-27日在奥地利维也纳举行 &#x1f31f;【紧跟前沿】“时空探索之旅”与你一起探索时空奥秘&#xff01;&#x1f680; 欢迎大家关注时空探索之旅 …

ciscn2024(上传一下,有侵权什么的问题的话联系删除)

Web Simple_php 这个Simple_php一点儿也不Simple (⋟﹏⋞) 源码放这儿了&#xff1a; <?phpini_set(open_basedir, /var/www/html/); error_reporting(0);if(isset($_POST[cmd])){$cmd escapeshellcmd($_POST[cmd]); if (!preg_match(/ls|dir|nl|nc|cat|tail|more|flag…

原生标签WebComponent

文章目录 介绍一、web Component二、怎么使用三、在Vue中使用使用场景 前端必备工具推荐网站(免费图床、API和ChatAI等实用工具): http://luckycola.com.cn/ 介绍 平常浏览各个网站过程中&#xff0c;经常遇到的一种现象&#xff1a;页面广告。 这种广告按照来源可分为两种&…

C++面向对象程序设计 - 输入和输出

程序的输入指的是文件将数据传送给程序&#xff0c;程序的输出指的是从程序将数据传送输出文件。 C的输入和和输出包括以下三个方面&#xff1a; 对系统指定的标准设备的输入和输出&#xff0c;即从键盘输入数据&#xff0c;输出到显示器屏幕。以外存磁盘&#xff08;或光盘、…

车道线识别与预警系统LDWS(代码+教程)

车道线识别与预警系统&#xff08;Lane Departure Warning System, LDWS&#xff09;作为智能交通系统中的重要组成部分&#xff0c;旨在通过先进的图像处理和计算机视觉技术&#xff0c;实时监测车辆行驶过程中的车道位置&#xff0c;预防因驾驶员疏忽或疲劳导致的车道偏离事故…

Flink 窗口

窗口&#xff08;Window&#xff09; 窗口是处理无限流的核心。 窗口将流分割成有限大小的“桶”&#xff0c;我们可以计算窗口中的数据。 窗口程序一般有键控流&#xff08;keyed streams&#xff09;的窗口程序 和 非键控流&#xff08;non-keyed streams&#xff09;的窗口…

Selenium 自动化测试工具(1) (Selenium 工作原理,常用API的使用)

文章目录 什么是自动化测试什么是测试工具&#xff1a;Selenium 工作原理(重要)Selenium API定位元素CSS 选择器xpath 定位元素 通过Java代码实现自动化1. 定位元素2. 关闭浏览器3. 获取元素文本4. 鼠标点击与键盘输入5. 清空内容6.打印信息 什么是自动化测试 关于自动化&…

一个人应该怎么操作抖音小店呢?店铺操作流程给你讲解清楚!

大家好&#xff0c;我是电商小V 现在入驻抖音小店的有很多新手&#xff0c;新手最关心的就是一个人应该如何操作抖音小店&#xff0c;操作抖音小店需要做好哪几步呢&#xff1f;关于这个问题咱们就来详细的讲解一下&#xff0c; 第一点&#xff1a;开店 开店是做店的第一步&…

【Codesys】-执行第三方程序,或Windows脚本

该记录旨在解决RTE作为第一个Windows的一个exe程序不能调用其他程序的问题。 可以实现:在PLC界面打开第三方程序、在PLC界面关闭本机Windows操作系统 首先添加依赖库-SysProcess,3.5.17.0 然后在程序里执行相应的指令&#xff0c;该指令可以被Windows识别为类似于执行Bat文件…

搭建企业级AI应用的流程

搭建企业级AI应用的流程是一个复杂且系统化的工程&#xff0c;它需要从多个维度出发&#xff0c;确保最终的应用既符合企业的业务需求&#xff0c;也具备高效、稳定和可扩展的特性。以下是详细的步骤&#xff1a; 初步接触与需求分析是整个项目的基础。在这一阶段&#xff0c;我…

群晖安装青龙脚本

青龙定时任务管理面板&#xff0c;支持 Python3、JavaScript、Shell、Typescript 这几种环境&#xff0c;通过它可以方便的管理和运行定时任务&#xff08;在某个时间执行一段代码&#xff09;&#xff0c;并且只需简单的配置&#xff0c;就可以在各个平台收到任务执行的结果通…

通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称、用icon区分文件和文件夹等需求

目录 一、通过el-tree自定义渲染网页版工作目录 1.1、需求介绍 1.2、使用el-tree生成文档目录 1.2.1、官方基础用法 ①效果 ②代码&#xff1a; 1.2.2、自定义文档目录&#xff08;实现鼠标悬浮显示完整名称、用icon区分文件和文件夹&#xff09; ①效果&#xff08;直接效…

Elasticsearch 分析器的高级用法一(同义词,高亮搜索)

Elasticsearch 分析器的高级用法一&#xff08;同义词&#xff0c;高亮搜索&#xff09; 同义词简介分析使用同义词案例 高亮搜索高亮搜索策略unifiedplainvh 同义词 简介 在搜索场景中&#xff0c;同义词用来处理不同的查询词&#xff0c;有可能是想表达相同的搜索目标。 例…

WIFI国家码设置的影响

记录下工作中关于国家码设置对WIFI的影响&#xff0c;以SKYLAB的SKW99和SDZ202模组为例进行说明。对应到日常&#xff0c;就是我们经常提及手机是“美版”“港版”等&#xff0c;它们的wifi国家码是不同的&#xff0c;各版本在wifi使用中遇到的各种情况与下面所述是吻合的。 现…

桶排序和基数排序

前言&#xff1a; 这篇文章&#xff0c;我们就来了解一些鲜为人知的排序&#xff0c;桶排序和基数排序。 桶排序&#xff1a; 桶排序的思想&#xff1a; 桶排序的思想就是把待排序的数尽量均匀地放到各个桶中&#xff0c;再对各个桶进行局部的排序&#xff0c;最后再按序将各…

数据结构~~链式二叉树

目录 一、基本概念 链式存储概念 二、链式二叉树的结构 链式二叉树结构 构建链式二叉树 二叉树的遍历 二叉树节点和高度等 二叉树销毁 三、链式二叉树的练习 相同的树 对称二叉树 另外一颗子树 二叉树前序遍历 二叉树遍历 四、完整代码 Tree.h Tree.c 五、总结 一…

如何恢复未保存/误删除的Excel文档?

想象一下&#xff0c;您已经在一个非常重要的 Excel 上工作了几个小时&#xff0c;而您的计算机卡住了&#xff0c;您必须重新启动计算机。Excel 文件未保存/误删除&#xff0c;您只是因为忘记点击保存按钮而损失了数小时的工作时间。但是&#xff0c;当您意识到一小时前在 Exc…