RAG前沿技术/解决方案梳理

news2024/9/26 1:24:21

RAG前沿技术/解决方案梳理

  • Benchmark
  • Retrieval
    • Adaptive-RAG
    • DR-RAG
    • RichRAG
    • GenRT
  • Critique/Reasoning
    • Self-RAG
    • Corrective RAG
    • Speculative RAG
    • PlanRAG
    • Self-Reasoning
    • ReSP
  • Memory
    • Selfmem
    • HippoRAG
  • Query Rewrite
    • RaFe
  • Summary
    • Refiner
  • 个人理解

对当前RAG的学术研究(或者好的业界的总结)进行梳理汇总,欢迎讨论交流,持续更新中……

Benchmark

论文: Benchmarking Large Language Models in Retrieval-Augmented Generation
来源: AAAI 2024
作者单位: 中科院软件所
核心结论:噪音鲁棒性、否定拒答、信息整合能力、反事实鲁棒性四个层面对目前sota大模型+RAG进行评估,认为目前大模型表现出一定程度的噪音鲁棒性,但在否定拒答、信息整合和处理虚假信息方面存在很大困难
在这里插入图片描述


Retrieval

Adaptive-RAG

论文: Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity
来源: NAACL 2024
作者单位: 韩国科学技术院
核心结论: 对于query的难度进行分级:训练一个复杂度判别模型(T5-Large),将query区分为不需要检索、一次检索和多次检索(动态路由检索)三类情况

在这里插入图片描述

DR-RAG

论文: DR-RAG: Applying Dynamic Document Relevance to RetrievalAugmented Generation for Question-Answering
来源: arxiv
作者单位: 东北大学、四川大学
核心结论: 将query与第一次检索得到的文档相结合来检索其余文档(应对多跳场景有一定意义)
在这里插入图片描述

RichRAG

论文: RichRAG: Crafting Rich Responses for Multi-faceted Queries in Retrieval-Augmented Generation
来源: arxiv
作者单位: 人大、百川
核心结论: 多方面检索器,对于一个query涉及到的多个方面进行拆解,进行多路召回已获取全面、丰富的召回文档
在这里插入图片描述

GenRT

论文: List-aware Reranking-Truncation Joint Model for Search and Retrieval-augmented Generation
来源: WWW 2024
作者单位: 中科院计算所、人大
核心结论: 采用多任务学习的方法,将rerank和truncation(取排名列表的截止点,Top N)任务联合学习
在这里插入图片描述


Critique/Reasoning

Self-RAG

论文: Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection
来源: arxiv
作者单位: University of Washington,Allen Institute for AI,IBM Research AI
核心结论: 自我反思RAG,通过LM生成检索段落的label,Self-RAG 在包含 reflection tokens 的离线任务示例上训练 LM(Llama2-7B)
在这里插入图片描述
在这里插入图片描述

主要流程:

  • 首先生成一个critique token判断是否需要retrieval(Retrieval)
    • 不需要:直接用LLMs生成输出
    • 需要:生成一个critique token评估检索得到的内容的相关性(IsREL)、输出内容、一个critique token用来判断输出是否得到检索内容的支撑(IsSup)
  • 针对输出内容生成一个critique token判断输出质量(IsUSE)

Corrective RAG

论文: Corrective Retrieval Augmented Generation
来源: arxiv
作者单位: 中科大,University of California
核心结论: 基于对召回的文档分成三类:correct,ambiguous,incorrect(基于T5-Large)。对于第一类直接采用,第二类结合Google搜索引擎的结果,第三类直接采用搜索引擎的结果
在这里插入图片描述

Speculative RAG

论文: Speculative RAG: Enhancing Retrieval Augmented Generation through Drafting
来源: arxiv
作者单位: University of California、谷歌
核心结论: 多打草稿少出错(将不同的检索结果进行组合喂给LLMs生成答案,提供多视角的参考信息,选择最好的答案)
在这里插入图片描述

PlanRAG

论文: PlanRAG: A Plan-then-Retrieval Augmented Generation for Generative Large Language Models as Decision Makers
来源: NAACL 2024
作者单位: 韩国科学技术院
核心结论: 制定计划、检索与回答、重新规划
在这里插入图片描述

Self-Reasoning

论文: Improving Retrieval Augmented Language Model with Self-Reasoning
来源: arxiv
作者单位: 百度
核心结论: 相关性感知过程、证据感知选择过程和轨迹分析过程
在这里插入图片描述

ReSP

论文: Retrieve, Summarize, Plan: Advancing Multi-hop Question Answering with an Iterative Approach
来源: arxiv
作者单位: 蚂蚁
核心结论: 一套完整的适用于业界场景的RAG流程。基于reasoner对query进行拆分(plan),通过retriever和summarizer将query和sub-query的参考信息分别存储在global memory和local memory,当global memory中的信息可以回复query时将两个memory进行拼接输入至generator,不能回复则重新plan
在这里插入图片描述


Memory

Selfmem

论文: Lift Yourself Up: Retrieval-augmented Text Generation with Self-Memory
来源: NIPS 2024
作者单位: 北大、人大、沙特阿拉伯大学、腾讯
核心思想: better generation also prompts better memory。LLM生成的好的回复也可以作为memory(检索到的文档),从而将有界的memory推广到了无界中
在这里插入图片描述

模型架构:

  • Retrieval-augmented Generator: 对于输入X以及对应的输出Y,通过检索组件获取memory,然后将X和memory一起输入到LLM中获取候选的生成内容candidates
  • Memory Selector: 计算candidates和X之间的metric(例如BLEU等),从candidates中选取最好的candidate,将其与X一起输入到LLM获得最终的输出

HippoRAG

论文: HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models
来源: arxiv
作者单位: The Ohio State University、Stanford University
核心思想: 让RAG模仿人类长期记忆的三个组件(大脑皮层、海马体、海马旁回)
在这里插入图片描述
模型架构:

  • 知识图谱(KG)-大脑皮层(Neocortex): 在人类大脑中,大脑皮层负责处理和存储具体的记忆表示,比如我们学到的知识、经历的事件等。在HippoRAG中,让大模型从文本语料库中提取信息,并将其转换成一个知识图谱(KG),这个图谱就像是一个巨大的、没有固定结构的网络,存储着各种实体(比如人名、地点、概念)和它们之间的关系(GraphRAG)
  • 个性化PageRank(PPR)算法-海马体(Hippocampus): 海马体在人类记忆中扮演着索引的角色,帮助我们通过关联来检索记忆。在HippoRAG中,海马体的功能通过KG和个性化PageRank(PPR)算法来实现。这个算法可以帮助HippoRAG在知识图谱中找到与查询最相关的部分,就像海马体通过关联线索来检索记忆一样
  • 检索编码器(retrieval encoders)-海马旁回(Parahippocampal regions): 在人类大脑中,这些区域帮助我们识别记忆的不同部分,并在检索过程中提供上下文信息。在HippoRAG中,检索编码器(retrieval encoders)将查询中的关键概念与知识图谱中的节点联系起来,确保检索过程能够准确进行

Query Rewrite

RaFe

论文: RaFe: Ranking Feedback Improves Query Rewriting for RAG
来源: arxiv
作者单位: 浙大,阿里巴巴,南大
核心结论: 基于强化学习,将reranker的评分作为reward,对query改写进行学习
在这里插入图片描述


Summary

Refiner

论文: Refiner: Restructure Retrieval Content Efficiently to Advance Question-Answering Capabilities
来源: arxiv
作者单位: 香港科技、清华、香港理工
核心结论: 对检索的内容进行重写,提取查询相关内容以及必要的上下文,并进行分段处理
在这里插入图片描述

核心步骤:

  • 知识蒸馏: 多个大模型提取输入内容中与query相关内容的完整上下文,构建训练集
    在这里插入图片描述

  • 微调: 对Llama-2-7B进行SFT得到refiner(随着prompt长度的增加,参数量更大的模型微调的计算成本更高,所以选择参数量小的模型)


个人理解

后续RAG逐渐向Modular RAG的方向发展,核心的module为:

  • query理解/解析模块(Intention):
    • Rewrite:query的纠错、改写
    • Intention:意图识别
    • Plan:query的细拆,制定规划(参考PlanRAG/ReSP)
  • 检索模块(Retrieval):
    • 多路召回:不同的召回来源
    • 扩写召回:不同场景下进行不同扩写(参考RichRAG)
    • 动态路由检索(参考Adaptive-RAG)
  • 重排模块(Rerank):
    • Rerank模型(因子建模/端到端)
  • 推理/反思模块(Reasoning/Critique):
    • Benchmark:评价rag给出的参考信息/生成回复的好坏的基准(参考RAG Benchmark)
    • Critique机制:结合benchmark和plan反思召回结果是否合理(参考Self-RAG/ReSP)
  • 参考信息生成模块(Summary Generator):
    • Summary改写:完整性检查、流畅度检查、要点提取(信息整合)
    • Memory机制:结合plan,设置高优/低优,对结果进行独立存储(参考ReSP)

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

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

相关文章

加密的PDF文件怎么能够转换为word文档

Word是一种常见的文档格式,被广泛应用于办公室、教育等领域,目前它拥有较为丰富的文档编辑和格式化功能。然而,因为当前很多场景下,大多数资料文件都是以PDF格式存在,因为其具备比较强的稳定性,所以想要去修…

LearnOpenGL-光照章节学习笔记

LearnOpenGL-光照章节学习笔记 颜色创建一个光照场景 基础光照一、环境光照二、漫反射光照三、镜面反射 材质光照贴图一、漫反射贴图二、镜面光贴图三、放射光贴图 投光物一、平行光二、点光源衰减实现 三、聚光灯平滑边缘 多光源一、平行光(定向光)二、…

知识分享 | 详解整车区域控制器(ZCU)

随着智能网联汽车技术的迅猛发展,整车区域控制器ZCU(Zone Control Unit)作为汽车电子电气架构中的核心组件,其重要性日益凸显。ZCU不仅作为区域数据中心、IO中心及配电中心,在车辆动力、传感器管理、信息娱乐等方面发挥…

线性DP+摆渡车

线性DP: 具有线性“阶段”划分的动态规划算法称为线性DP。 线性DP无论状态表示是一维还是多维,DP算法在线性DP问题上都体现出了“作用在线性空间上的阶段划分和状态转移” ,DP的阶段沿着各个维度线性增长。从一个或多个“初始状态”开始有方…

uni-app下Worker的使用

1、在static目录下创建一个目录用于存放worker文件 为啥要在static目录下创建worker目录呢?那是因为worker.js没办法在别的js中被引用,uni-app项目编译成微信小程序代码时会进行Tree-shaking(摇树优化),把那些没被引用…

全方位教程:接入视频美颜SDK与直播美颜插件的完整步骤

今天,小编将为您详细介绍如何接入视频美颜SDK与直播美颜插件的完整步骤。 一、准备工作 开发环境的搭建 在开始集成之前,确保您的开发环境已配置完毕。无论是使用iOS、Android,还是Web开发,您都需要准备好对应的开发工具链&…

人工智能深度学习系列—深入探索KL散度:度量概率分布差异的关键工具

人工智能深度学习系列—深度解析:交叉熵损失(Cross-Entropy Loss)在分类问题中的应用 人工智能深度学习系列—深入解析:均方误差损失(MSE Loss)在深度学习中的应用与实践 人工智能深度学习系列—深入探索KL…

你的报表工具选对了吗?中国式报表的正确制作方法

1. 中国式报表的困境 在许多企业中,“中国式报表”是一个让人头疼的存在。中国式报表通常格式复杂,包含大量数据和多层次的数据结构。它不仅需要展示大量的统计数据,还要通过交叉计算等方式呈现数据之间的关系。这种报表对数据处理能力、展示…

关于hive与hadoop初了解

hdfs分布式存数据,MapReduce处理数据。yarn资源管理和任务调度。 hive就是方便处理hadoop数据的 。 hive本事不处理数据,在hive on yarn上是 将sql转换为mapreduce程序(不太理解,后续了解吧)

数据编制全攻略:从杂乱原始数据到AI就绪数据集的转化之旅

目录 什么是数据编制?数据编制的重要性数据编制的基本流程1. 数据收集2. 数据清洗3. 数据转换4. 数据结构化5. 数据集成6. 数据验证 数据编制的最佳实践1. 制定数据标准2. 自动化流程3. 版本控制4. 数据质量监控5. 文档化6. 安全性和隐私保护 数据编制中的常见挑战及解决策略1…

日志系统——异步缓冲区

生产者——消费者模型: 多线程场景中最常见的模型之一,异步写日志时负责产生日志消息的业务线程充当生产者,负责写日志的线程充当消费者,两种角色进行数据交互需要依靠一块缓冲区。 单缓冲区的缺点 传统的单缓冲区PC模型一般是基…

【工具推荐】强大的图形化“社工密码生成器”

下载地址: 关注WX“光剑安全”公众号,发送“20240807社工”即可获得工具包! 工具一:安全牛,java运行的一款社工密码生成器。 1、工具页面如下,可以根据对方信息、对方配偶信息、特殊符号进行排列组合生成…

c++的STL库stack、queue的使用

1.stack 在STL库中stack是一个模版类,第一个模版参数为存储的数据类型,第二个模版参数为实现stack的容器(可缺省)。 常用的成员函数如下 2.queue 如stack一样queue是一个模版类,第一个模版参数为存储的数据类型&#…

终于解决了ubuntu在高清屏上 chromium界面dpi低,界面模糊的问题

终于解决了ubuntu在高清屏上 chromium界面dpi低,界面模糊的问题 说明: 系统是ubuntu24.04,用firefox dpi正常,界面和文字都很细腻,用chrome,chromium,edge就很模糊,网上一大片的都是说字体问题&#xff0…

(21)Spring基础

Spring 需要导入的包 <!-- https://mvnrepository.com/artifact/org.springframework/spring-core --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.26</ve…

Go 1.19.4 结构体-Day 09

1. 结构体介绍 1.1 什么是结构体 结构体&#xff08;struct&#xff09;是一种用户定义的类型&#xff0c;它由一系列的字段组成&#xff0c;每个字段都有自己的名称和类型。 结构体也是值类型的&#xff0c;就算加了指针也是&#xff0c;只不过是复制的内存地址。 1.2 为什么…

【数据结构】二叉搜索树(Java + 链表实现)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构、LeetCode专栏 &#x1f4da;本系…

活动回顾|首次 Cloudberry Database Meetup · 北京站成功举办

8 月 3 日&#xff0c;由酷克数据 HashData 主办的 Cloudberry Database Meetup 北京站活动圆满结束。本次 Meetup 以“以开源应对 Greenplum 闭源&#xff0c;原厂开发者再聚首”为主题&#xff0c;深入探讨了 Greenplum 闭源所带来的影响&#xff0c;并聚焦于 Cloudberry Dat…

std::list里面的push_back和resize效率问题

2024年8月6日&#xff1a; 向list里面循环添加数据&#xff0c;两种写法 for(;;){myList.resize(myList.size()1);MyObject &obj *myList.rbegin();obj.a itervalue; } 第二种写法是push_back: for(;;){MyObject obj&#xff1b;obj.a itervalue;myList.push_back(obj)…

并发编程CompletableFuture

1. CompletableFuture简介 1.1 异步编程的概念 异步编程是一种编程范式&#xff0c;允许程序在等待某些操作完成时&#xff0c;继续执行其他任务。这在处理I/O密集型任务&#xff0c;如网络请求或文件读写时尤其有用。异步编程可以提高程序的响应性和效率&#xff0c;避免在等…