检索增强生成(RAG)技术

news/2024/5/4 22:45:11

随着大语言模型(LLMs)在自然语言处理(NLP)领域的显著进步,它们在多个评估基准测试中显示出超越人类水平的语言和知识掌握能力。然而,这些模型在实际应用中也面临着一系列挑战,如制造事实、知识更新缓慢和答案缺乏透明度等问题。为了解决这些问题,研究者提出了检索增强生成(Retrieval-Augmented Generation,RAG)技术,它通过从外部知识库检索相关信息来辅助大语言模型回答问题,已经被证明能显著提高回答的准确性。

RAG的核心优势

RAG技术的核心优势在于其能够提高答案的准确性、增加用户信任、便于知识更新和引入特定领域知识。它结合了LLMs的参数化知识和外部知识库的非参数化知识,有效地解决了知识更新的问题,并通过引用来源提高了答案的透明度。

  1. 提高答案准确性: RAG通过从外部知识库中检索相关信息,并将其与语言模型的生成能力结合,可以显著提升生成答案的准确性。这种准确性的提升尤其体现在知识密集型任务中,如专业领域的问答系统。

  2. 增加用户信任: 由于RAG能够引用外部知识库中的信息来支持其回答,用户可以追溯答案的来源,从而增加了对模型输出的信任度。这种可验证性是提高用户满意度和接受度的关键因素。

  3. 便于知识更新和引入特定领域知识: RAG结合了LLMs的参数化知识(即模型内部的知识)和外部知识库的非参数化知识(即存储在数据库中的信息)。这种结构允许模型轻松地通过更新知识库来获取最新信息,而不需要对模型本身进行重新训练。

  4. 减少模型幻觉: 大型语言模型有时会产生“幻觉”(即生成与现实不符的信息)。RAG通过检索真实可靠的信息来辅助生成过程,有效减少了这种幻觉现象。

  5. 透明度: RAG技术通过明确展示其检索到的信息来源,提高了模型的透明度。这种透明度不仅有助于用户理解模型的决策过程,也有助于研究人员分析和改进模型。

  6. 定制化能力: RAG允许根据不同领域的特定需求定制知识库,使得模型能够针对特定领域提供更加精准和深入的答案。

  7. 安全性和隐私管理: 通过在知识库中内置角色和安全控制,RAG可以更好地管理数据使用,保护用户隐私和数据安全。

  8. 可扩展性: RAG技术能够有效处理大规模数据集,而无需对模型的所有参数进行更新或重新创建训练集,这使得其在资源利用上更为高效。

  9. 结果的可信度: 与仅依赖模型内部知识的生成方法相比,RAG能够从最新的数据中选择确定性结果,提高了生成内容的可信度。

  10. 适应性和灵活性: RAG的模块化设计允许研究者和开发者根据具体任务和需求,灵活地添加、替换或调整RAG过程中的模块,从而提高模型的适应性和灵活性。

RAG的三种范式

论文概述了RAG在大型语言模型时代的发展范式,总结了三种RAG范式:原始RAG(Naive RAG)、高级RAG(Advanced RAG)和模块化RAG(Modular RAG)。

  1. 原始RAG:涉及基本的检索-阅读过程,将检索到的文档直接用于生成答案。
  2. 高级RAG:在原始RAG的基础上,进行了检索过程优化、预检索优化、后处理方法等改进,以提高检索生成的质量。
  3. 模块化RAG:提供了更大的多样性和整个过程的灵活性,整合了各种方法来扩展功能模块,允许采用序列化管道或跨多个模块的端到端训练方法。
RAG的三个主要组成部分

检索增强生成(Retrieval-Augmented Generation,RAG)技术由三个主要组成部分构成:检索器(Retriever)、生成器(Generator)和增强方法(Augmentation)。下面详细说明每个部分的作用和关键技术:

  1. 检索器(Retriever) 检索器是RAG框架中的“R”,负责从庞大的知识库中检索出与用户查询最相关的文档。这个过程通常涉及以下几个关键技术:

    • 块优化:选择合适的文档块大小以获得最佳的语义表示。
    • 微调嵌入模型:对嵌入模型进行微调,以更好地适应特定领域的数据集和下游任务。
    • 查询重写:通过生成伪文档或使用大型语言模型重写查询,以提高检索的相关性。
    • 嵌入变换:使用适配器或变换技术优化查询嵌入,使其更匹配文档的语义空间。
  2. 生成器(Generator) 生成器是RAG框架中的“G”,它使用检索到的信息作为输入,生成流畅且信息丰富的文本响应。生成器的关键技术包括:

    • 后检索处理:对检索到的文档进行压缩和重排,以提高信息的利用效率。
    • 优化生成器:通过一般优化过程、对比学习和利用不同优化目标,调整生成器以更好地适应输入数据。
    • 信息压缩:减少检索文档中的噪声和冗余,应对上下文长度限制。
    • 重排:优化检索到的文档集,将最相关的信息放在前面,提高生成文本的相关性。
  3. 增强方法(Augmentation) 增强方法在RAG中用于提升模型在预训练、微调和推理阶段的性能。这些方法包括:

    • 数据源增强:使用非结构化数据、结构化数据和LLM生成内容作为检索源,增强RAG的效果。
    • 过程增强:通过迭代检索和自适应检索优化检索过程,使模型能够根据任务需求动态调整检索策略。
    • 模块化RAG:引入新模块和新模式,如搜索模块、记忆模块、额外生成模块、任务适应模块、对齐模块和验证模块,以提供更大的灵活性和适应性。

每个组成部分都包含了一系列的技术,这些技术可以单独使用或组合使用,以解决特定的挑战并提升RAG系统的整体性能。RAG的这三个组成部分相互协作,共同提高了模型在处理复杂查询和生成信息丰富响应方面的能力。


参考链接:同济大学发布最新检索增强(RAG)的LLM生成技术综述


http://www.mrgr.cn/p/44078008

相关文章

【简单介绍下PostCSS】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

2024/4/24团队开发

讨论:我们的想法暂时很简单,目前认为完成项目比较简单,不知道后期会不会上难度,把场景搭建好之后,就开始结合ai,以及发送消息给手机号。 燃尽图:60%

前端使用 Konva 实现可视化设计器(7)- 导入导出、上一步、下一步

请大家动动小手,给我一个免费的 Star 吧~ 这一章实现导入导出为JSON文件、另存为图片、上一步、下一步。 github源码 gitee源码 示例地址导出为JSON文件 提取需要导出的内容getView() {// 复制画布const copy = this.render.stage.clone()// 提取 main layer 备用const main =…

go是怎么实现正反向代理的

Go语言是 如何实现 HTTP代理 和 反向代理 磊丰 Go语言圈 2024-04-22 08:30 广东 65人听过Go语言圈 Go语言开发者的学习好助手,分享Go语言知识,技术技巧,学习与交流Go语言开发经验,互动才有助于技术的提升,每天5分钟,助你GO语言技术快乐成长 158篇原创内容公众号学习与交流…

【C++类和对象】const成员函数及流插入提取

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

图论学习总结

目录 图论学习总结前言一、基础知识图的存储图的遍历 二、最短路多源最短路 F l o y d Floyd Floyd​ 算法例题及变形 e g 1 : S o r t i n g I t A l l O u t eg1:Sorting\ It\ All\ Out eg1:Sorting It All Out ( 蓝书例题,传递…

ELK日志采集系统

1.什么是ELK ELK 是一套流行的数据搜索、分析和可视化解决方案,由三个开源项目组成,每个项目的首字母合起来形成了“ELK”这一术语: Elasticsearch (ES): Elasticsearch 是一个基于 Apache Lucene 构建的分布式、实时搜索与分析引擎。它能够…

文本语音互相转换系统设计

title: 文本语音互相转换系统设计 date: 2024/4/24 21:26:15 updated: 2024/4/24 21:26:15 tags:需求分析 模块化设计 性能优化 系统安全 智能化 跨平台 区块链第一部分:导论 第一章:背景与意义 文本语音互相转换系统的定义与作用 文本语音互相转换系统是一种能够将文本信息转…

项目中,如何写 readme.md 文件 | 写项目总结

tips:注意写 1. readme文件:①项目文档(项目需求和设计文档、项目系统架构和技术文档、接口文档)、②项目结构、③启动项目。具体结构见下文。 2. 项目总结:技术栈、描述、主要工作!!需求及功…

1.3 初探Spring AOP

本次课,我们深入了解了Spring框架中的AOP(面向切面编程)概念,它是一种编程范式,用于处理那些在多个类中重复出现、与业务逻辑无关的横切关注点,如日志记录、事务管理等。AOP与OOP(面向对象编程&…

边缘计算的优势

边缘计算的优势 边缘计算是一种在数据生成地点附近处理数据的技术,而非传统的将数据发送到远端数据中心或云进行处理。这种计算模式对于需要快速响应的场景特别有效,以下详述了边缘计算的核心优势。 1. 降低延迟 边缘计算通过在数据源近处处理数据&…

FinalShell 远程连接 Linux(Ubuntu)系统

Linux 系列教程: VMware 安装配置 Ubuntu(最新版、超详细)FinalShell 远程连接 Linux(Ubuntu)系统Ubuntu 系统安装 VS Code 并配置 C 环境 ➡️➡️➡️提出一个问题:为什么使用 FinalShell 连接&#xff0…

鸿蒙HarmonyOS实战-ArkUI动画(页面转场动画)

🚀前言 页面转场动画是指在应用程序中,当用户导航到另一个页面时,使用动画效果来过渡页面之间的切换。这样做的目的是为了提升用户体验,使页面之间的切换更加平滑和有趣。 常见的页面转场动画包括淡入淡出、滑动、翻转、缩放等效果。通过使用这些动画效果,可以给用户一种…

背靠TON公链的Notcoin游戏项目,能否杀出GameFi的红海?

4月15日消息,Telegram生态中的游戏及Meme项目Notcoin,最近在X平台公布了令市场瞩目的代币经济学方案。据悉,NOT的总供应量高达1027亿枚,其中78%将分配给矿工和Voucher持有者,余下的22%预留给未来新用户、交易者及各类上…

java中是否所有的stream流都需要主动关闭

流的概念 在输出数据时,内存中的特定数据排成一个序列,依次输出到文件中,这个数据序列就像流水一样源源不断地“流”到文件中,因此该数据序列称为输出流。同样,把文件中的数据输入到内存中时,这个数据序列就像流水一样“流”到内存中,因此把该数据序列称为输入流。 输入…

【C++】---STL之list详解

【C】---STL之list详解 一、了解list的基本信息二、成员函数1、构造2、迭代器3、empty()4、size()5、front()6、back()7、push_front()8、pop_front()9、push_back()10、pop_back()11、insert()12、erase()13、swap()14、sort()15、reverse() 一、了解list的基本信息 1、库里面…

WAF防范原理

目录 一、什么是WAF 二、纵深安全防御 WAF的组网模式 WAF配置全景 WAF端 服务器 攻击端 拦截SQL注入,XSS攻击,木马文件上传 要求: 使用WAF,通过配置策略要求能防御常见的web漏洞攻击(要求至少能够防御SQL、XSS、文…

4.22日团队博客

今天进行了晨会 晨会成员:董茂欣、刘雪超、龚涵彬同时统计了昨天所做的内容,主要为登录和注册接口的书写和个人页面的制作

VScode如果展开空白的文件夹

1点击左下方小齿轮 2点击settings 3搜索框搜索compactFolders 4将Compact Folders勾上的复选框去掉

WPF开源轻便、快速的桌面启动器

前言 今天大姚给大家分享一款WPF开源、简单、轻便、快速的桌面启动器(支持多主题、多语言:简体中文、繁体中文、英文等):CurvaLauncher。 WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、…