检索增强生成(RAG):智能内容生成的新纪元

引言

在大 AI 时代,生成式人工智能(GenAI)模型,尤其是大型语言模型(LLM),已经展现出了令人瞩目的能力。然而,这些模型在提供信息的准确、即时、专业、权威等方面仍存在局限。检索增强生成(Retrieval-Augmented Generation,下称 RAG)技术应运而生,它通过结合外部知识检索与模型生成能力,大幅提升了内容的准确性、即时性、可靠性。

RAG 技术的起源

RAG 技术的根源至少可以追溯到 20 世纪 70 年代初期,当时基于文本挖掘与信息检索研究的问答系统在访问文本上,就使用了类似的技术。

RAG 这一术语来自于帕特里克·刘易斯 (Patrick Lewis,现就职于 AI 初创公司 Cohere 的 RAG 团队)等人的论文(2020 年),RAG 这一名称可能不太讨喜,但 RAG 一词已经被应用于日益壮大的数百篇论文和数十种商业服务系列方法中,这些方法更是被认为代表了 GenAI 的未来。

什么是 RAG 技术?

RAG 是一种通过从生成模型(主要指 LLM,下文仅以 LLM 讲解)外部获取事实,来增强 LLM 生成内容的准确性和可靠性的技术。从本质上讲,LLM 是神经网络,通常是由其包含的海量参数来支撑生成能力的,这些参数可以称为 LLM 的参数化知识,像人类寻常使用单词组成句子,LLM 凭借这些参数化知识能够快速响应一般性的提示。然而,它不适合那些想要更深入地研究当下最新或特定主题问题的场景。RAG 则恰恰可以填补 LLM 参数化知识(先验知识)的空白与不足。

RAG 工作原理

RAG 模型的基本架构如图所示,其核心技术包括如下几个关键组件。
请添加图片描述

  • Embedding Model:嵌入模型,用于将外部文档和用户查询转换成 Embedding 向量。
  • Vector DB:向量数据库,用于存储 Embedding 向量和执行向量相似性检索(检索出最相关的 Top-K 个信息)。
  • Prompt Engineering:提示词工程,用于将用户的问题和检索到的上下文组合成 LLM 的输入。
  • LLM:大语言模型,用于生成回答或响应内容。

首先,GenAI 应用可以维护一个特定业务领域的庞大知识库,这一知识库可以包含文档、网页、图像、视频、甚至结构化数据等。知识库通过对这些领域数据做进行相应切分,然后使用 Embedding Model 将之转换为向量表示(Embedding),最终将这些数据片段及其 Embedding 在 Vector DB 中进行向量索引存储,以便后续进行相关性检索。

当用户向 GenAI 应用提出问题时,应用会通过 Embedding Model 将问题也转换为 Embedding,然后使用这个 Embedding 与知识库中的向量索引进行比较,找到一个或多个最相关的匹配项(近似最近邻搜索ANN Search),然后将这些匹配项中的最相关的内容作为用户问题的上下文信息(Prompt Engineering),一并输入 LLM,最终得到一个被上下文“约束”的答案。

LLM 根据从知识库检索到的最相关内容和它自己对问题的“理解”,组合生成问题的答案,呈现给用户的还可以包含知识库内容来源引用信息,使答案更具可信度。

如此,RAG 既解决了 LLM 常见的“幻觉”问题,又提高了生成内容的准确性与权威性。

想象一下法庭。法官会根据对法律的一般性理解来审理和判决案件。有时,医疗事故诉讼或劳动纠纷等案件需要特殊的专业知识,因此法官会派法院文员去法律图书馆寻找可以引用的先例和具体案例。

就像一位优秀的法官一样,GenAI 模型可以对人类各种各样的问题与任务做出响应。但想要提供具备权威引用的可靠答案,需要像“法庭文员”一样,进行一些额外的知识摄取和研究。这里的“法庭文员”就是 RAG 技术。

RAG 技术的优势

整合内外部资源,灵活结合开卷和闭卷的优势

RAG 技术将 GenAI 应用与外部资源联系起来,尤其是那些富含最新技术细节的资源。RAG 被当做“一种通用的微调方案”,几乎任何 LLM 都可以使用它来连接几乎任何外部资源。

例如,给出“地球上第一种哺乳动物是什么时候出现的?”这个问题,RAG 可能会检索“哺乳动物”、“地球历史”和“哺乳动物进化”的文档。这些支持文档作为上下文与原始输入组合起来,并输入到产生实际输出的 LLM 中。这里 RAG 有两个知识来源:LLM 存储在其参数中的知识(参数化知识)和 RAG 从中检索段落的语料库中存储的知识(外部知识)。

“闭卷”即仅使用参数化知识,“开卷”即基于检索的外部知识,两相结合,相辅相成。

降低 LLM 训练成本

GenAI 应用要在日常生活中真正发挥有用的价值,它们不仅需要能够访问大量信息,更需要能够访问正确的信息。世界变化是快速的,而 LLM 本身对世界哪怕微小变化的跟进也是一个巨大的挑战。

改变 LLM 的参数化知识需要用新的数据集重新训练整个模型,这往往是一个及其耗力耗时的过程,而更新 RAG 模型的外部知识只需将用于知识检索的知识库替换掉即可,这种自适应方法绕过了 LLM 再训练步骤,直接访问和提取最新信息。这在事实(或我们对事实的理解)随时间演变的情况下非常有用。

保持知识新鲜度

相比使用额外数据集重新训练 LLM 或进行微调(Fine-tune),RAG 的实现要简单很多,而且更快、更便宜。它允许用户即时热插拔新源(知识库,Knowledge Base)。
RAG 技术通过链接 LLM、Embedding Model 和 Vector Database,可以即时地更新 Vector Database 中的知识,时刻保持知识的新鲜、全面与准确。

建立用户信任

RAG 可以为 GenAI 应用提供引用的来源,好比研究论文中的脚注,凭此用户可以追溯引用内容的可靠性,从而建立对生成内容的信任。
此外,RAG 技术还能帮助 GenAI 应用消除用户问题中的歧义,降低模型做出错误猜测的可能性(幻觉现象)。

RAG 技术特点概览

优势

  • 领域特定知识的整合:RAG 能够通过检索阶段获取特定领域的文档或信息,使得生成的文本更加贴合特定领域的语境和术语。
  • 上下文的丰富性:通过检索到的相关文档,RAG 能够利用丰富的上下文信息来生成更加准确和相关的回答。
  • 实时信息的获取:RAG 可以检索最新的领域相关信息,确保生成的内容不是基于过时的数据。
  • 提高准确性:在需要精确数据或专业术语解释的领域问题上,RAG 能够提供更加准确的信息。
  • 定制化和灵活性:RAG 可以根据不同的领域需求定制检索策略和生成模型,提高解决方案的灵活性。
  • 避免生成错误:对于那些容易出错或需要权威信息的领域,RAG 通过检索可靠的数据源来减少错误信息的生成。
  • 多模态数据处理:RAG 不仅可以处理文本数据,还可以扩展到其他类型的数据,如图片、视频等,只要检索系统能够索引和检索这些数据。

局限性

  • 检索依赖性:RAG 的效果在很大程度上依赖于检索系统的性能,如果检索不到相关信息,生成的文本可能缺乏准确性。
  • 计算成本:RAG 结合了检索和生成两个阶段,可能会有更高的计算和时间成本。
  • 数据隐私和安全性:在检索阶段可能需要访问敏感数据,这就需要考虑数据隐私和安全性的问题。
  • 检索结果的偏差:如果检索系统存在偏差,那么 RAG 生成的文本也可能反映出这些偏差。
  • 领域知识的局限性:RAG 可能在处理需要广泛领域知识的问题时受限,特别是当检索到的文档不够全面或深入时。
  • 更新和维护成本:随着领域知识的快速发展,保持检索系统的数据更新可能需要持续的努力和资源。
  • 用户界面和体验:RAG 系统可能需要复杂的用户界面来允许用户有效地与检索和生成阶段交互,这可能影响用户体验。
  • 集成复杂性:将 RAG 技术集成到现有的系统或工作流程中可能需要克服技术挑战和适应性问题。

RAG 技术在特定领域的应用需要仔细考虑这些优势和局限性,并根据具体需求和条件进行优化和调整。

RAG vs. LLM

RAG 技术之于 LLM,在工作方式和应用场景上存在一些不同之处:

  • 检索与生成的结合:RAG 特别强调检索(Retrieval)阶段,即在生成回答或文本之前,先从大量数据中检索相关信息或文档片段,以提供给生成模型更多的上下文信息。LLM 主要依赖于其预训练中学习到的知识,而不直接检索外部信息。
  • 上下文信息的利用:RAG 通过检索阶段,RAG 能够利用特定的、与查询相关的上下文信息,这使得它在需要特定领域知识或详细信息的任务中表现更好。LLM 拥有大量的知识,但它的知识是基于训练数据的,可能不包括最新的信息或特定领域的详细信息。
  • 实时信息的整合:RAG 能够检索最新的信息或文档,这意味着它可以生成基于最新数据的回答。LLM 对于需要最新信息的任务可能不够准确。
  • 生成过程的可控性:RAG 检索阶段提供了额外的控制点,可以根据检索到的信息调整生成策略,提高生成文本的相关性和准确性。LLM 生成过程主要依赖于模型内部的决策,外部控制相对较少。
  • 应用场景:RAG 适合于需要结合大量外部信息和上下文的任务,如开放域问答、事实核查等。LLM 适合于广泛的文本生成任务,包括写作、摘要、翻译等,尤其是在不需要特定领域知识的情况下。
  • 计算资源:RAG 可能需要更多的计算资源,因为它涉及到检索系统的实时查询和生成模型的计算。LLM 本身是一个计算密集型的模型,但它不需要实时检索,因此在某些情况下可能更高效。
  • 交互性:RAG 可以设计为更交互式的系统,通过检索阶段与用户进行多轮对话或提供更深入的回答。LLM 虽然也支持交互,但其交互性主要依赖于模型内部的上下文保持能力。
  • 知识更新:RAG 可以通过更新检索的文档库来相对容易地更新知识库。LLM 知识更新需要重新训练或使用其他方法来适应新信息,这可能更加复杂和耗时。

结语

RAG 技术作为 AI 领域的时下大火的新兴技术,创造性地链接了 LLM、Embedding Model 和知识库的分析能力与知识,有效克服了 LLM 的幻觉问题,同时在充分利用内外资源、保持知识准确与全面、建立用户信任等方面具有良好的效果,在 GenAI 应用中展现出强大优势。随着技术的不断发展,RAG 必将在更多场景中展现其潜力,推动信息获取和内容生成进入新的高度。

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

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

相关文章

用Python打造精彩动画与视频,3.2 基本的剪辑和合并操作

3.2 基本的剪辑和合并操作 在这一节中,我们将学习如何使用 MoviePy 库对视频进行基本的剪辑和合并操作。MoviePy 是一个用于视频编辑的 Python 库,可以轻松地实现视频的剪辑、合并、添加音频等操作。 准备工作 首先,确保你已经安装了 Movi…

c++----类与对象(下)

当我们简单的学习了上一篇日期类。简单的理解并且使用了我们前面学习的知识。当然这还只是我们c的九牛一毛。并且我们的类与对象的知识还没学习完。今天我们来把类与对象的知识完善一下。 初始化列表 那么今天我们就不讲废话了,我们直接来主题。首先我们可以看到我…

防火墙Firewalld(iptables)

目录 一、Linux防火墙基础 1.什么是防火墙 2.防火墙的功能 3.防火墙的类型 二、Linux防火墙工具 1.iptables 2. netfilter 3.四表五链结构 3.1四表 3.2五链 3.3总结 4.数据包过滤的匹配流程 4.1规则表之间的顺序 4.2规则链之间的顺序 4.3规则链内的匹配顺序 …

项目实战_表白墙(升级版)

你能学到什么 表白墙(升级版)Mybatis的一些简单应用 正文 前⾯的案例中, 我们写了表⽩墙, 但是⼀旦服务器重启, 数据就会丢失. 要想数据不丢失, 需要把数据存储在数据库中,接下来咱们借助MyBatis来实现数据库的操作。 数据准备 如果我们…

Kubernetes Prometheus 系列 | AlertManager实现企业微信报警

helm部署prometheusgrafana直通车(与本文章关联) 首先注册企业微信:https://work.weixin.qq.com/ 目录 一、第一种根据企业id,应用secret等绑定二、第二种方式-添加群聊天机器人webhook(推荐) 前言&#x…

AI Agent学习系列:利用扣子智能体快速生成字体大小可控的金句海报

像这样的金句海报是如何生成的? 利用智能体可以轻松实现,还能控制字体大小,下面就介绍这个智能体的搭建过程。 一、创建扣子bot 打开扣子,点击“创建Bot”,手动创建一个bot。 在Bot创建页面输入Bot名称,比…

【项目实战】—— 高并发内存池

文章目录 什么是高并发内存池?项目介绍一、项目背景二、项目目标三、核心组件四、关键技术五、应用场景六、项目优势 什么是高并发内存池? 高并发内存池是一种专门设计用于高并发环境下的内存管理机制。它的原型是Google的一个开源项目tcmalloc&#xff…

SAP MM学习笔记50 - 分割评价(分别评估)

上一章讲了两个不太常用的物料类型,UNBW 和 NLAG。 学它的主要目的就是应付客户,因为根本就不好用,而客户还会很好奇的问这是啥东西呢? SAP MM学习笔记49 - UNBW - 非评价品目(未评估物料),NL…

【Golang 面试 - 基础题】每日 5 题(九)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

主题巴巴WordPress主题合辑打包下载+主题巴巴SEO插件

主题巴巴WordPress主题合辑打包下载,包含博客一号、博客二号、博客X、门户一号、门户手机版、图片一号、杂志一号、自媒体一号、自媒体二号和主题巴巴SEO插件。

【LLM大模型】AI大模型大厂面试真题:「2024大厂大模型技术岗内部面试题+答案」

AI大模型岗的大厂门槛又降低了!实在太缺人了,大模型岗位真的强烈建议各位多投提前批,▶️众所周知,2025届秋招提前批已经打响,🙋在这里真心建议大家6月7月一定要多投提前批! 💻我们…

html实现酷炫美观的可视化大屏(十种风格示例,附源码)

文章目录 完整效果演示1.蓝色流线风的可视化大屏1.1 大屏效果1.2 大屏代码1.3 大屏下载 2.地图模块风的可视化大屏2.1 大屏效果2.2 大屏代码2.3 大屏下载 3.科技轮动风的可视化大屏3.1 大屏效果3.2 大屏代码3.3 大屏下载 4.蓝色海洋风的可视化大屏4.1 大屏效果4.2 大屏代码4.3 …

createObjectURL的部分使用讲解

URL.createObjcetURL的部分详解 文章目录 URL.createObjcetURL的部分详解1. 为什么要使用createObjectURL2. createObjectURL的基本用法3. 转换后的文件进行展示或下载展示下载 首先,想记录一下这点是因为之前关于pdf文件的下载和预览,后端返回工作流时的…

正点原子imx6ull-mini-Linux驱动之阻塞IO和非阻塞IO实验(12)

阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式,在编写驱动的时候 一定要考虑到阻塞和非阻塞。本章我们就来学习一下阻塞和非阻塞 IO,以及如何在驱动程序中 处理阻塞与非阻塞,如何在驱动程序使用等待队列和 poll 机制。 1&…

22. Hibernate 性能之缓存

1. 前言 本节和大家一起聊聊性能优化方案之:缓存。通过本节学习,你将了解到: 什么是缓存,缓存的作用;HIbernate 中的缓存级别;如何使用缓存。 2. 缓存 2.1 缓存是什么 现实世界里,缓存是一个…

html+css 实现遮罩按钮

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

使用obsidian-webpage-export 插件,将 Obsidian 中的笔记导出为网页

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

快速排序(上)

快速排序 前言 快速排序算法是最流行的排序算法,且有充足的理由,因为在大多数情况下,快速排序都是最快的。所以学习快速排序算法十分有必要。当然,既然它这么好,也就不太容易理解。 正文 Hoare版快排 快速排序是Hoare在1962年提出的一种二叉树结构的…

数字图像边缘曲率计算及特殊点检测

一、曲率和数字图像边缘曲率检测常用方法简介 边缘曲率作为图像边缘特征的重要参数,不仅反映了边缘的几何形状信息,还对于图像识别、图像分割、目标跟踪等任务具有显著影响。 曲线的曲率(curvature)就是针对曲线上某个点的切线方向…

如何对同一个项目,不同分支,开两个IDEA窗口?

问题:有次我想参考(fu zhi)某个分支的代码,来写代码,但是打开双击项目的pom文件,会自动打开现在的IDEA窗口,如下: 解决:后面我用Open的方式打开,也是一样的。…