大语言模型落地的关键技术:RAG

1、什么是RAG?

RAG 是检索增强生成(Retrieval-Augmented Generation)的简称,是当前最火热的大语言模型应用落地的关键技术,主要用于提高语言模型的效果和准确性。它结合了两种主要的NLP方法:检索(Retrieval)和生成(Generation)

  • 检索(Retrieval):这一部分的工作是从大量的文本数据中检索出与输入问题最相关的信息。它通常使用一个检索系统,用于大规模的文档集合(例如维基百科)中寻找与输入相关的文段。
  • 生成(Generation):生成部分则使用类似GPT的语言模型,它会根据检索到的信息来生成响应或回答。这个过程涉及理解检索到的内容,并在此基础上生成连贯、相关且信息丰富的文本。

RAG模型的关键在于它结合了这两种方法的优点:检索系统能提供具体、相关的事实和数据,而生成模型则能够灵活地构建回答,并融入更广泛的语境和信息。这种结合使得RAG模型在处理复杂的查询和生成信息丰富的回答方面非常有效。这种技术在问答系统、对话系统和其他需要理解和生成自然语言的应用中非常有用。

2、RAG发展历程

RAG于2020年中期由Lewis等人提出,是LLMs领域中的一种范式,可增强生成任务。具体而言,RAG包括一个初始的检索步骤,LLMs在此步骤中查询外部数据源以获取相关信息,然后才回答问题或生成文本。这个过程不仅为后续的生成阶段提供信息,还确保回答基于检索到的证据,从而显著提高了输出的准确性和相关性。

在推断阶段动态检索来自知识库的信息使RAG能够解决生成事实错误内容的问题,通常被称为“幻觉”。将RAG整合到LLMs中已经迅速被采用,并成为完善聊天机器人能力和使LLMs更适用于实际应用的关键技术。

RAG的演进轨迹在四个不同阶段展开,如下图所示。

在2017年的创始阶段,与Transformer架构的出现相一致,主要重点是通过预训练模型(PTM)来吸收额外的知识以增强语言模型。这个时代见证了RAG的基础工作主要集中在优化预训练方法上。在这个初始阶段之后,出现了相对沉寂的时期,与RAG相关的研究进展较少。随后ChatGPT的出现标志着LLMs领域的重要时刻,社区的重点转向利用LLMs的能力来实现更高的可控性和解决不断变化的需求。

因此,大部分RAG工作集中在推断上,只有少数工作致力于微调过程。随着LLMs能力的不断提高,特别是GPT-4的推出,RAG技术的格局发生了重大变化。重点转向了RAG和微调的优势相结合的混合方法,同时也有少数人继续关注优化预训练方法。

3、RAG的工作流

下图中展示了一个典型的 RAG 应用工作流程:

用户向 ChatGPT 查询最近引起广泛关注的事件,这些事件引发了大量的公众讨论。作为最著名和广泛使用的LLMs,受限于其预训练数据,ChatGPT缺乏对最新事件的了解。RAG通过从外部知识库中检索最新的文档摘录来解决这一问题。在这种情况下,它获取了与查询相关的一些新闻文章。这些文章连同最初的问题被合并成一个丰富的提示,使ChatGPT能够合成一个知情的回答。


这个示例说明了RAG的过程,展示了它通过实时信息检索来增强模型的响应能力。从技术上讲,RAG已经通过各种创新方法得到丰富,这些方法解决了关键问题,例如“要检索什么”、“何时检索”和“如何使用检索到的信息”。


关于“要检索什么”的研究已经从简单的标记检索和实体检索发展到更复杂的结构,如块和知识图研究重点放在检索的粒度和数据结构的级别上。粗粒度带来更多的信息,但精度较低。检索结构化文本提供了更多信息,但效率较低。关于“何时检索”的问题已经产生了各种策略,从单一检索到自适应检索和多次检索,再到高频率检索的方法。

4、RAG增强检索的框架

RAG研究范式不断发展,我们将其分为三种类型:基础RAG(Naive RAG)、高级RAG(Advanced RAG)模块化RAG(Modular RAG)。下图简单的说明了这三种RAG的工作流程:

4.1 基础RAG

基础RAG是检索增强生成(RAG)范式的最早形式之一,其基本概念是将外部检索与大型语言模型(LLMs)的生成能力结合在一起。在基础RAG中,检索通常是基于查询的,并且用于检索外部知识库或数据源中的相关信息。一旦获得了检索到的信息,它们可以与LLMs的内部知识结合在一起,以生成更准确和相关的文本或回答。


然而,基础RAG虽然在改善LLMs的性能方面取得了一定的成功,但也存在一些限制和不足之处。其中一些主要限制包括:

  • 不适应多模态数据:基础RAG主要关注文本数据的检索和生成,对于多模态数据(例如图像、音频)的处理能力有限。
  • 缺乏对话性:基础RAG通常是单向生成,难以实现复杂的对话或多轮问答。
  • 效率低下:在某些情况下,基础RAG可能需要大量的检索操作,导致效率下降。

由于这些限制,研究人员开始探索更高级的RAG范式,以克服这些问题并提高RAG的性能和适用性。这导致了高级RAG和模块化RAG的发展,这些范式在各种应用中得到了广泛的应用。
 

4.2 高阶RAG

高级RAG是检索增强生成(RAG)范式的进化形式,其目的是克服基础RAG的一些限制,并进一步提高性能和适用性。在高级RAG中,研究人员采用了一系列创新性方法和技术,以应对复杂的自然语言处理任务和挑战。


以下是高级RAG的一些关键特点和创新:

  • 多模态支持:高级RAG不仅限于文本数据,还可以处理多模态数据,例如图像、音频和视频。这使得高级RAG在各种多媒体应用中具有广泛的用途。
  • 对话性增强:高级RAG具备更强大的对话处理能力,可以实现更复杂的对话和多轮问答。这使其在聊天机器人和虚拟助手等应用中表现出色。
  • 自适应检索策略:高级RAG引入了更智能的检索策略,可以根据上下文和任务自动调整何时进行检索以及何时使用检索到的信息。这提高了效率和性能。
  • 知识融合:高级RAG能够更好地将外部知识与内部知识融合,以生成更具洞察力和相关性的文本。这对于知识密集型任务特别有用。

高级RAG代表了RAG范式的进一步发展,具有更广泛的应用领域和更强大的性能。它在自然语言处理和人工智能领域中取得了重要的突破,并在各种实际应用中得到了广泛的采用。

4.3 模块化RAG

模块化RAG是检索增强生成(RAG)的另一种演进形式,目的是提供更大的定制性和灵活性,以满足不同应用场景的需求。与基础RAG和高级RAG相比,模块化RAG更注重将RAG系统分解为各种独立的组件,每个组件负责特定的任务或功能。


以下是模块化RAG的一些关键特点和概念:

  • 组件化架构:模块化RAG将RAG系统分解为多个独立的组件,例如检索组件、生成组件和评估组件。这些组件可以根据需要进行组合和替换,以实现定制化的RAG系统。
  • 可插拔性:模块化RAG允许研究人员或开发者轻松地添加新的组件或替换现有的组件,以适应不同的任务和数据源。这提高了系统的可扩展性和适应性。
  • 自定义管道:模块化RAG允许用户构建自定义的处理管道,根据特定的任务需求配置不同的组件。这使得RAG系统可以灵活地应对各种应用场景。
  • 集成外部工具:模块化RAG还支持集成外部工具和资源,例如不同的知识库、检索引擎或生成模型。这扩展了系统的数据和功能来源。

模块化RAG强调了灵活性和可定制性,使研究人员和开发者能够更好地适应不同的应用需求。这种方法在构建复杂的自然语言处理系统时非常有用,可以根据具体任务的要求构建定制的RAG系统。

5、RAG中的核心组件

RAG的核心组件分为三个部分检索(Retrieval)、增强(Augmentation)、生成(Generation),其分类结构如下图:

5.1 RAG中的检索(Retrieval)

检索是检索增强生成(RAG)框架的核心组件之一,它负责从外部数据源或知识库中获取与用户查询相关的信息。检索的质量和效率对于RAG系统的性能至关重要,因为它直接影响生成的文本或回答的准确性和相关性。

以下是与检索相关的一些关键概念和技术:

  • 检索策略:RAG系统需要确定何时进行检索以及如何选择要检索的信息。检索策略可以根据任务和上下文进行调整,以提高系统的效率和性能。
  • 检索粒度:检索可以以不同的粒度进行,从单个标记或实体到更大的文本块或知识图。选择适当的检索粒度取决于任务的要求和数据的结构。
  • 检索方法:有多种检索方法可供选择,包括基于关键字的检索、实体检索、自然语言查询和知识图检索等。每种方法都有其适用的情境和优势。
  • 检索效率:高效的检索是关键因素之一,尤其是在实时应用中。优化检索过程以降低延迟和资源消耗是重要任务之一。
  • 外部数据源:RAG系统可以从各种外部数据源中进行检索,包括互联网上的文档、知识库、数据库和API。选择合适的数据源对于获取准确和丰富的信息至关重要。

在RAG框架中,检索与生成和增强技术密切合作,以生成最终的文本或回答。因此,检索的质量和效率对于整个RAG系统的性能和效果至关重要。

5.2 RAG中的增强(Augmentation)

RAG中的增强技术是RAG框架的第二个核心组件,它的作用是进一步提升生成的质量和效果,以确保生成的文本或回答准确、相关且合乎要求。增强技术通过不同方式与检索和生成协同工作,以优化RAG系统的性能。

以下是与RAG中的增强技术相关的一些关键概念和方法:

  • 文本修正:增强技术可以用于修正生成的文本,以确保其准确性和合理性。这可以通过自动文本校对、语法纠正和事实验证等方式实现。
  • 知识融合:一些RAG系统具备将外部知识融合到生成文本中的能力。这可以通过将检索到的知识与生成的文本进行有机结合来实现。
  • 上下文增强:增强技术可以利用上下文信息来优化生成文本的相关性。这包括利用对话历史、用户偏好和任务上下文等信息。
  • 控制生成风格:一些RAG系统允许用户控制生成文本的风格、语气和表达方式。这提供了更高度定制化的生成能力。
  • 多模态增强:在生成多模态内容时,增强技术可以确保不同模态之间的一致性和相关性,以提供更丰富的用户体验。
  • 实时更新:一些RAG系统具备实时更新的能力,可以从外部数据源获取最新信息,并及时反映在生成的文本中。这对于需要及时更新的任务非常重要。

增强技术的选择和应用取决于特定任务和应用场景的要求。通过合理利用增强技术,RAG系统可以提供更具洞察力和相关性的生成文本,从而提高用户满意度和系统的实用性。

5.3 RAG中的生成(Generation)

生成是检索增强生成(RAG)框架的另一个核心组件,它负责根据检索到的信息和用户查询生成最终的文本或回答。生成的质量和效果直接影响着RAG系统的性能和可用性。
 

以下是与生成相关的一些关键概念和技术:

  • 生成模型:RAG系统通常使用生成模型来生成文本或回答。这些模型可以是预训练的语言模型(如GPT系列),也可以是其他生成模型。生成模型的选择取决于任务的要求和性能需求。
  • 文本生成:生成模型将检索到的信息和用户查询转化为自然语言文本。生成文本的质量取决于模型的能力以及输入信息的准确性和相关性。
  • 控制生成:一些RAG系统具备生成文本的控制能力,允许用户指定特定的风格、语气或其他要求。这提供了更高度定制化的生成能力。
  • 多模态生成:一些高级RAG系统具备生成多模态内容的能力,包括图像、音频和视频。这拓展了RAG的应用领域。
  • 对话生成:一些RAG系统用于对话生成,能够实现复杂的对话和多轮问答。这在聊天机器人和虚拟助手等应用中特别有用。
  • 评估生成:生成的质量通常需要经过评估来衡量,以确保生成的文本准确、相关且合乎要求。评估方法和指标对于RAG系统的性能评估至关重要。

在RAG框架中,生成与检索和增强技术协同工作,以生成最终的输出。生成的能力和质量对于RAG系统的整体性能和用户体验至关重要。

6、RAG vs. Fine-Tuning

RAG(检索增强生成)与微调(Fine-Tuning)是两种不同的大型语言模(LLM)优化方法,它们在应用和效果上有所不同:


RAG与其他模型优化方法的比较:


 

RAG的优势:

  • 更灵活的知识获取:RAG允许从外部数据源实时检索信息,因此可以获取最新的、领域特定的知识,而微调通常依赖于静态的预训练数据。
  • 避免“幻觉”问题:RAG通过检索外部信息来验证生成的文本,可以减少生成不准确信息的问题,这在微调中可能更容易出现。
  • 多模态支持:RAG可以轻松支持多模态内容的生成,包括文本、图像、音频等,而微调通常专注于文本生成。

微调的优势:

  • 更高的一致性:微调通常可以生成更一致的文本,因为它基于预训练模型,而RAG的一致性取决于检索的准确性。
  • 更广泛的应用:微调适用于各种自然语言处理任务,包括文本分类、命名实体识别、情感分析等,而RAG更侧重于生成任务。
  • 训练效率:微调可以比RAG更高效,因为不需要在每个查询上进行检索操作。

总的来说,RAG和微调各有其优势和适用场景,RAG 的优势在于通用性、知识引用、即时性和可解释性,而微调在特定任务上可能更适用,但同时需要更多的任务特定数据和训练选择使用哪种方法,应根据具体的应用需求和任务来决定。未来的发展可能会探索两种方法的结合,以充分利用它们的优势,并改进大型语言模型的性能。

7、RAG系统的评估

RAG(检索增强生成)系统的评估是确保其性能和效果的关键步骤。这里将介绍RAG系统的评估方法和指标,以帮助衡量其生成文本或回答的质量和相关性。

以下是与RAG评估相关的一些关键概念和方法:

  • 生成质量评估:评估RAG生成的文本的质量是重要任务之一。常用的评估方法包括自动评估指标(如BLEU、ROUGE等)、人工评估和事实验证。这些方法可以帮助衡量生成文本的流畅性、准确性和相关性。
  • 检索效果评估:评估RAG检索的效果是另一个关键方面。这包括检索的准确性、召回率和效率。检索效果的好坏直接影响生成文本的质量。
  • 用户满意度评估:了解用户对RAG系统的满意度和体验也是重要的评估维度。这可以通过用户调查、用户反馈和用户交互数据来实现。
  • 多模态评估:对于生成多模态内容的RAG系统,评估方法需要考虑不同模态之间的一致性和相关性。这可以通过多模态评估指标来实现。
  • 实时性评估:对于需要实时更新的RAG任务,评估方法需要考虑信息更新的及时性和效率。
  • 基准测试集:为了进行客观的评估,通常会使用基准测试集来进行实验和比较不同的RAG系统。这些基准测试集包含了多样化的任务和查询,以涵盖不同的应用场景。

评估方法和指标的选择取决于具体的任务和应用场景。综合使用多种评估方法可以更全面地了解RAG系统的性能和效果。评估结果可以指导系统的改进和优化,以满足用户的需求。

8、未来展望

RAG(检索增强生成)技术在不断发展和演进,未来有许多潜在的发展方向和前景。

  • 挑战识别和解决:未来的研究可以致力于识别和解决RAG技术面临的挑战,特别是在知识检索、生成文本质量和多模态支持方面的挑战。这包括改进检索准确性、提高生成文本的一致性和深化多模态整合。
  • 多模态扩展:随着多模态内容的需求不断增长,未来的研究可以探索如何更好地支持多模态生成,包括文本、图像、音频等。这涉及到跨模态信息的有效整合和生成技术的改进。
  • 实时知识更新:对于需要及时更新的任务,未来的研究可以集中在如何实现实时知识检索和更新,以确保生成的文本始终保持最新和准确。
  • 增强RAG生态系统:RAG技术的发展可以促进建立更加完善的RAG生态系统,包括更多的开源工具、资源和应用场景。这将有助于更广泛地推广和应用RAG技术。
  • 融合知识图谱:未来的研究可以考虑如何更好地融合知识图谱等结构化知识源,以进一步提高RAG系统的性能和效果。

总的来说,RAG技术具有广阔的研究前景和应用前景。未来的研究将继续探索新的方法和技术,以不断改进和扩展RAG系统的功能和性能,从而更好地满足各种知识密集型任务和应用场景的需求。

参考论文:

  1. 《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》
  2. 《Retrieval-Augmented Generation for Large Language Models: A Survey》

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

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

相关文章

post请求搜索功能爬虫

<!--爬虫仅支持1.8版本的jdk--> <!-- 爬虫需要的依赖--> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency>…

2023年下半年网络工程师上午真题及答案解析

1.当计算机突然断电时&#xff0c;( )中存储的信息会丢失。 A.光盘 B.ROM C.RAM D.硬盘 2.进程的状态有就绪态、运行态、阻塞态&#xff0c;其中( )的变化是不可能直接发生的。 A.就绪态到运行态 B.阻塞态到就绪态 C.运行态到阻塞态 D.阻塞态到运行态 3.分…

老板们注意了,AI可能在悄悄威胁你的工作

前天,科技新闻大佬The Register发了一篇文章,说的是AI在科研领域的管理角色越来越大,可能会让管理岗位变得过时,听起来是不是有点儿疯狂? ESMT Berlin的研究小伙伴们发现,AI能够以更大的规模和效率来管理研究项目,比如审查科学文献和预测创新化合物等等,而不是取代人类…

漂亮国的无人餐厅的机器人骚操作

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;你的老朋友&#xff0c;老K。行业群 新书《智能物流系统构成与技术实践》 知名企业 读者福利&#xff1a; &#x1f449;抄底-仓储机器人-即买即用-免调试 智能制造-话题精读 1、西门子、ABB、汇川&#x…

学习vue3第十四节 Teleport 内置组件介绍

<Teleport></Teleport> 作用目的&#xff1a; 用于将指定的组件或者元素传送到指定的位置&#xff1b; 通常是自定义的全局通用弹窗&#xff0c;绑定到 body 上&#xff0c;而不是在当前元素上面&#xff1b; 使用方法&#xff1a; 接收两个参数 to: 要将目标传…

Day105:代码审计-PHP原生开发篇SQL注入数据库监控正则搜索文件定位静态分析

目录 代码审计-学前须知 Bluecms-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-常规注入审计分析 emlog-CNVD-1Day-2次注入审计分析 知识点&#xff1a; 1、PHP审计-原生态开发-SQL注入&语句监控 2、PHP审计-原生态开发-SQL注入&正则搜索 3、PHP审计-原生态开发-SQ…

Java文件流操作

一、文件创建和删除 public static void main(String[] args) throws IOException {File file new File("..\\hello-world.txt");//..表示在上机目录下创建hello-world.txtSystem.out.println(file.getPath());//返回当前相对路径System.out.println(file.getCanoni…

vue项目 设置浏览器地址栏图标及名称

在vue项目中&#xff0c;怎样设置浏览器tab图标及名称呢&#xff1f; 方案一 1.静态配置vue项目ico 1.1将需要展示的ico放到项目文件中 1.2在项目根目录public文件中的index.html添加如下代码 <link rel"icon" href"<% BASE_URL %>favicon.ico"…

Java 组合模式

Java设计模式 - 组合模式 组合模式是结构型模式&#xff0c;因为它创建了一组对象的树结构。 组合模式将一组对象视为单个对象。 组合模式使用一个类来表示树结构。 在组合模式中&#xff0c;我们创建一个包含自己对象的类的组。 例子 以下代码使用Employee类来演示组合模…

(学习日记)2024.04.03:UCOSIII第三十一节:信号量函数接口讲解

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

c++的学习之路:13、vector(2)

本章主要是模拟实现vector&#xff0c;文章末附上代码&#xff0c;和源码。 目录 一、STL源码 二、构造与析构 三、迭代器与【】、size、capacity、empty 四、reserve与resize 五、push_back与pop_back 六、insert与erase 七、测试 1 八、代码 九、思维导图 一、STL源…

FJSP:蜣螂优化算法( Dung beetle optimizer, DBO)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

2024.4.3-day08-CSS 盒子模型(溢出显示、伪元素)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.3-学习笔记css溢出显示单行文本溢出显示省略号多行文本溢出显示省…

多态.Java

&#xff08;1&#xff09;什么是多态&#xff1f; 同类型的对象&#xff0c;表现出不同的形态。前者指父类&#xff0c;后者指不同的子类 说简单点&#xff0c;就是父类的同一种方法&#xff0c;可以在不同子类中表现出不同的状态&#xff0c;或者说在不同子类中可以实现不同…

10.java openCV4.x 入门-特殊的Mat类汇总(二)

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…

Linux 常用指令及其理论知识

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;http://t.csdnimg.cn/Tvyou 欢迎各位指教&#xff01;&#xff01;&#xff01; 目录 一、理论知识 二、基础指令 1、ls指令&#xff08;列出该目录下的所有子目录和文件&#xff09; 语法&#xff1a; …

论文阅读——Sat2Vid

Sat2Vid: Street-view Panoramic Video Synthesis from a Single Satellite Image 提出了一种新颖的方法&#xff0c;用于从单个卫星图像和摄像机轨迹合成时间和几何一致的街景全景视频。 即根据单个卫星图像和给定的观看位置尽可能真实地、尽可能一致地合成街景全景视频序列。…

Docker中Mysql报 mbind: Operation not permitted

问题 我们在docker中安装的mysql运行时报 mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted mbind: Operation not permitted原因 这是Docker的Seccomp安全限…

[leetcode] 25. K 个一组翻转链表

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改变节点内部的值…

最好用的安卓按钮(3)

属性解释 按钮文字 app:text“床前明月光” 按钮文字颜色 app:textColor“color/color_white” 按钮文字大小 app:textSize“22sp” 按钮背景颜色 app:color_normal“color/color_accent” 0x2 单独设置每个圆角 效果 代码 <top.androidman.SuperButton android:layo…