2万字解读:RAG(检索增强生成)起源、演进与思考研究报告

胡泊Hubo
0 评论 1612 浏览 7 收藏 64 分钟
零基础想转行产品经理?别担心!我们的实战营专为转行者设计,提供体系化课程和项目实战,帮你弥补经验短板,成功实现职业转型,拿到心仪offer。

RAG(检索增强生成)作为一种融合信息检索与自然语言生成的创新技术范式,正在重塑AI在知识密集型任务中的应用方式。本文将深入剖析RAG的起源、发展脉络以及其在现代AI系统中的架构与演进路径。

RAG(Retrieval Augmented Generation)是一种通过集成外部知识源来增强大型语言模型(LLM)能力的范式。可以追溯到RAG从信息检索(IR)和自然语言生成(NLG)这两个基础领域的知识谱系,经历了开放域问答(ODQA)的早期探索,直至2020年其正式定型。剖析现代RAG的体系结构,详细阐述了其核心组件以及从初级(Naive)到高级(Advanced)和模块化(Modular)RAG的演进路径。最后,对代理式(Agentic)、自适应(Adaptive)和多模态(Multimodal)RAG的出现引发的思考

第一章:混合式人工智能,RAG的基础前身

检索增强生成(RAG)并非凭空出现的发明,而是两个历史悠久的独立领域,信息检索(Information Retrieval, IR)与自然语言生成(Natural Language Generation, NLG)在特定技术突破的催化下,历经漫长演化后融合的产物。

1.1 双生支柱:信息检索(IR)与自然语言生成(NLG)的历史

RAG的核心理念在于“检索”与“生成”的结合,这两种能力分别源自两个成熟的计算机科学分支。

1)信息检索

信息检索的历史可以追溯到20世纪50至60年代,其核心目标是从大规模文档集合中找出与用户查询相关的资料。汉斯·彼得·卢恩(Hans Peter Luhn)和杰拉德·萨尔顿(Gerard Salton)等先驱奠定了该领域的基础。萨尔顿在康奈尔大学领导的研究小组是该领域的早期重镇。关键概念包括:

向量空间模型(Vector Space Model):

该模型将文档和查询表示为高维空间中的向量,通过计算向量间的相似度(如余弦相似度)来判断相关性,也就是我们人为的设定一个规则,给词语定义坐标的方式,将文本数字化,从而让计算机能够通过计算坐标的远近和方向,来理解文章和词语的含义。

这是一种早期的语义检索尝试。就比如说,我们要让一台完全不懂人类语言的电脑去理解词语之间的关系。它该如何“思考”呢?核心问题是电脑只认识数字,不认识文字。如何把“词语的含义”转换成电脑能处理的数字?所以只能通过向量化来解决,词听起来很数学,但您可以把它理解为,含义坐标。就像在地图上,每个城市都有一个经纬度坐标(例如,北京:东经116°,北纬39°)。我们可以用一组数字 [116, 39] 来唯一标识北京的位置。

向量化做的就是类似的事情,我们给每个词语都分配一个“含义坐标”,这个坐标通常由成百上千个数字组成。

简单例子(二维坐标):

假设我们用两个维度来描述词语:[“生物性”, “人类关联性”]

  • “狗”可能被表示为 [9, 4] (生物性得分9,人类关联性得分4)
  • “猫”可能被表示为 [9, 3] (和“狗”很像,所以坐标很接近)
  • “石头”可能被表示为 [1, 0] (生物性很低,人类关联性也低)
  • “国王”可能被表示为 [7, 9] (生物性较高,人类关联性极高)
  • “女王”可能被表示为 [7, 8.9] (和“国王”坐标非常接近)

所有这些词语的“含义坐标”共同组成的那个多维度的“含义地图”,就是向量空间 (Vector Space)。在这个“地图”上,意思相近的词,它们的坐标点就靠得很近。

OK,当我们得到了一个向量空间之后,那我们如何精确计算两个词到底有多“像”呢?“余弦相似度”就是一种测量方法。它不关心两个点之间的直线距离,而是关心它们方向的一致性。举个例子,你和朋友都从同一个广场中心出发。如果你们都朝着正北方走,即使你走了100米,他走了200米(距离不同),但你们的方向是完全一致的。这时,你们的余弦相似度就是最高的(等于1)。

  • 如果一个朝正北,一个朝正东,方向呈90度角,那么余弦相似度就是0,代表“不相关”。
  • 如果一个朝正北,一个朝正南,方向完全相反,余弦相似度就是最低的(等于-1),代表“含义相反”。

所以,在向量空间里,“猫”和“狗”的向量方向会非常接近,所以它们的余弦相似度很高。而“猫”和“宇宙飞船”的向量方向会相差很远,相似度就很低。

词频-逆文档频率(TF-IDF):

作为一种经典的加权技术,TF-IDF用于评估一个词对于一份文档或一个语料库的重要性。也就是说,哪个词出现次数最多,哪个词就最重要。但很快你会发现问题,像“的”、“是”、“和”这些词出现次数最多,但它们毫无意义。

TF-IDF就是为了解决这个问题而设计的、一种非常聪明的加权算法。它由两部分组成:

a) 词频 (TF – Term Frequency)

举个例子, 在一篇1000个词的关于“人工智能”的文章里,“模型”这个词出现了30次。

它的TF就是 30 / 1000 = 0.03。

b) 逆文档频率 (IDF – Inverse Document Frequency)

这是TF-IDF算法的精髓。它用来衡量一个词的稀有度。一个词在越多的文章里都出现过,它的“独特性”就越差,IDF值就越低。就像刚才提到“的”、“是”这种词,几乎所有中文文章里都会有。所以它们的IDF值会无限趋近于0。而像“梯度下降”、“神经网络”这种专业术语,只会在AI相关的文章里出现。因此,它们在所有文章里是“稀有”的,IDF值就会很高。

公式:TF-IDF = 词频(TF) × 逆文档频率(IDF)

最终的得分,同时考虑了“在本文中的重要性”和“在所有文章中的独特性”。

回到例子:

  • “模型”:在AI文章中TF值较高,同时它也不是一个通用词(经济学、建筑学文章里不常用),所以IDF值也较高。最终TF-IDF得分就很高,被识别为关键词。
  • “的”:在AI文章中TF值极高,但它的IDF值趋近于0。两者相乘,最终TF-IDF得分也很低,被认为是无意义的停用词。
  • “手机”:在这篇AI文章里可能一次都没出现(TF=0),那么不管它IDF值多高,最终TF-IDF得分也是0。

概率模型(Probabilistic Models):

TF-IDF 已经很不错了,还有没有优化的空间?它在某些情况下还是不够“智能”。

概率模型,特别是像BM25这样的算法,可以看作是TF-IDF的超级升级版**。它不再是简单地把两个值乘起来,而是从“概率”的角度思考,当用户搜索这个词时,他看到这篇文章感到满意的可能性有多大?

BM25主要在两个方面做了优化:

词频饱和度 (Term Frequency Saturation)

TF-IDF有一个假设:一个词出现10次,就比出现5次重要两倍。但现实是这样吗?

举个例子: 一篇文章里,“苹果”这个词出现1次,说明文章和苹果相关。如果出现10次,那它和苹果的相关性大大增强。但如果从10次增加到20次,相关性的提升效果其实是在减弱的。

BM25引入了,词频饱和度的概念,意思是词频的作用会“饱和”,有一个上限。就像吃饭,吃第一碗饭幸福感很强,吃第二碗幸福感还在增加,但到了第十碗,幸福感就不会再增加了,而且你还有点想吐。这更符合我们对重要性的直观感受。

文档长度惩罚 (Document Length Normalization)

TF-IDF对长文章和短文章的处理方式不太公平。

举个例子: 搜索“爱因斯坦”

一篇是500字的爱因斯坦简介。

另一篇是50万字的《物理学史》,其中也提到了爱因斯坦。很可能在《物理学史》这本巨著里,“爱因斯坦”出现的次数更多,导致TF-IDF算分更高。但这显然不合理,因为那篇简介才是更相关的文档。所以BM25会对长文档进行“惩罚”。它会考虑文章的长度,如果一篇文章的长度远超平均水平,它就需要出现更多的关键词才能获得与短文章同样的分数。

自然语言生成

与此同时,自然语言处理(NLP)及其子领域自然语言生成(NLG)也在独立发展。其目标是让计算机能够理解并生成流畅、连贯的人类语言。其发展历程包括:

早期探索:最初的尝试集中在基于规则的机器翻译和基于语法的文本生成,这些系统通常依赖于循环神经网络(RNN)等结构。

统计语言模型:20世纪80至90年代,随着统计方法的兴起,N-gram模型成为主流。它通过计算词序列出现的概率来生成文本,极大地推动了NLG的发展。

NLG的发展为RAG的“生成”环节提供了必要的技术储备,使其能够将检索到的信息转化为自然、可读的答案。

一段历史性的“竞争”:在早期发展中,IR和AI/NLP领域之间存在一种方法论上的“竞争”。IR领域更偏向于统计和定量分析,而早期的AI则更侧重于基于逻辑和符号的推理。这种差异导致两个领域在很长一段时间内并行发展,鲜有交集。然而,正是这种差异化的发展,为日后两者的优势互补与融合埋下了伏笔。

1.2 早期融合尝试:开放域问答(ODQA)时代

在RAG被正式提出之前,开放域问答(Open-Domain Question Answering, ODQA)系统是融合IR与NLG最成功的尝试,可以被视为“原型RAG”(Proto-RAG)。

可以这么理解,在RAG(检索增强生成)这个概念正式诞生之前,它的“原型”或“老前辈”早就存在了,它就是开放域问答(Open-Domain QA)系统

从“单科考试”到“超级图书馆”

最早的问答AI,玩的是“封闭式问答”,就像单科开卷考试。你只能问关于某一本书或某个特定领域(比如公司产品手册)的问题。

而开放域问答(ODQA)则是把AI扔进了一个超级图书馆(比如整个维基百科),然后要求它能回答关于任何主题的事实性问题。这是AI首次系统性地尝试应对需要海量外部知识的挑战,难度指数级上升。IBM为电视节目开发的那个著名AI“沃森”(Watson),就是这个时代的巅峰之作。

“两步走”的经典工作流

这些早期的“原型RAG”系统,采用的是一种非常经典的“两步走”流水线架构:

第一步:图书管理员(检索器 – Retriever)

这个模块像个图书管理员,接到你的问题后,先用一些传统的搜索技术(比如TF-IDF或BM25,可以理解为基于关键词匹配)从海量文档中,快速找出几十篇可能相关的段落。

第二步:阅读理解专家(阅读器 – Reader)

然后,这些找出的段落被交给一个独立的“阅读理解专家”。它的任务就是精读这些段落,并从中准确地抽取出答案,或者基于这些信息生成一句话回答。

这个“先捞信息,后精读作答”的模式,就是RAG最核心思想的雏形。

与此同时,尽管这个“两步走”模式很成功,但它存在几个根本性的缺陷,也正是这些缺陷,直接催生了后来更先进的RAG架构:

视野太窄,只见树木不见森林。当时的“阅读器”能力有限,只能处理很短的文本片段。这迫使“图书管理员”只能递给它一小段一小段的文字。但很多复杂问题的答案,需要通读整篇文章甚至好几篇文章才能明白,这种“管中窥豹”的做法常常导致关键信息丢失。

检索员和阅读员“互相拉黑”,无法协作。这是最致命的一点。检索员(Retriever)和阅读员(Reader)是分开训练、独立工作的。这意味着,即便阅读员发现检索员给的材料全是垃圾,它也没法把这个“反馈”传递回去,告诉检索员“下次别找这种了,换个方向找”。检索员永远无法从最终答案的好坏中学习,也就无法变得更聪明。

知识库的信息不足。有时候,答案压根就不在知识库里。或者,用户的问题有歧义,导致检索员找来一堆不相关的“噪声”文档,严重干扰了阅读员的工作。

跨专业能力极差。一个在“维基百科”这个通用图书馆里训练出来的检索员,你把它直接派到专业的“医学”或“法律”图书馆,它就抓瞎了。因为它不认识专业术语,不理解领域的知识结构。想让它适应新领域,就得花巨大成本重新培训,非常笨重。

正是为了解决这些“视野狭窄”、“协作不畅”、“适应性差”的硬伤,一个更整合、更智能的RAG框架才应运而生。

1.3 技术催化剂:Transformer与密集检索的崛起

两项关键技术的突破为解决上述挑战并最终催生RAG铺平了道路。

Transformer革命:2017年Transformer架构的提出是一个分水岭事件。其核心的自注意力机制(Self-Attention)使得模型能够捕捉文本中长距离的依赖关系,生成上下文感知的词嵌入(Contextualized Embeddings)。像BERT这样的模型,能够深刻理解词语在不同上下文中的确切含义,远超简单的关键词匹配。在此之前,计算机理解一句话里的词语,很大程度上是孤立的,或者只能看到旁边的几个词。而 Transformer 让计算机能够像人一样,通读整段话,理解每个词在当前语境下的确切含义。

举个例子,就比如说“说曹操,曹操到”和“曹操是个大奸臣”这两句话里的“曹操”的意思是不同的

密集检索 vs. 稀疏检索:这一进步直接推动了检索技术的革新,即从“稀疏检索”向“密集检索”的转变。

稀疏检索(Sparse Retrieval):以TF-IDF和BM25为代表,它们依赖于关键词的精确匹配,将文档表示为高维但大部分元素为零的“稀疏”向量。就像书后面的索引或者电脑上的 Ctrl+F 查找。你搜“汽车”,它就只找文本里出现“汽车”这个词的地方。特点就是快,因为它只做简单的文字匹配。但是同时也很笨,它不理解“汽车”和“车辆”是近义词。如果你搜“汽车”,它绝对找不到只写了“车辆”的文章。

可以想象它用一个巨大的清单来表示一篇文章,清单上列出了所有可能的词。一篇文章只用了其中很少一部分词,所以这个清单上绝大部分都是0,看起来很“稀疏”。

密集检索(Dense Retrieval):利用 Transformer 的强大理解力,它不再是匹配文字,而是匹配“意思”。它会把你的查询(比如“关于罗马帝国衰落的书”)和所有文档(比如一本标题叫《古代晚期历史》的书)都转换成一个代表其核心思想的意义向量(一串数字)。然后,它在数学上寻找哪个文档的“意义”和你的查询最接近。特点就是,它能理解概念。即便文章里没有“罗马帝国衰落”这几个字,但如果内容是讲这个的,它也能找到。这就是真正的语义搜索

所以,因为我们有了 Transformer 这种能深度理解上下文的“大脑”,我们的搜索技术也跟着升级了。我们不再满足于死板的关键词查找(稀疏检索),而是进化到了能理解你真实意图的、更智能的语义搜索(密集检索)。

这两者的结合,最终为RAG创造了完美的条件。它通过将两者的优点统一在一个框架内,最终解决了IR与NLP领域长久以来的“竞争”关系,实现了一加一大于二的效果

像 GPT-4 这样的大模型,强项在于理解、推理、总结和生成流畅的语言。信息检索 (IR)像搜索引擎里的技术,强项在于从海量信息中精确地找到最相关的内容。随着大型语言模型的参数量呈指数级增长,一个根本性的问题出现了,如果试图把全世界所有的知识都塞进一个大模型的“大脑”(参数)里,成本会高到无法承受,而且模型一旦训练好,知识就“过时”了,无法更新。而RAG就是它不把所有知识都硬塞给模型,而是将海量的、需要经常更新的知识存放在一个外部的、成本低廉的“图书馆”(如向量数据库)里,利用BM25对于需要精确匹配的专有名词、代码等非常有效。利用现代语义搜索理解模糊的、概念性的问题。当需要回答问题时,模型会先去这个“图书馆”里查找最新的、最相关的资料,然后再利用自己的推理和总结能力,生成最终答案。所以,它让大模型不必成为一个死记硬背所有知识的书呆子,而是变成一个懂得如何利用外部图书馆来获取最新信息,并在此基础上进行深度思考和回答的天才

第二章:RAG的正式化——知识密集型NLP的范式转移

2020年,由Patrick Lewis及其同事发表的论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》正式提出并命名了RAG框架,标志着一个新范式的诞生。

2.1 Lewis等人的技术深潜:开创性的RAG论文

这篇由Facebook AI(现Meta AI)研究人员发表的论文,其核心贡献是提出了一个“通用的微调秘方”(a general-purpose fine-tuning recipe)。该秘方旨在将一个预训练的参数化记忆(Parametric Memory)与一个非参数化记忆(Non-parametric Memory)相结合。

举个例子,比如说咱们要参加一场开卷考试,考试的题目是论述题,请分析并总结量子纠缠的最新研究进展。

答题前

首先看到考题的时候,参数化记忆就像是我的大脑,已经背下来的知识,这些知识已经内化成了你的一部分(存储在模型的“参数”里)。它的优点是反应快,随时能调用。缺点是知识有上限,而且可能会记错或忘记细节。这就是seq2seq模型,它本身就是一个知识渊博的“大脑”。

另外一个是,非参数化记忆 ,就像是带进考场的参考资料,这是考试允许你带的外部资料,比如一整本《量子物理学》教科书或者一叠最新的学术论文(在RAG论文里,这就是维基百科)。这些知识不储存在你的大脑里,而是放在外部,需要时可以去“查阅”。它的优点是信息量巨大、准确且可以随时更新(比如换一本新版的书)。缺点是查找信息需要时间。这就是外部知识库

但是现在我们应该如何利用好这个参考资料,将检索到的文档视为一个潜变量 (Latent Variable)

当我们看到“量子纠缠”这个题目后,迅速在你的参考资料(非参数化记忆)里翻找。你不会只找一篇文章,而是找到了5篇看起来都相关的论文。那么问题来了,哪一篇才是“正确”的答案来源?

老旧的、死板的方法(非RAG)会先判断出“嗯,第3篇最相关!”,然后把你所有的论述都完全基于第3篇文章来写。如果判断失误,或者答案其实需要结合第1篇和第3篇,你的最终得分就会很低。这是一个“先检索,后生成”的僵化流水线。而RAG有一个更聪明的方法(潜变量思维),就是并不要立刻决定哪一篇是“唯一正确”的。你的大脑里会进行一个快速的、模糊的概率评估。这个“不确定的、隐藏的正确答案来源”,就是所谓的潜变量,你就会开始琢磨了,根据我的知识判断,论文1 看起来有70% 的可能性对解题有用。论文2 只有10%的可能性。而论文3有90%的可能性非常关键。

答题中

接下来,我们写的每一句话,都不是只看着某一篇文章写的,而是在脑海中“融合”了所有高可能性资料的结果。

这就是“边际化 (Marginalization)”的通俗理解:进行加权求和,融合多种可能性。

而不是考虑单一来源,如果我只看了论文1,这句话我可能会这么写,但是如果我看了论文3,我可能会从另一个角度写,但是加权融合也就是边际化,其实都是通过我们看了三篇论文之后,做了平衡之后的结果,

最终的句子 = (90%权重 * 按论文3的写法) + (70%权重 * 按论文1的写法) + (10%权重 * 按论文2的写法) + …

通过这种方式,答案综合了所有相关资料的精华,而不是死守着一篇。即使最重要的那篇论文(论文3)缺少某个细节,你也能从论文1中把它补充进来。这让你的答案更全面、更准确。

答题后(考试结束)

老师批改试卷,也就是模型训练的过程。如果是老旧的、死板的方法, 老师会分两步给你打分。第一步,评估你“挑选参考资料”的能力(单独训练检索器)。第二步,在你选定的资料基础上,评估你的“写作能力”(单独训练生成器)。这两个环节是脱节的。

但是RAG更聪明的方法(端到端训练)是老师只看你的最终答案。如果你的论述非常精彩(最终输出正确),他就给你一个高分。这个“高分”会同时奖励你整个答题流程,既奖励了你的写作能力(生成器),也奖励了你挑选和融合资料的能力(检索器)

反之,如果你答案错了,这个差评也会同时传递给你整个流程,让你自己去反思,到底是查资料的环节错了,还是写作的环节错了?模型会在下一次训练中,自动地、同步地调整这两个部分。

端到端 (End-to-End) 的优势在于,我们不再需要告诉模型,应该看哪篇,不该看那篇。而是,我们只需要给它最终的正确答案,它就能自己学会如何去寻找信息、如何去利用信息,整个过程一气呵成,大大降低了训练的复杂度和成本。

2.2 架构创新:参数化与非参数化记忆的结合

Lewis等人的RAG架构由明确定义的组件构成,这些组件协同工作,实现了知识的动态融合 。

为了完成一项复杂的报告任务,我们组建了一个精英团队。这个团队由两名核心成员组成:

一名图书管理员(检索器)和一名首席作家(生成器)

这位图书管理员负责从一个巨大的图书馆(知识库,如维基百科)中,快速、精准地找出与报告主题最相关的资料。

他的核心技能:

DPR (Dense Passage Retrieval)。Dense 意味着他理解的是语义(Meaning),而不是简单的关键词匹配。他能理解“美国总统的官邸”和“白宫”说的是一回事,即使字面上完全不同。

他的工作流程:

  1. 前期准备 (Encoding – 编码):在接到任何任务之前,图书管理员会进行一项浩大的准备工作。
  2. 文档编码器 (Document Encoder):他会阅读图书馆里的每一本书、每一篇文章,并为每一篇写下一张“内容摘要卡”。这张卡片非常特殊,它不是用文字写的,而是用一种独特的含义代码(即向量)来表示。最终,他建立了一个包含数百万张含义代码卡的目录册,这个目录册就是文档向量索引。
  3. 查询编码器 (Query Encoder):当报告任务(用户问题)下达时,他会先让查询编码器把这个问题也转换成完全相同格式的含义代码
  4. 执行任务 (Searching – 检索):现在,他手上有一张代表问题的含义代码卡,和一整个目录册的图书摘要代码卡。
  5. 最大内积搜索 (MIPS):这是一个听起来复杂但原理很直观的技术。你可以把它想象成一个磁力匹配系统。问题代码卡和图书代码卡都是特制的磁铁。MIPS系统能瞬间测算出,目录册中哪些图书卡片的磁力(内积)与问题卡的磁力最相吸。
  6. 最终,他会把磁力吸引最强的前K个(比如Top-5)图书资料找出来,交给首席作家。
  7. 接下来就到了作家(BART模型),负责将用户最初的问题和图书管理员找来的资料,最终撰写成一份通顺、准确的报告。他是一位拥有4亿“脑细胞”(参数)的语言大师。他非常擅长理解上下文(双向-Bidirectional),并能一个词一个词地(自回归-Auto-Regressive)生成优美的句子。他的任务是接收两样东西:原始问题图书管理员找来的资料,然后基于这两者,写出最终的答案。

现在,团队的两位核心成员已经就位。但是,根据报告任务的复杂程度,他们有两种不同的协作模式。

RAG-Sequence (专注单一信源模式)

这种模式适用于那些答案往往包含在单一、连贯的文档里的任务。比如“请介绍一下埃菲尔铁塔的历史”。

工作流程:

  1. 图书管理员找到了5篇最相关的文章。
  2. 先拿出第1篇文章,对作家说:“请你只根据这篇文章,完整地写一份报告草稿。”作家完成了一份草稿A。
  3. 然后,他收回第1篇,拿出第2篇文章,说:“现在,请你忘掉刚才的,只根据这一篇,再写一份独立的完整草稿。”作家完成了草稿B。
  4. 这个过程重复K次(比如5次),最终得到5份独立的报告草稿。
  5. 最后,团队会对这5份草稿进行评估和融合,得出一份最终报告。融合时,源自更相关文章(比如磁力最强的那篇)的草稿会占有更高的权重。

特点: 结构简单,思路清晰。每次写作都只聚焦于一个信息源,确保了内容的连贯性。

RAG-Token (灵活多源融合模式)

这种模式更强大,适用于需要综合多个信息源才能形成的复杂答案。比如,请比较并总结二战期间,同盟国在欧洲和太平洋战场的不同战略重点。

工作流程:

图书管理员找到了5篇最相关的文章,一次性全部摊在作家的桌子上

作家开始写报告,但他不是一篇一篇地看,而是一个词一个词地写 (Token by Token)

在写第一个词时,他会快速浏览桌上所有的5篇文章,思考一下,综合所有信息后,决定哪个词作为开头最好。

在写第二个词时,他会再次快速浏览所有的5篇文章,并结合自己刚刚写下的第一个词,来决定第二个词应该是什么。

这个过程在生成每一个词元(token)时都会重复。作家在整个写作过程中,始终保持着对所有相关资料的“全局视野”,在每一步都动态地、灵活地从中汲取最需要的信息。

其中的特点就在于,能够将来自不同来源的碎片化信息,天衣无缝地融合在一个连贯的答案中,非常适合处理复杂的、需要综合分析的问题。

OK,我们简单了解RAG的工作原理之后,会发现在RAG之前,大型语言模型在很大程度上是“黑箱” 。它们的知识被固化在数十亿个不透明的参数中,其决策过程难以解释。RAG通过将知识源外化,从根本上改变了这一状况。它创造了一个本质上更加透明和可验证的系统。

用户原则上可以检查模型引用的外部文档,以核实其生成内容的真实性。论文本身也强调了这一点,认为RAG提供了更强的可控性和可解释性,并重新定义了AI的标准:一个模型不仅要能生成看似合理的答案,更要能为其答案提供可追溯的证据支持。这对RAG在企业环境中的应用至关重要,因为在这些场景下,可审计性、可靠性和信任是不可或缺的。

第三章:现代RAG系统剖析

对当今典型的RAG系统进行解构,详细分析其通用的架构组件和工作流程。

3.1 核心流水线:分步解析

一个现代RAG系统的工作流程可以清晰地划分为两个主要阶段,离线索引阶段和在线推理阶段。这种划分体现了系统如何预处理知识以及如何在接收到用户请求时实时响应。

索引(Indexing)- 离线阶段:

这是知识库的预处理阶段,目标是创建一个高效、可搜索的知识索引。该阶段通常在后台一次性或周期性地完成,包括以下步骤:

加载(Load):从各种数据源(如文件系统、数据库、API)加载原始数据。

分割(Split):将加载的长文档(如PDF、网页)分割成更小的、语义完整的文本块(Chunks)。这一步至关重要,因为LLM的上下文窗口有限,且在较小的、主题集中的文本块上进行检索更为精准。

嵌入(Embed):使用嵌入模型(Embedding Model)将每个文本块转换成一个高维的数字向量(Vector Embedding)。这个向量捕捉了文本块的语义信息。

存储(Store):将生成的文本块向量及其对应的原始文本内容存储到一个专门的向量数据库(Vector Store)中,并为这些向量建立索引,以便进行快速的相似性搜索。

检索与生成(Retrieval and Generation)- 在线/推理阶段:

这是当用户提交查询时,系统实时执行的阶段,其目标是生成一个基于知识的、准确的回答:

  • 检索(Retrieve):接收用户查询,使用与索引阶段相同的嵌入模型将其转换为查询向量。然后,利用该查询向量在向量数据库中进行相似性搜索,找出与查询语义最相关的Top-K个文本块。
  • 增强(Augment):将检索到的这些文本块作为上下文信息,与用户的原始查询组合在一起,形成一个“增强提示”(Augmented Prompt)
  • 生成(Generate):将这个增强提示输入到大型语言模型(LLM)中。LLM基于其自身的语言能力和新提供的上下文信息,生成一个最终的、人类可读的、且有事实依据的回答。

3.2 组件深度解析:RAG的构建模块

一个功能完备的RAG系统由多个协同工作的核心组件构成。

数据源(Data Sources):

RAG的能力很大程度上取决于其能够访问的知识。现代RAG系统可以处理多种类型的数据,包括:

  • 非结构化数据:如PDF文档、Word文件、网页、纯文本等,这是最常见的数据源 。
  • 结构化数据:如SQL数据库中的表格、知识图谱(Knowledge Graphs)等。通过特定技术(如Text-to-SQL),RAG可以查询这些结构化数据源
  • 半结构化/多模态数据:如包含图片、表格和文本的复杂文档,甚至独立的图片和视频文件。

数据加载与分块(Data Loading & Chunking):

这是RAG流水线的起点。分块是将长文档切分成小块的过程,其重要性体现在:

1)适应LLM有限的上下文窗口;

2)提高检索的相关性,因为小块通常主题更集中。但是分块也会有弊端,不恰当的分割可能会破坏原文的语义完整性,例如将一个完整的表格或一段连续的论证切开,从而影响后续步骤的质量 。

嵌入模型(Embedding Models):嵌入模型是RAG系统的“翻译官”,负责将文本信息转换为机器可以理解的数学形式,也就是我们之前讨论的向量。其核心作用是捕捉文本的语义含义。为了保证查询和文档在同一个语义空间中进行比较,索引文档和编码查询必须使用同一个嵌入模型。业界有许多成熟的嵌入模型可供选择,例如OpenAI的 text-embedding系列和NVIDIA的NV-embed系列。

向量存储/数据库(Vector Stores/Databases):这些是为存储和高效查询高维向量而专门设计的数据库。与传统数据库不同,它们的核心能力是执行近似最近邻(Approximate Nearest Neighbor, ANN)搜索

举个例子,现在面临一个巨大的挑战:图书馆里有数百万甚至数十亿本书。要如何才能快速找到离你最近的那几本?

如果是精确查找(最近邻,Nearest Neighbor, NN)是最笨但最准确的方法,拿出尺子,测量你和图书馆里每一本书的距离,然后比较,找出最近的。这就是“精确查找”。它的结果100%准确。但它的问题是致命的:当书的数量达到百万、亿级别时,逐一测量会花费几分钟甚至几个小时。在需要实时问答的RAG应用里,这是完全不可接受的。

现在变成,聪明地查找(近似最近邻,ANN)为了实现“秒级”响应,向量数据库采用了一种更聪明的策略,比如说,我们在找书之前先做好了导览图,按照区域去找,你找到的是不是全馆最精确、最贴近你的那一本书?不一定!也许最贴近的那本书恰好就在你没检查的邻近区域的边界上。但你找到的书,也已经是“非常非常近”(比如全馆第二近或第三近)的了。对于问答任务来说,这种程度的精度已经完全足够。ANN的本质:牺牲一点点“绝对的精确性”,来换取成千上万倍的“查询速度”。这就是近似最近邻 (ANN) 搜索。“近似”这个词是精髓,它代表了一种效率与精度的权衡。

所以最终结果就是能够在大规模数据集上快速找到与查询向量最相似的向量。流行的向量数据库包括Pinecone, Milvus, Chroma, Weaviate等。

3.3 首要任务:缓解幻觉与增强事实基础

RAG架构的设计初衷,正是为了解决标准LLM存在的几个根本性问题。

待解决的问题定义

  • 幻觉(Hallucinations):指LLM在缺乏相关知识时,会编造听起来合理但实际上是错误或虚构的信息。这是LLM最受诟病的问题之一。
  • 知识截止(Knowledge Cutoff):LLM的知识是静态的,仅限于其训练数据截止的那个时间点。它对之后发生的新事件、新发现一无所知。
  • 缺乏领域/专有知识:通用的基础模型没有经过企业内部的、私有的数据训练,因此无法回答与特定组织或专业领域相关的问题。

RAG作为解决方案:

RAG通过一个核心机制来应对这些问题:事实接地(Factual Grounding)。它强制LLM的生成过程必须从外部检索到的、可验证的、最新的事实为基础,而不是仅仅依赖其内部固化的参数化记忆。这种机制带来了多重好处:

  1. 通过提供准确的上下文,显著降低了幻觉的发生率
  2. 通过连接到可实时更新的知识库,克服了知识截止的问题
  3. 通过安全地访问私有数据库,使得LLM能够利用专有知识,同时保护数据隐私。

从系统层面看,RAG的性能表现如同一条环环相扣的链条,其最终强度取决于最薄弱的一环。

一个顶级的生成器(LLM)也无法弥补由糟糕的检索器提供的劣质上下文所带来的缺陷。同样,一个完美的检索器,如果其所依赖的知识库在最初的分块阶段就存在致命缺陷(例如,将关键信息分割在两个不相连的文本块中),那么它也无能为力。

知识库中内容缺失、检索器未能找到相关文档、检索到的文档在整合时被忽略,或是最终LLM未能从提供的上下文中正确提取答案,这些问题都有可能发生。这表明,构建一个高性能的RAG系统,并不仅仅是一个“LLM优化问题”,而是一个复杂的“系统工程问题”。

所以一个团队想要做好RAG,需要对从数据清洗、摄取到最终生成输出每一个环节都非常清楚的开发团队,不仅需要懂提示工程,还需要数据工程和信息检索。

第四章:RAG范式的演进轨迹

自2020年诞生以来,RAG技术经历了飞速的迭代和发展,以应对日益复杂的应用需求。其演进路径可以清晰地划分为三个主要阶段:初级RAG(Naive RAG)、高级RAG(Advanced RAG)和模块化RAG(Modular RAG)。这一演进过程反映了该领域从简单的概念验证到复杂的生产级系统的快速成熟过程。

RAG范式演进对比

4.1 初级RAG:奠基性的“检索-阅读”模型

初级RAG,或称朴素RAG,是RAG最基础的实现形式。它严格遵循一个简单的、线性的“索引 -> 检索 -> 生成”流水线,不包含任何高级的优化策略。这与Lewis等人最初提出的概念模型基本一致。

其流程非常直接。当用户输入一个查询时,系统就会开始将查询编码为向量。在向量数据库中进行一次相似性搜索,检索出Top-K个最相关的文本块。将这些文本块与原始查询拼接成一个增强提示。最后该提示送入LLM以生成最终答案。

同样弊端也很明显。随着其在更复杂场景中的应用,检索质量低,检索到的文本块可能与查询只有表面的关键词重合,但语义上并不相关,引入了大量噪声。与此同时,由于检索质量不高,生成阶段也随之受到影响。生成的答案可能重复冗余、逻辑不连贯,甚至在检索到的信息充满噪声或不足时,仍然会产生幻觉。

4.2 高级RAG:多管齐下的优化方法

简单说来,高级RAG就是在传统的“先搜索、后回答”模式的基础上,增加了一些“准备”和“加工”的步骤,让结果更靠谱。

这主要分为两大步:

优化搜索的“原材料”

这一步是在搜索之前,先把我们的知识库和用户的问题变得更好用。

优化知识库(索引优化):不是简单地把文章切成一段一段,而是**智能分段 (语义分块),**按意思来切分文章,保证每一段话的意思都是完整连贯的,而不是在句子中间断开。

在给文档贴标签 (元数据与层次化索引),给每一段内容加上作者、日期、章节等标签。搜索时可以先按标签筛选,或者先搜一个“内容摘要”,找到相关的长文章后,再到文章内部去找具体段落。这就像先通过看书的目录找到章节,再去看具体内容一样高效。

优化用户提问(查询转换):把用户可能模糊的问题,变得更清晰、更适合机器搜索。

帮用户把问题问得更好 (查询重写):用AI模型把用户的简单提问,改写成一个更具体、更标准的问题。比如,你问“RAG有啥缺点?”,系统会自动帮你改成“检索增强生成系统在实际应用中,主要有哪些技术挑战和限制?”这样更容易搜到精准答案。

让AI“猜”一个完美答案 (假设性文档嵌入):这个方法很巧妙。系统不直接搜索你的问题,而是先让AI根据你的问题,“想象”并生成一个最完美的答案(一个“假”的文档)。然后,系统拿着这个“假想的完美答案”去知识库里找最相似的真实文档。因为这个假想答案和真实答案在意思上会非常接近。

后置检索策略:精炼上下文

这些策略发生在检索之后、生成之前,目标是对检索到的初步结果进行筛选和提纯,为LLM提供最高质量的上下文。

重排序(Re-ranking):这是一个两阶段的过滤过程。首先,一个快速但相对粗糙的检索器(如向量搜索)从海量文档中召回一个较大的候选集(例如Top 50)。然后,一个更强大、更复杂但计算成本也更高的模型(通常是交叉编码器 Cross-encoder)会对这个小规模的候选集进行二次打分和排序,以找出真正最相关的几个文档。交叉编码器能够同时处理查询和文档,从而进行更深层次的相关性判断,其精度远高于双编码器 21。

上下文压缩/选择(Context Compression/Selection):在将检索到的内容送入LLM之前,主动对其进行压缩和筛选。这包括移除与查询无关的句子或段落,或者对多个文档进行摘要,以去除噪声和冗余信息。这样做的好处是双重的:一是帮助LLM聚焦于最关键的证据,避免“信息过载”;二是可以有效管理输入LLM的token数量,防止超出其上下文窗口限制 22。

4.3 模块化RAG:迈向可组合、灵活且可扩展的架构

模块化RAG不仅是一系列技术的集合,更代表了一种根本性的系统设计范式转变。它将原本线性的RAG流水线分解为多个独立的、可插拔的、可独立优化的功能模块,如检索、推理、记忆和生成等。

核心组件与概念

  • 搜索模块(Search Module):这不再是一个单一的检索器,而是一个可以集成多种检索策略(如向量搜索、关键词搜索、知识图谱搜索)的复合模块。它甚至可以包含一个“查询路由器”(Query Router),根据查询的类型和意图,智能地将其分发给最合适的检索方法。
  • 推理模块(Reasoning Module):该模块可以执行更复杂的操作,例如将复杂问题分解为多个子问题(Query Decomposition),然后进行迭代式检索(Iterative Retrieval),即根据第一轮检索的结果生成新的查询,进行多轮检索,模拟人类的研究过程。
  • 记忆模块(Memory Module):该模块可以集成对话历史记录,使RAG能够处理多轮对话。更高级的实现甚至可以利用LLM自身生成的内容作为一种“自记忆”(Self-memory),在后续的生成中加以利用,从而实现持续学习。
  • 融合/合并模块(Fusion/Merging):当系统通过多查询或多源检索获得了多个结果集时,需要一个智能的模块来合并这些结果。例如,RAG-Fusion技术利用重排序算法来整合来自多个子查询的结果,以提高最终检索的鲁棒性。
  • 反馈循环(Feedback Loops):模块化架构使得引入反馈机制变得更加容易。例如,可以利用用户的隐式反馈(如点击)或显式反馈(如评分),通过强化学习(如RLHF)来持续优化检索模块或生成模块的性能。

这里先做个总结,初级RAG好比一个简单的、单体的Python脚本,足以完成一个功能演示。高级RAG则像是在这个脚本中加入了特定的库和函数来优化性能。而模块化RAG,则代表了向基于微服务的理念的飞跃。每个组件(检索、重排、生成)都被视为一个独立的、可独立部署和扩展的服务,它们之间通过定义清晰的API进行通信。

第五章:下一代RAG架构

5.1 Agent自适应RAG:自主多步推理的曙光

当前RAG的主流范式仍是一个线性的流水线,而被动地响应用户的单次查询。未来的一个重要演进方向,是从这种被动的“流水线”模式转变为主动的“代理式RAG”(Agentic RAG)模型。

从流水线到Agent

在代理式范式中,LLM的角色发生了根本性的转变。它不再仅仅是流水线的终点(生成器),而是成为了一个能够进行规划、推理和决策的自主Agent(Autonomous Agent)。检索系统则从一个固定的处理环节,转变为代理可以按需调用的“工具”(Tool)。

可以把新一代的RAG系统想象成一个从“初级员工”升级为了“高级专家”的AI。这个“专家”有三个核心的专业能力:

迭代式推理与检索 (Iterative Reasoning and Retrieval)

这改变了过去“一问一搜一答”的简单模式。现在,AI面对一个复杂问题时,更像一个策略分析师在做深度研究

工作模式:它会先将大问题分解成若干个逻辑子问题。接着,它进行第一轮检索,然后基于初步获得的信息,动态地生成更精准的新查询,进行第二轮、第三轮的探索,层层递进。

专业价值:这种迭代循环的能力,让它能处理那些信息交错、单次搜索无法覆盖的复杂或模糊查询,逐步逼近最全面的答案。

动态工具使用 (Dynamic Tool Use)

在这里,Agent(智能代理)扮演了一个智能任务调度员的角色,拥有了自主决策权。

工作模式:它能根据问题的具体性质,实时判断应该调用哪个工具。比如,它会分析是应该查询内部的向量数据库,还是需要连接SQL数据库提取结构化数据,抑或是必须执行一次网络搜索来获取最新动态。

专业价值:这体现了系统的灵活性和资源优化能力。它不再局限于单一知识源,而是能整合并调用最合适的工具来完成任务,大大拓宽了其应用场景和解决问题的上限。

自我校正与反思 (Self-Correction and Reflection)

这相当于为系统内置了一套“元认知”和“质量控制”机制。

工作模式:在检索和推理的过程中,它会持续评估自己找到的信息质量。如果判断当前信息关联性不强,或者不足以形成高质量的回答,它能够主动“叫停”并“反思”,然后尝试一种全新的检索策略或换用其他工具。

专业价值:这极大地提升了系统的鲁棒性 (Robustness),避免了在错误或低效的路径上“一条路走到黑”,实现了动态的自我优化和纠错。

5.2 多模态与图增强RAG:超越文本的知识边界

RAG系统将不再只是一个“文本处理专家”,它正在进化,学习如何看懂、听懂、并理解事物之间复杂的关系。

多模态RAG (Multimodal RAG):让RAG拥有“五感”

这个方向的核心是让RAG打破文本的次元壁,能够理解和关联图片、声音、视频等多种类型的数据

工作原理:它依赖于一种叫做“多模态嵌入模型”的技术。你可以把这个模型想象成一个“通用翻译器”,它能把一张图片的内容、一段话的意思、甚至一段音频的含义,都翻译成一种通用的“数学语言”(即映射到共享的向量空间)。这样一来,不同类型信息的可比性就打通了。

专业价值:这使得“跨模态检索”成为可能。

举个例子,比如:你可以用文字提问“给我看所有关于‘骨裂’的X光片”,系统能直接理解并找出相关的医学影像。更进一步,系统可以像一个专家小组一样,同时分析患者的X光片(图像)、电子病历(结构化数据)和相关医学文献(文本),最终综合所有信息,生成一个更全面、更可靠的诊断建议

图增强RAG (GraphRAG):赋予RAG“逻辑推理脑”

这个方法引入了知识图谱 (Knowledge Graphs, KGs),为RAG装上了一个结构化、逻辑化的“大脑”,用它来补充甚至替代传统的文本库。

知识图谱是什么?:它不是一堆杂乱的文档,而是一个由“实体-关系-实体”构成的巨型关系网络。比如,“汤姆·汉克斯”是一个实体,“《阿甘正传》”是另一个实体,“主演”就是它们之间的关系。所有知识都以这种清晰、明确的方式连接在一起。

相比传统文本检索,GraphRAG有两大核心优势

足够精确:知识图谱中的事实是结构化的,就像数据库里的条目一样清晰,没有文本中常见的模糊和歧义。检索结果因此变得极其精准。

多跳推理 (Multi-hop Reasoning):这是它最强大的能力。当回答一个问题需要串联多个事实时,GraphRAG可以在这个“关系网络”上进行“跳跃”,从而发现深层的、间接的联系

比如你问“哪位导演执导了由汤姆·汉克斯主演、并且获得了奥斯卡最佳影片的电影?”

它的推理路线就是系统会从“汤姆·汉克斯”这个点出发,找到所有他“主演”的电影(第一跳),然后从这些电影中筛选出“获得奥斯卡最佳影片”的那些(第二跳),最后再顺着这条线找到对应电影的“导演”(第三跳)。这种“连接零散信息点”的推理能力,对于从海量数据中挖掘隐藏关系至关重要。

最后做个总结

首先,我们可以达成一个共识:RAG(检索增强生成)已不再仅仅是一个巧妙的技术工具,它已经演变为现代AI应用,尤其是企业级AI的核心支柱。它的发展历程,清晰地揭示了整个AI领域的一个重要转向:我们正从对“更大模型”的单一崇拜,转向构建“更智能、更高效的混合式系统”

RAG的核心价值在于,它通过将知识“外挂”的方式,成功地让大模型在应用中变得更精准、可控、可信,且成本更优

未来发展的几点思考:

基于当前进展,以下几个方向不仅是RAG未来的研究焦点,更是值得我们深入思考的战略性问题。

思考点一:RAG系统的“成本与收益”如何平衡?

随着代理式RAG(Agentic RAG)的出现,系统变得空前强大,能够进行复杂的推理和多步操作。但这立刻带来了一个现实的权衡问题:

智能的代价是什么? 更复杂的推理链条,必然意味着更长的响应延迟和更高的计算成本。

我们该如何抉择? 未来的挑战在于,如何设计一个自适应的控制系统,使其能根据任务的重要性和复杂度,动态地在“极致智能”与“经济高效”之间找到最佳平衡点。这不仅是技术问题,更是决定其能否大规模商业化应用的关键。

思考点二:如何跨越模态的鸿沟?

多模态RAG的目标是让AI能像人一样,综合处理文本、图像、数据等多种信息。但真正的挑战在于:

如何实现深度融合? 当前的技术更多是“拼接”不同来源的信息。未来的突破点在于,如何让模型真正理解并推理不同模态信息之间的深层关联,从而产生1+1>2的“知识涌现”?

例如,系统不仅是找到设计图纸和销售报告,而是能理解图纸上的某个设计变更,是如何导致了销售报告中的负面反馈。

https://www.numberanalytics.com/blog/future-of-open-domain-question-answering

https://www.forbes.com/councils/forbestechcouncil/2025/06/23/how-retrieval-augmented-generation-could-solve-ais-hallucination-problem/

https://blogs.nvidia.com/blog/what-is-retrieval-augmented-generation/

https://www.ibm.com/think/topics/rag-techniques

本文由 @胡泊Hubo 原创发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!
专题
36543人已学习30篇文章
大数据时代已经到来,越早进入,越有优势。
专题
20277人已学习13篇文章
本专题的文章分享了产品经理面试题和解答思路。
专题
13459人已学习12篇文章
本专题的文章分享了金融产品经理需要知道的金融基础知识和产品观。
专题
13045人已学习12篇文章
所谓SOP,即标准作业程序,指将某一事件的标准操作步骤和要求以统一的格式描述出来,用于指导和规范日常的工作。本专题的文章分享了SOP创作指南。
专题
12595人已学习12篇文章
广告营销是为了销售产品,既然花了钱当然希望能给产品的销量带来增长。本专题的文章分享了广告营销指南。
专题
56305人已学习20篇文章
产品上线后冷启动怎么做最有效?这是产品经理和运营必须要了解的。