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

news2025/1/12 12:05:46

引言

在大 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.coloradmin.cn/o/1968760.html

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

相关文章

1.2、安装k8s-node1 和 k8s-node2节点虚拟机

k8s-master节点的虚拟机环境弄好之后,这小节继续介绍k8s-node1 和 k8s-node2节点虚拟机环境安装。 节点主机名ip主节点k8s-master172.31.0.10节点1k8s-node1172.31.0.11节点2k8s-node2172.31.0.12 在D:\vagrant目录下新建centos_stream_9_node1文件夹,然…

如何在Python中使用网页抓取API获得Google搜索结果

SERP是搜索引擎结果页的缩写,它是你在百度、谷歌、Bing等搜索引擎中提交查询后所得到的页面。搜索引擎需要给所有页面做排序,把最能解决我们需求的页面展示给我们,企业会非常关注结果页的排序,也就是本企业内容的自然排名情况。手…

革新IT架构管理,宝兰德全新中间件统一管理平台助力企业数字化转型

近期,宝兰德在金融行业科技盛会“2024中国国际金融展”上正式发布了拳头产品「中间件统一管理平台MCP2.0」,旨在推动业务与中间件解耦,解决中间件管理中的版本不统一、自动化程度低、监控不完善、运维效率低、管理分散等问题,实现…

8月1日学习笔记 java环境安装以及tomcat配置

一,java环境安装 1. 效果 2. 步骤 1. 下载 jdk22 # 官网地址 https://www.oracle.com/cn/java/technologies/download s/ wget https://download.oracle.com/java/22/latest/jdk- 22_linux-x64_bin.tar.gz 2. 解压 tar -zxvf jdk-22.2.tar.gz 3. 移动到 us…

快速搞定分布式Kafka

本文从kafka中的实际应用场景分析,讲述kafka的一些基本概念。再讲述zookeeper集群环境的构建;kafka的搭建以及脚本文件编写;最后是一个快速入门的demo.内容会比较多,希望大家能有所收获! 1.Kafka(MQ)实战应用场景剖析…

linux系统ShellCheck检查shell脚步语法正确的工具

目录 ShellCheck 安装ShellCheck 、dnf、yum 源代码编译 步骤如下: 示例命令: 方法三:使用其他第三方仓库、COPR 仓库 假设 ShellCheck 输出如下: 分析输出 修改脚本 再次运行 ShellCheck 1. Shell 脚本最佳实践 主题…

vcpkg install libtorch[cuda] -allow-unsupported-compiler

在vcpkg中不懂如何使用 nvcc 的 -allow-unsupported-compiler, 所以直接注释了CUDA中对版本的检查代码. C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include\crt\host_config.h 奇了怪了,我是用的是vs2022,但是还是被检查为不支持的编译器!!! 可以试一下改这…

搭建gitlab代码托管仓库(解决centos7无法使用默认数据源问题)

公司的gitlab由于停电,又崩了,每次停电都会崩掉。所以就想到自己学一下搭建gitlab代码中心,后面在搞一个jenkins自动发版学习一下,慢慢搞吧。 在弄的时候,发现Centos7居然在2024年6月31日停止维护了。这就离谱了&…

职教国培丨高职教师数据分析与挖掘课程实施能力提升培训班莅临泰迪智能科技参观调研

7月28日,由广东机电职业技术学院牵头,广东泰迪智能科技股份有限公司为合作单位的“2024年高职教师数据分析与挖掘课程实施能力提升培训班”老师莅临广东泰迪智能科技股份有限公司产教融合实训基地参观调研,来自广东省各地36位高校教师参与本次…

如何在 Kali Linux 上安装和使用 Docker 和 Docker Compose

Docker 和 Docker Compose 是现代开发者必备的工具,特别是当你需要在不同的环境中部署应用时。本文将详细介绍如何在 Kali Linux 上安装 Docker 和 Docker Compose,并使用它们启动服务。即使你是个技术小白,也能轻松跟随这篇指南完成操作。 …

Ecovadis认证:企业申请Ecovadis认证条件

Ecovadis认证是一种用于评估和评价企业可持续发展绩效的认证体系。该认证由Ecovadis公司提供,目的是帮助公司了解和改善其环境、社会和治理(ESG)实践。 Ecovadis认证主要基于四个方面进行评估:环境、劳工和人权、道德采购以及可持…

Python——记录pip问题(解决下载慢、升级失败问题)

在python开发中,经常需要使用到各种各样的库。 pip又是我们常用的安装工具。但是国外的源下载速度实在太慢,经常导致超时。 有很多朋友刚刚学Python的时候,会来问为什么pip下载东西这么慢啊? 而且pycharm里面下载库也是非常的慢…

Linux服务器安装MySQL8.0

序号类型地址1MySQLLinux(centos 7.5)服务器安装MySQL5.72MySQLLinux服务器安装MySQL8.03MySQLMySQL操作之概念、SQL约束(一)4MySQLMySQL操作之数据定义语言(DDL)(二)5MySQLMySQL操作之数据操作…

React三原理和路由

代码下载 React 组件通讯原理 setState() 说明 setState() 是异步更新数据的,使用该语法时,后面的 setState() 不要依赖于前面的 setState(),可以多次调用 setState() ,只会触发一次重新渲染: this.setState({ coun…

CPQ报价管理系统 | 成本报价CPQ解决方案

一、成本报价流程现状 1、传统流程 2、业务痛点 ①、数据手工重复输入环节多、易错,为保障准确性需多次复核,影响报价效率 ②、原材波动较大,但是当前询价流程只有一次性,原材成本发生变化,无法及时更新变化提醒报价…

类和对象(作业篇)

简简单单整理一下咱们的小作业,这次的作业比较简单,只有选择题: public class Test{private float f1.0f;int m12;static int n1;public static void main(String args[]){Test tnew Test();} }A:抛开private不说,先看…

解析顺序表【数据结构】

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有线序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表有:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就是说是连续的一条线…

HTML 字符集详解及示例

文章目录 摘要引言从ASCII到UTF-8的演变ASCII 字符集ANSI字符集ISO-8859-1字符集UTF-8字符集 示例代码运行Demo小结表格总结未来展望参考资料 摘要 本文介绍了HTML中的字符集演变历史,从最初的ASCII到现代的UTF-8,并提供了设置字符集的示例代码。文中涵…

图形编辑器基于Paper.js教程10:导入导出svg,导入导出json数据

深入了解Paper.js:实现SVG和JSON的导入导出功能 Paper.js是一款强大的矢量绘图JavaScript库,非常适合用于复杂的图形处理和交互式网页应用。本文将详细介绍如何在Paper.js项目中实现SVG和JSON格式的导入导出功能,这对于开发动态图形编辑器等…

git reset --soft(回退commit,保留add)

参考博客:git reset --soft命令的使用-CSDN博客感觉博客中举的例子不是很好。读者自行判断。举的例子的场景适合使用revert,撤销就行了。另外建议看下边这篇博客,这篇详细介绍了reset和revert,带图。但是要注意这个reset是hard的&…