一文讲清!万字详解RAG进阶之路:Post-Retrieval与Generation优化技术,零基础小白收藏这一篇就够了!!
本文详细解析RAG系统的Post-Retrieval和Generation阶段优化技术。Post-Retrieval阶段通过重排(Re-Ranking)和过滤(Filtering)提升检索内容质量,包括无监督/监督重排序及多种过滤策略。Generation阶段聚焦增强模型对检索资料的理解吸收和个性化定制。文章系统介绍了RAG评估方法和业界主流技术栈,展望了从静态流水线向动态智能体演进的趋势,为RA
前言
除此之外还有两个非常重要的问题要回答:在搭建了RAG系统之后,怎么评估它的表现?在看完了这么多高级的RAG系统设计之后,业界实践的现状是什么样的?采用的核心技术包含哪些?
我希望借助这些内容初步展示要“落地RAG”需要注意些什么,以及有一些什么进阶方向。
这篇文章包含以下几个部分:
- Post-Retrieval优化
- Generation优化
- RAG系统评估
- 当前业界RAG的核心技术栈
这篇文章依然会比较长,感兴趣的朋友可以先收藏或者转发~
01.Post-Retrieval(检索后)
在实践中,大家都倾向于让检索的内容尽量“不要遗漏”——而不是把“不要遗漏”和“精炼材料”耦合在一起,导致两个任务都做不好。
因此一次检索往往会返回大量资料,对这些材料进行“深加工”被单独提出来变成了Post-Retrieval环节,这种深加工一般包括对材料的重排(Re-Ranking)和过滤(Filtering)。
Re-Ranking,顾名思义,它在意的是“顺序”,扮演着质量检查员的角色。它会对第一步捞回来的文档进行精细化的逐一审查,然后按照与问题最相关的顺序列队,把最有价值的几个(比如Top 3)放在队伍的最前面,再交给最终的LLM。
一方面“顺序”本来就是给Generator的额外辅助信息;另一方面,研究表明LLM更容易注意到放在开头和结尾的信息,忽略中间的信息,“顺序”研究是为了确保“最需要被关注”的信息,放在最不容易被忽略的位置。
要怎么对材料做重排?要么就是训练一个新的模型(Re-Ranker)去专门承担这个任务;要么就是调用一个现代大语言模型去帮忙甄别;在调用现代大语言模型的时候还可以顺带利用它生成大量的合成数据,或者把它作为“教师模型”蒸馏它的知识。
按照Re-Ranker获得能力的方法,可以把它分为无监督型、监督型。
无监督重排序(Unsupervised Re-ranking):核心特征是完全不依赖任何带标签的训练数据。它们利用的是一个**现成的大语言模型(off-the-shelf LLM)**本身固有的、强大的语义理解能力来直接进行判断。
比较典型的例子是In-Context RALM。
对于Retriever返回的每一个文档D,它都会将问题Q和文档D拼接起来,然后输入给一个现成的LLM,让LLM计算生成这个问题Q的概率P(Q∣D)。
其背后的直觉是:如果一份文档D能让这个问题Q看起来非常“自然”、非常“合理”(即生成概率很高),那么这份文档D大概率就是一份很好的参考资料。最终,所有文档就按照这个生成概率从高到低排序。
有监督重排序(Supervised Re-ranking):依赖大规模、高质量的标注数据集(例如MS MARCO,一个专门用于问答和排序任务的数据集)来专门训练一个重排序模型。
典型的例子有以下几种:
打分法:这类模型学习的目标是“对文档的相关性打分”。
Re2G(基于BERT的模型): 它采用的是经典的交叉编码器(Cross-Encoder) 架构。将问题Q和文档D以“[CLS] Q [SEP] D [SEP]”的形式拼接后,输入给BERT模型。BERT会对这两个文本进行深度信息交互,最终通过[CLS]这个特殊标记对应的输出向量来预测一个单一的相关性分数。
这种模型必须在像MS MARCO这样成千上万的标注样本上进行训练,才能学会如何准确地输出相关性分数。它的能力完全来自于这些标注数据的“监督”,是典型的有监督方法。
生成法: 这类模型学习的目标是“生成”,把“排序任务”巧妙地转换为了“生成任务”;排序是在“生成”过程中获得的产品。
T5风格的Re-Ranker: 当输入(查询,相关文档)时,会生成一个特定的词,比如"true";当输入(查询,不相关文档)时,生成"false"。在重排时,哪个文档让模型生成"true"的概率最高,哪个就排在最前面。
FiD-Light:它没有一个独立的、显式的“排序”步骤。排序结果是从其“内部的注意力分数中”间接推断出来的。
具体来说,模型在被训练生成答案时,也被要求同时生成一个**‘来源序列’**,明确指出答案中的每个部分信息来自于哪篇原始文档。
因此在重排时,一篇文档在这个‘来源序列’中被引用的频率越高,就被认为越相关,排名也越高。它通过下游任务的实际贡献来反推文档的重要性。
提示法: 它的核心思想是,不再使用一个专门的、小型的“打分”模型(如BERT),而是直接利用像LLaMA这样强大的通用大语言模型, 通过一个巧妙的Prompt设计,高效地对整个候选文档列表进行排序。
RankLLaMA:核心机制是“滑动窗口”配对排序(Sliding Window Pairwise Ranking),它通过一个精心设计的Prompt,让LLM在一次(或极少数几次)API调用中,完成对整个列表的排序。
具体工作流程如下: 系统会从文档列表 [D1, D2, D3, …, DK] 中取出一个小的‘窗口’(例如,D1和D2),将它们与查询Q一起放入一个Prompt中,让LLM判断哪个文档更相关。
然后,窗口向后滑动(例如,处理D2和D3),重复这个比较过程。最终,系统根据所有这些“两两比较”的结果,构建出完整的排序链。
这种方法的好处是直接利用了像LLaMA-3 70B或GPT-4o这样千亿级参数大模型的强大推理能力、世界知识和指令理解能力。对于需要深刻理解和复杂判断的查询,其排序精度通常会超越那些只有几亿参数的、在特定数据集上训练的BERT-style Cross-Encoder。
并且RankLLaMA不需要在任何排序数据集上进行微调,只需要一个设计良好的Prompt就可以直接开始工作。这极大地降低了使用的门槛和工程成本。
Re-Ranking的数据增强: 训练一个顶级的Re-Ranker,最大的瓶颈是缺少海量的、高质量的“人工标注”训练数据。为了解决这个问题,我们可以利用大语言模型(LLM)自身的能力,自动地、大规模地“创造”出训练数据或“伪标签”。这种“无中生有”的过程,就是数据增强。通过给Re-Ranker喂养这些更丰富、更多样的“合成”数据,可以显著提升其性能。
典型的例子可见:
DKS-RAC:它引入了更丰富的“答案”信息来帮助训练。
DKS在评估一个候选文档D的相关性时,不仅计算Query和D的向量相似度,它还会计算Gold_Answer(标准答案)和D的向量相似度。
RAC则重新训练(或微调)一个Retriever模型,让它去完成一个新任务:预测在给定“查询”和“候选文档”的条件下,生成“标准答案”的概率有多高,即P(Answer|Query,Document)。这个概率值,本身就成了一个非常高质量的“伪相关性分数”。
PROMPTAGATOR: 利用文档反推问题。它会拿来一篇已有的文档D,然后利用一个强大的LLM,反向生成出多个可能指向这篇文档的问题Q1,Q2,Q3…。这样,就凭空创造出了大量新的(Q1,D),(Q2,D)…训练样本。
除了重排之外,还有一种思路就是要把筛选出来的资料进行“过滤”,过滤的目的是快速剔除掉那些完全不相关、质量低下或者不符合特定条件的文档,以减轻后续、更昂贵的生成模块的负担。
从“过滤”动作发生的“环节”,可以把“过滤”技术分为:内部过滤、外部过滤、动态过滤和综合过滤几个类别。
内部过滤: 指利用下游的Generator模型来进行过滤,不引入其他模块。
Self-RAG: 利用大模型构建了“自我反思”的过滤机制。
具体而言,它首先进行并行生成与反思。面对一个问题,先检索回一组(比如5篇)候选文档。它不会先过滤再生成,而是并行地为每一篇文档都生成一个初步的答案。
接着生成“反思词元”(Reflection Tokens)。在生成每个初步答案的同时,模型会被训练去输出一些特殊的“反思词元”,来对自己进行“打分”和“评价”。这些词元主要回答以下几个问题:
[Is_Relevant]:这篇文档和问题相关吗?(Yes/No/Ambiguous)
[Is_Supportive]:我生成的这个答案,是否完全被这篇文档支持?(Fully/Partially/No)
[Usefulness]:这个答案的有用性如何?(1-5分)
最后,依据反思词元执行过滤:它会直接抛弃那些被标记为[Is_Relevant:No]或[Is_Supportive:No]的路径,只保留质量最高的那个或几个路径来形成最终答案。
**BlendFilter:**直接利用提示词来让大模型对检索材料进行过滤。
BlendFilter会先通过三种方式“增强”原始查询,再使用三种查询,分别去知识库中进行检索,得到三组不同的候选文档。
BlendFilter会将这三组文档送入LLM。LLM的任务不是生成答案,而是执行一个过滤指令,例如:“请评估以下文档列表,移除所有与问题‘X’不相关或用处不大的文档。”
LLM会输出一个经过它“审查”后、更干净、更相关的文档子集。最后,系统再用这个经过LLM过滤后的“精华”文档集来生成最终答案。
外部/结构化过滤:这类方法明确地引入了一个外部的、独立的模块(通常是另一个模型),或者通过改变数据结构的方式,来专门负责过滤任务。
**RECOMP:**思想是“压缩即过滤”(Compression as Filtering)。与其直接把原始的、冗长的文档喂给LLM,不如先让一个“压缩器”模型把每篇文档的“精华”提炼出来。如果一篇文档毫无精华可言,那它的“摘要”自然就是空的,也就实现了过滤。
系统首先检索回Top-K篇候选文档。
接下来,系统会遍历每一篇文档Di,并将其与原始查询Q一起,送入一个专门的“压缩器(Compressor)”模型(通常是一个经过微调的、小型的Seq2Seq模型,如T5)。
这个压缩器的任务是,为这篇文档生成一个与查询Q高度相关的简短摘要Si。
这个压缩器被训练成,如果它判断文档Di与查询Q完全不相关,它就会生成一个空字符串""作为摘要。
最后,系统将所有非空的摘要S1,S2,…拼接在一起,形成最终的、干净且信息密集的上下文,再送给主LLM进行答案生成。
**CRAG:思想在于“分解-重组”形成精细过滤(Decompose-Recompose Filtering)。不再以“整篇文档”为单位进行判断,而是将文档“打碎”,对更细小的“知识碎片”**进行审查,然后只将有用的碎片重新“拼凑”成一个全新的、高纯度的上下文。
系统检索回Top-K篇候选文档。
将每一篇文档Di分解成更小的、有一定重叠的“知识条(knowledge strips)”(通常是句子或几个句子组成的小段)。
系统使用一个轻量级的、经过微调的相关性分类器(在CRAG论文中,这是一个T5模型),来为每一个知识条打分,判断其与原始查询Q的相关性。抛弃所有分数低于预设阈值的知识条。
通过了审查的、来自不同原始文档的高分知识条,重新组合成一个新的“黄金上下文”。
动态过滤:这类方法的过滤行为不是在生成答案之前一次性完成的,而是动态地、持续地发生在LLM的解码(生成答案)过程之中。
**FiD-TF:**核心思想是在解码的每一步,动态地“剪枝”,让解码器只关注当前最需要的信息。
在解码器正准备生成答案中的第t个词时。在进行完整的、昂贵的多头交叉注意力计算之前,系统会先用一种轻量级的方式(比如,只用一个注意力头或一个简单的打分函数)快速地评估一下K篇文档中的哪些token,对于生成下一个词t是最有帮助的。
系统会**动态地“屏蔽”**掉那些得分极低的、被判定为“此刻无用”的token。
**CoK:**认为LLM对于自己真正“懂”的知识,其回答是稳定和一致的;而对于自己“不懂”或“瞎猜”的知识,其回答则是随机和易变的。可以利用这个特性,来让“疑难问题”进入更复杂的处理流程。
面对一个问题,CoK会让LLM通过**采样(Sampling)**的方式,多次、独立地生成不同的推理路径和答案。比如,生成5个不同的回答草稿。
系统会比较这5个回答草稿,看它们是否指向同一个结论。
- 如果(IF)一致性很高:比如,5个草稿中有4个都得出了完全相同的答案。系统就认为模型对这个问题非常“自信”和“确定”。这个答案被采纳,并且这个问题被**“过滤”掉**,不再需要进行后续更昂贵的检索或修正步骤。
- 如果(IF)一致性很低:比如,5个草稿得出了4个不同的答案。系统就认为模型对这个问题感到“不确定(uncertain)”。
后续处理:只有那些被贴上“不确定”标签的问题,才会被送入CoK后续的、更复杂的“知识修正”环节(通常涉及针对性的检索来填补知识空白)。
综合过滤:这类方法的特点是不依赖某一种单一的、复杂的机制,而是设计并融合了多种不同的、可能较为简单的过滤信号,来构建一个综合的、强大的过滤模型。
FILCO:从三个不同的、互为补充的角度来评估检索到的内容,并利用这些评估结果来训练一个高效的、专用的过滤模型。
它同时使用了三种从简单到复杂的策略来给**“上下文句子”**打分(字符串匹配、词汇重叠、信息增益),从而识别到“最有用的句子”。
它用已有的数据集(包含查询、上下文文档,标准答案),自动化标注形成一个庞大的、带有精细分数标注的训练集,然后用这个训练集去训练“专门为相关性打分的”模型。从而实现快速的“相关性”判断和过滤。
02.Generation(生成阶段)
Generation,这是RAG流程的“最后一公里”。在经历了检索、过滤和重排序等一系列“备菜”工序后,我们终于得到了最优质的“相关资料”,现在到了“生成答案”的时刻。
Generation环节的目的是好好理解吸收“相关资料”,再依据上下文充分调动自己的组织能力,生成连贯、符合逻辑、准确的回答。
- 增强
理解吸收“相关资料”这个环节可以被称为**“增强”**,因为这是一个对已有数据进行处理增强的过程。
与查询结合(Enhance with Query):这是最基础直接的方法。其核心是将检索到的文档和用户问题简单地、直接地融合在一起,然后进行处理。重点在于融合的机制。
In-Context RALM:这是最经典的“大杂烩”做法。它粗暴地将检索到的文档直接拼接到用户问题的前面,形成一个超长的Prompt:[检索到的文档文本]+[用户的原始问题]。然后把这个prompt整个喂给LLM。
**RETRO:它采用了一种名为“分块交叉注意力”(Chunked Cross-Attention)**的特殊机制。
RETRO是一种Transformer模型,是由许多**层(Layers)**堆叠而成的。RETRO的层分为两种类型,并且是交替出现的:
- 标准自注意力层(Standard Self-Attention Layer):在这些层中,模型专注于处理输入的原始文本(即用户的Query)。
- RETRO交叉注意力层(RETRO Cross-Attention Layer):在这些层中,模型被设计用来处理外部信息。
模型的整体架构可能是这样的:[…->自注意力层->自注意力层->交叉注意力层->自注意力层->自注意力层->交叉注意力层->…]
每当数据流在模型中传递到预设的“交叉注意力层”时,查阅动作必然发生,模型综合“查询”和“资料”两种信息。
集成融合(Enhance with Ensemble):这种技术核心在于对多个信息源的“集成”与“融合”。
FiD(Fusion-in-Decoder):这是一个极具影响力的架构。它首先将用户的问题分别与每一篇检索到的文档进行配对,并独立地送入编码器(Encoder)进行处理,得到多个独立的“初步加工品”。然后,在解码器(Decoder)阶段,它将所有这些加工品拼接在一起,让解码器“眼观六路”,综合所有信息源来生成最终答案。
REPLUG:在推理生成时,它会为每一篇检索到的文档,都单独创建一个Prompt(文档+问题
),然后让LLM独立地生成多个候选答案。最后,它会像一个评审团一样,根据每篇文档的初始相关性得分等标准,对这些候选答案进行加权投票或聚合,形成一个最好的最终答案。
反馈循环(Enhance with Feedback):****这类方法在整个生成过程包含了一个或多个迭代式的“反馈-修正”循环。
**PRCA:**它在Retriever和Generator之间建立了一个反馈循环。它会根据生成器产出答案的好坏(ROUGE-L分数等反馈信号),反过来优化和调整应该提供给Generator的上下文内容。
但是要注意这个“循环”是发生在“训练生成上下文的Adapter”阶段,在实际Reference时,因为Adapter都训练完了,就只有一次线性的“检索-加工-生成”流程了。
DSP(Demonstrate-Search-Predict):DSP本质上是一种先进的提示工程(Prompting)框架,它通过在提示词中‘演示’(Demonstrate)如何完成复杂任务,来引导LLM进行多跳推理。
LLM首先生成一个初步的答案或一个需要验证的“断言”;然后,系统会把这个“断言”当作新的查询去检索证据;接着,LLM会根据新证据来修正和优化自己的答案。这个“生成-检索-修正”的过程会不断迭代,直到满足设定的阈值。
Selfmem:模型会先生成一大堆候选的输出,然后根据某种标准(如BLEU/ROUGE分数)自我评估,选出其中最好的一个。这个被选出的“最佳答案”会被存入“记忆”中,作为下一轮生成任务的额外参考。
RECITE:它让模型针对一个问题,从自己的内部知识中生成多次、多样化的“背诵”(Recitations)。然后,通过“自洽性检查”(Self-consistency),比如少数服从多数的投票,来选出最可靠、最一致的答案。
- 定制化
在生成的时候,**个性化定制(Customization)的策略也值得关注,即如何让答案更符合用户的个人特点。**个性化定制的核心思路分为两大类:内容对齐(依据用户的静态画像)和上下文自适应(依据用户的动态行为和偏好)。
内容对齐(Content Alignment):核心思想是让生成的内容与“用户是谁”保持一致。这通常依赖于一个相对静态的、预先定义好的用户画像(Persona Profile)。系统会检索与这个画像相关的信息,并确保回答的风格、口吻、引用的背景故事都符合这个设定好的人物性格。
典型的例子有:
LAPDOG:核心是丰富一个静态的用户画像。它首先获取一份基本的人物简介,然后利用一个“故事检索器”去外部知识库中,查找与这个人物性格、背景相符的趣闻轶事或背景故事。最后,它将这份“基本简介+背景故事”的增强版画像作为核心上下文,来生成更具个性的对话。
LAPDOG的核心价值在于“角色扮演”**。**它适用于所有不满足于简单信息传递,而是追求深度情感连接、角色一致性和对话趣味性的场景。
上下文自适应(Contextual Adaptation):核心思想是让生成的内容实时地适应“用户现在需要什么”。这依赖于对用户动态行为、即时反馈和当前情境的捕捉。
PersonaRAG:采用了一个多智能体(Multi-agent)系统,像一个时刻观察你的“数字助理团队”。这个团队会持续分析你在当前对话中的一举一动:你点击了什么、追问了什么、对哪个答案表示满意等。这些实时的、动态的行为数据会立刻被用来调整和优化下一步的回答。
ERAGent:引入了一个“个性化LLM阅读器”模块。这个模块在生成最终答案时,不仅会考虑检索到的事实知识,还会额外读取并整合用户预先设定好的个人偏好,例如“我是素食主义者”、“我关心环保”、“我只看喜剧电影”等。
ROPG:两种思路的“集大成者”
ROPG的设计非常全面,它将个性化融入了生成前和生成后两个阶段。
生成前(内容对齐):在检索阶段,它会先分析用户画像和当前问题,然后智能地选择最合适的检索策略(比如,是该用关键词检索,还是语义检索,或是最近历史记录检索)。这一步确保了“备菜”环节就已经与用户的静态背景对齐了。
生成后(上下文自适应):在使用不同策略生成了多个候选答案后,它会启动一个评估模型,根据答案本身的质量和与用户当前需求的匹配度,选出最个性化的那个答案。这个选择过程本身就是一种动态的、基于反馈的适应。
03.RAG系统的评估
RAG系统怎么样才算表现得好呢?如果一味的和“标准答案”逐字比较,显然并不能体现出RAG系统的能力,毕竟回答问题的本质是“抓住精髓”,而不是“死记硬背”。
RAG系统的评估方式经历了从“简单”到“复杂”,从“单一”到“体系化”的发展路径。这些评估方法有各自的侧重点,是属于“按照业务场景”组合使用的状态。
我会按照“时间线”来介绍一下都有一些什么评估指标,把“详细的指标含义和计算方式”放在每个阶段后面的图片上。
- 阶段一:“端到端”的黑箱评估时代
核心理念:“只看结果,不问过程”。这个阶段的评估方法非常直接,就是将整个RAG系统看作一个“黑箱”,只关心它在特定下游任务上的最终表现。
- 问答任务(QA):在如SQuAD, Natural Questions, TriviaQA等标准数据集上,计算EM(精确匹配率)和F1分数。
- 事实核查任务(Fact Checking):计算准确率(Accuracy)。
- 对话/摘要任务:计算ROUGE和BLEU分数,衡量与人类参考答案的重合度。
这种端到端的评估方式,就像期末考试只给一个总分。如果一个RAG系统得分很低,我们无法知道问题到底出在哪里。这种评估方式很难指导我们进行针对性的系统优化。
- 阶段二:“解耦式”的白箱分析时代
核心理念:“既看结果,也看过程”。人们不再把RAG看作一个黑箱,而是将其拆解为检索和生成两大模块,并分别对它们进行“体检”。
评估检索质量:
- 引入传统IR指标:Precision@K,NDCG,MRR等,衡量Retriever“找得准”和“排得好”的能力。
- 专门针对RAG的指标:上下文相关性(ContextRelevance)
评估生成质量:
-
传统指标:继续使用EM,F1,ROUGE等指标,但在控制了检索质量的前提下,更能反映Generator本身的信息整合与语言组织能力。
-
专门针对RAG的指标:
-
基础能力:答案忠实度(Answer Faithfulness)、答案相关性(Answer Relevance)。
-
附加能力:Noise Robustness(噪音鲁棒性)、Negative Rejection(拒答能力)、Information Integration(信息整合能力)、Counterfactual Robustness(反事实鲁棒性)
核心创新:自动化与体系化
这个时代最重要的标志,是自动化评估工具的兴起,尤其是**“LLM当裁判”(LLM-as-a-Judge)**范式的普及。
以RAGAS,ARES,TruLens为代表的工具,利用GPT-4等强大模型,实现了对“三大质量分数”的自动化、规模化评估。
同时,更体系化的“四项核心能力”(噪音鲁棒性、拒答能力等)评估框架被提出,并通过RGB,RECALL等专业“考卷”(基准)来进行压力测试。
这种解耦式评估虽然精细,但它依然是基于一个相对静态的“检索-生成”流水线模型。对于那些流程更动态、更复杂的“高级RAG”系统,这种评估方式开始显得力不从心。
阶段三:“一体化”的智能代理评估时代(约2025年及未来):
核心理念:评估“思考”过程,而非孤立环节
随着Self-RAG,DSP,Multi-agentRAG等“智能代理”型RAG系统的出现,RAG不再是一个简单的线性流程,而是一个会思考、规划、迭代、反思的动态系统。这个过程中面临了新的挑战,评估的焦点,也必须随之改变。
新的评估挑战:
- 过程合理性:系统为了回答一个复杂问题,进行了3轮检索。我们不仅要评估最终答案,还要评估它中间生成的每一次查询是否合理?它的“思考路径”是否高效?
- 工具使用能力:当系统(如ROPG)可以选择多种检索工具时,它是否在正确的时机选择了正确的工具?
- 交互与适应性:在多轮对话中,系统(如PersonaRAG)是否能有效利用历史信息?它的个性化调整是否真的提升了用户满意度?
- 成本效益:得到一个好答案,系统总共调用了多少次LLM?总耗时多少?“性价比”如何?
新兴的衡量方法:
- 轨迹评估(TrajectoryEvaluation):不再只看最终答案,而是评估整个任务完成的“轨迹”(Thought-Action-Observation序列),对每一步的决策进行打分。
- 交互式评估(InteractiveEvaluation):在模拟环境或与真人交互中,评估系统在多轮对话中的任务完成率、用户满意度、对话效率等。
- 综合效益评估:引入(质量分/API成本)或(质量分/延迟)等指标,评估系统的综合“效能”,而不仅仅是“效果”。
04.当前业界RAG的核心技术栈
到这里综述的内容差不多就介绍完了,不过看了这么多动态高级的RAG系统设计,我还是非常好奇现在业界日常使用的RAG系统是哪种形态?
于是我要求Gemini老师对于现状进行分析。我看完觉得还是挺有理有据的,狗头,感觉Gemini老师比我聪明多了:
工业界负责在成本、稳定性、可维护性和性能之间做出权衡,将那些已经被验证、足够成熟、性价比高的技术应用到产品中。
所以,现在业界的主流技术栈,更像是学术界1-2年前被验证过的“最佳实践”的集合体。
一个典型的生产级RAG系统,就像一个乐高积木,由以下几个成熟的模块搭建而成:
A.编排与框架(Orchestration & Frameworks)
-
技术选型:LangChain和LlamaIndex。
-
业界现状:这两个框架是绝对的主流。它们提供了标准化的接口,将数据处理、嵌入、检索、生成等所有环节串联起来,极大地降低了开发门槛。绝大多数公司都会基于这两者或其中之一来构建自己的RAG应用。
B.数据处理与向量化(Data Processing & Vectorization)
- 分块(Chunking):最常用的还是固定大小分块或递归字符分块。虽然有更高级的语义分块等方法,但简单的策略因其稳定可控而被广泛使用。
- 嵌入模型(Embedding Models):大家普遍会参考**MTEB(Massive Text Embedding Benchmark)**排行榜。
-
开源模型:BGE-M3,Jina-v2等在性能和效率上取得很好平衡的模型是热门选择。
-
闭源模型:如果公司本身就在使用OpenAI或Cohere的生态,那么OpenAI
text-embedding-3-large/small
和Cohereembed-v3
也是非常常见的选择。
C.向量数据库(Vector Databases)
- 专用数据库:Pinecone,Weaviate,Milvus,Zilliz等是云原生、专门为向量检索设计的数据库,性能强大。
- 传统数据库扩展:**PostgreSQL(配合pgvector插件)和Elasticsearch(支持向量检索)**也非常流行。因为很多公司已经有了这些基础设施,使用它们可以降低技术栈的复杂性。
D.检索策略(Retrieval Strategy)
- “基础款”:语义检索(Semantic Search)。这是所有RAG系统的标配。
- “进阶标配”:混合检索(Hybrid Search)。即“语义检索+关键词检索(如BM25)”,这已经成为业界共识的最佳实践,因为它可以同时解决“意思相近”和“关键词精确匹配”两种需求。绝大多数向量数据库都原生支持混合检索。
- “常用优化”:重排序(Re-Ranking)。在初步检索后,使用一个更强大的交叉编码器(Cross-Encoder)模型(如Cohere的Re-rankAPI或开源的BGE-Re-ranker)对前几十个结果进行精排,是提升检索质量性价比最高的方法之一。
E.生成模块(Generation Module)
- 技术选型:闭源的、强大的商业LLM是绝对的主流。
- 业界现状:出于对稳定性、安全性和最强性能的追求,绝大多数生产系统都会直接调用OpenAI(GPT-4o,GPT-4-Turbo),**Anthropic(Claude3 Opus/Sonnet)或Google(Gemini 1.5 Pro)**的API。
F.评估与监控(Evaluation & Monitoring)
- 技术选型:“阶段二:解耦式白箱分析”正是当前业界的主流。
- 业界现状:
-
使用RAGAS等工具,通过“LLM当裁判”的方式,在开发阶段自动化地评估上下文相关性、答案忠实度、答案相关性。
-
使用LangSmith,TruLens等平台,对RAG应用的内部流程进行追踪、调试和监控。
高级RAG技术正在被逐步验证和采纳的发展趋势,代表着“家用车”正在吸收“F1赛车”的技术。
趋势一:从“粗糙检索”到“智能查询”
- 现状:检索主要依赖用户输入的原始文本。
- 趋势:RAG系统正在学会“优化问题”。我们讨论过的查询改写(Query Rewriting)、多查询检索(Multi-Query Retrieval)正在被主流框架(LangChain/LlamaIndex)集成,变得越来越易用。更前沿的迭代式、自我修正式的检索(如CRAG的思想)正在被领先的团队进行小规模试验。
趋势二:从“单一流水线”到“决策智能体”
- 现状:RAG大多是一个固定的线性流程。
- 趋势:Agentic RAG是最明确的未来。系统开始具备决策能力。我们讨论的ROPG(动态选择检索策略)、Self-RAG(决定是否需要检索)、DSP(多步规划和推理)等思想,正在被整合,让RAG系统能够根据问题的复杂性,自主地规划和执行一个动态的、非线性的解决路径。
趋势三:从“通用答案”到“深度个性化”
- 现状:个性化程度还比较浅。
- 趋势:PersonaRAG和ERAGent中体现的思想正在被更多面向C端用户的应用采纳。通过结合用户的历史数据、会话行为、预设偏好,RAG系统不仅能提供事实正确的答案,还能提供风格、口吻、内容都千人千面的回答。
趋势四:从“组件评估”到“综合效能评估”
- 现状:主流是评估检索和生成两个模块的质量。
- 趋势:随着Agentic RAG的复杂化,评估也必然走向“阶段三”。企业会越来越关注综合效益,我们讨论过的轨迹评估(评估决策链的好坏)和成本效益评估(衡量API成本、延迟和答案质量的综合“性价比”)将成为评估复杂RAG代理的标准。
- 小结
======
到这里关于Text-based RAG介绍就告一段落了~
在Post Retrieval阶段,可以使用**“重排”和“过滤”**两种技术来对已经检索到的资料进行“精细化处理”。
“重排”在意的是**“顺序”**,这个顺序给下游的Generator提供信息,也保证了关键信息不要被放在容易被忽略的位置。
“过滤”是希望减少一些冗余的、错误的或者是不相关的信息,让Generator的生成更加顺滑。
无论是“重排”还是“过滤”,要想得到好的效果,学者们有好用的两种路线:要么就别出心裁的训练/微调一个专业的模块来承担这些任务;要么就利用“现代大语言模型”的能力,既可以蒸馏训练,也可以直接使用提示词把“现代大语言模型”调教成自己想要的样子。
在Generation阶段,需要处理前面环节筛选出来的所有材料,这个**“处理过程”非常重要,既可以把这些材料跟“查询”相结合**,也可以用额外的模块来“针对Generator的口味/融合多个文档”生成“上下文”;这种生成也不必是“一次完成”的,可以利用“反馈-迭代”来不断优化。
除此之外,为了使得生成的内容更加符合特定用户的需求,可以增加静态的用户画像作为上下文,也可以在和用户的对话中实时记录用户的偏好,从而生成更加适配“当下问题和情境”的回答。
通过对Naive RAG系统每个阶段的进化技术进行分析,我们可以看见一条明显的从静态到动态,从流水线到自适应的转变。
然而,虽然学术界已经开发出了很多种比较复杂的RAG系统,但是当前业界的主流RAG技术栈,是一个以实用性、稳定性和高性价比为核心的成熟组合。而那些高级RAG技术,则构成了未来2-3年内,业界技术演进和升级的主要路线图。
最后
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。
与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。
但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

更多推荐
所有评论(0)