来源:互联网 更新时间:2026-08-01 13:41
过去一年里,检索增强生成(RAG)这个概念着实火了一把,作为落地大语言模型应用的主流方案,它吸引了大量关注。此前有一篇关于 RAG 的综合性调查,从朴素 RAG 到高级 RAG 再到模块化 RAG 的演进路径做了详细梳理——不过那篇文章主要是从增强的视角(比如增强源、阶段、过程)来审视 RAG 技术。
这篇把焦点放在了
通过编排不同的运算符,可以衍生出各种各样的
这篇文章的目标是提供一个

RAG 调查中的数据
RAG 的进步催生了更加多样化和灵活的流程,主要体现在几个关键方面:
从上图可以看出,RAG 的快速发展已经超越了
模块化 RAG 提供了一种高度
模块化 RAG 以多层模块化的形式组织 RAG 系统。高级 RAG 是 RAG 的模块化形式,而朴素 RAG 则是高级 RAG 的一个特例。三种范式之间是继承与发展的关系。
模块化 RAG 的好处显而易见——它为现有的 RAG 相关工作提供了一个全新且全面的视角。通过模块化的组织方式,相关的技术和方法被清晰地总结出来。

模块化 RAG 的框架
本章深入探讨 RAG 的三层结构,并勾勒出 RAG 的技术路线图。受篇幅所限,不会深究每个技术细节,但会提供全面的参考文献供进一步阅读。
索引是将文本分解成可管理块的过程,是组织系统的关键步骤,主要面临三个挑战:
较大的块能捕获更多上下文,但也会引入更多噪音,处理时间和成本更高;较小的块虽然可能无法完整传达上下文,但噪音较少。平衡这些需求,有几种常见方法:
一种简单的方式是使用重叠块,通过滑动窗口增强语义转换。但这种方法也有局限:对上下文大小的控制不够精确,有截断单词或句子的风险,且缺乏语义考量。
核心思想是把用于检索的块和用于合成的块分开。用较小的块可以提高检索准确性,用较大的块则能提供更多上下文信息。

具体做法:可以检索
类似于从小到大的思路:先生成较大块的摘要,对摘要进行检索,然后对较大的块进行二次检索。
可以用元数据信息来丰富块,例如
增强信息检索的一个有效方法是建立文档的层次结构。通过构建块结构,RAG 系统可以加快相关数据的检索和处理。
在文档的层次结构中,节点以父子关系排列,块链接到它们。每个节点上存储数据摘要,有助于快速遍历数据,并帮助 RAG 系统确定要提取哪些块。这种方法还能减轻由块提取问题引起的幻觉。
构建结构化索引的主要方法包括:
文档中的
大规模应用可参考 Arcus 的层次索引方案。
利用知识图(KG)构建文档层次结构有助于保持一致性。它能描绘不同概念和实体之间的联系,显著减少幻觉发生的可能性。另一个优势是将信息检索过程转化为 LLM 可以理解的指令,提高知识检索的准确性,并促使 LLM 生成上下文连贯的响应,从而提升 RAG 系统的整体效率。相关实现可参考 Neo4j 查询引擎。关于用 KG 组织多个文档,可以阅读研究论文
朴素 RAG 的主要挑战之一就是直接依赖用户的原始查询来检索。提出一个精确清晰的问题并不容易,不谨慎的查询会导致检索效率低下。
这一阶段的主要挑战包括:
把单个查询扩展到多个查询,可以丰富查询内容,提供更多上下文来解决缺乏特定细微差别的问题,从而确保生成答案的最佳相关性。
通过提示工程让 LLM 扩展查询,这些查询可以并行执行。扩展不是随意的,而是精心设计的,关键标准是查询的
子问题规划的过程是生成必要的子问题,当它们组合起来时能充分回答原始问题。原则上,添加相关上下文的过程类似于查询扩展。具体地,可以用
另一种查询扩展方法来自 Meta AI 提出的
使用转换后的查询(而非用户的原始查询)进行检索和生成。
原始查询并不总是最适合 LLM 检索,尤其是在现实场景中。因此,可以提示 LLM 重写查询。除了 LLM,还可以利用专门的较小语言模型,例如
当响应查询时,LLM 构建假设文档(假设答案),而不是直接在向量数据库中搜索查询及其向量。它侧重于嵌入答案之间的相似性,而不是寻求问题或查询的嵌入相似性。此外还有

HyDE 和 Reverse HyDE 的核心思想都是在查询和答案之间架起映射的桥梁。
Google DeepMind 提出的 Step-back Prompting 方法,对原始查询进行抽象,生成高级概念问题(step-back question)。在 RAG 系统中,后退问题和原始查询都会用于检索,两种结果共同作为语言模型答案生成的基础。
根据不同的查询,路由到不同的 RAG 管道,这适用于那些需要应对多种场景的多功能 RAG 系统。
第一步从查询中提取关键字(实体),然后根据块中的关键字和元数据进行过滤,缩小搜索范围。
另一种路由方法利用查询的语义信息。当然也可以采用混合路由,结合语义和元数据来增强路由效果。具体实现可参考语义路由器相关资源。
将用户的查询转换为另一种查询语言,以访问替代数据源。常见的方法包括:
在很多场景中,结构化查询语言(如 SQL、Cypher)通常与语义信息和元数据结合,构造更复杂的查询。
检索过程在 RAG 中至关重要。利用强大的 PLM 可以有效表示潜在空间中的查询和文本,建立问题和文档之间的语义相似性来支持检索。需要考虑三个主要因素:
自 ChatGPT 发布以来,嵌入模型呈爆发式发展。Hugging Face 的
构建 RAG 应用时,没有万能的“最佳嵌入模型”。但你会发现有些特定的嵌入更适合某些用例。
稀疏编码模型虽然被认为是有点过时的技术,通常基于词频统计等统计方法,但由于编码效率更高、稳定性好,仍占有一席之地。常见的包括
基于神经网络的密集编码模型包括以下几种类型:
基于 BERT 架构构建的 Encoder-Decoder 语言模型,例如 ColBERT。
全面的多任务微调模型,如 BGE 和 Baichuan-Text-Embedding。
基于云 API 的模型,例如 OpenAI-Ada-002 和 Cohere Embedding。
下一代加速编码框架 Dragon+,专为大规模数据应用设计。
两种嵌入方法捕捉不同的相关性特征,可以互补。例如,稀疏检索模型可以为训练密集检索模型提供初始搜索结果;PLM 可用于学习术语权重以增强稀疏检索。研究表明,稀疏检索模型能增强密集检索的零样本能力,并帮助密集检索器处理包含稀有实体的查询,提高鲁棒性。

图片来自 IVAN ILIN:高级 RAG 技术:图解概述
如果上下文与预训练模型在嵌入空间中的相似性判断不一致——尤其是在医疗、法律等专有术语丰富的领域——调整嵌入模型就能派上用场。虽然需要额外工作,但可以显著提升检索效率和领域对齐。
可以根据特定领域的数据构建自己的微调数据集,这项任务用 LlamaIndex 可以快速完成。
与直接构建微调数据集不同,LSR 利用 LM 生成的结果作为监督信号,在 RAG 过程中微调嵌入模型。
受 RLHF 启发,利用基于 LM 的反馈,通过强化学习来增强检索器。
有时微调整个检索器成本太高,尤其是当检索器基于 API 无法直接微调时。这时可以合并适配器模块进行微调。添加适配器的另一个好处是能够更好地与特定下游任务对齐。
任务特定:PRCA(通过可插入奖励驱动的上下文适配器拟合黑盒 LLM 进行检索问答)。
任务无关:AAR(增强自适应检索器)引入通用适配器,旨在适应多个下游任务。
直接把检索到的整个文档块喂给 LLM 并不是最优选择。对文档进行后处理,能帮助 LLM 更好地利用上下文信息。
主要挑战包括:
在不改变内容或长度的情况下对检索到的文档块重新排序,增强 LLM 对重要块的感知。具体包括:
根据某些规则计算指标对块重排序。常见指标包括:
多样性
相关性
MMR(最大边际相关性,1998):减少冗余、增加结果多样性,最初用于文本摘要,根据查询相关性和信息新颖性选择最终的关键短语。
利用语言模型对文档块重排序,可选模型包括:
BERT 系列的编码器-解码器模型,例如 SpanBERT。
专门的重排序模型,例如 Cohere rerank 或 bge-reranker-large。
通用大型语言模型,例如 GPT-4。
一个常见的误解是:检索尽可能多的相关文档,把它们拼接成长长的提示就是好的。但实际上,过多的上下文会引入更多噪声,削弱 LLM 对关键信息的感知,并导致“中间迷失”等问题。解决办法是压缩并选择检索到的内容。
利用经过对齐和训练的小语言模型(如 GPT-2 Small 或 LLaMA-7B),检测并删除提示中不重要的 token,将其转换为人类难以理解但 LLM 能很好处理的形式。这种方法无需对 LLM 额外训练,直接压缩提示,平衡了语言完整性和压缩率。
Recomp 引入了两种压缩器:
通过
一种直观直接的方法:先对文档进行分词,然后根据查询的元数据进行过滤。
另一种简单有效的方法:让 LLM 在生成最终答案之前评估检索到的内容,通过批评过滤掉相关性较差的文档。例如在 Chatlaw 中,LLM 被提示对所引用的法律条款进行自我建议,评估相关性。
利用 LLM 根据用户查询和检索到的上下文信息生成答案。
根据使用场景,LLM 的选择可分为两种类型:
通过调用第三方 LLM 的 API 来使用,如 OpenAI 的 ChatGPT、GPT-4 和 Anthropic Claude 等。
本地部署的开源或自研 LLM,如 Llama 系列、GLM 等。优势和劣势与基于云 API 的模型相反——本地部署灵活性更大、隐私保护更好,但需要更高的计算资源。
除了直接使用 LLM,根据场景和数据特征进行针对性的微调通常能收到更好的效果,这也是本地部署最大的优势之一。常见的微调方法包括:
当 LLM 缺乏特定领域数据时,通过微调补充额外知识。Hugging Face 的微调数据也可以用作初始步骤。微调的另一个好处是能调整模型的输入输出,例如让 LLM 适应特定数据格式,并按指示生成特定风格的回答。
通过强化学习使 LLM 的输出与人类或检索器的偏好对齐。例如,手动标注最终生成的答案,然后通过强化学习提供反馈。除了人类偏好,还可以与微调模型和检索器的偏好对齐。
当无法访问强大的专有模型或更大参数的开源模型时,一个简单有效的方法是蒸馏更强大的模型(如 GPT-4)。
同时微调生成器和检索器,使它们彼此对齐。一种典型方法如 RA-DIT,使用 KL 散度来对齐检索器和生成器之间的评分函数。
编排是指控制 RAG 流程的模块。RAG 不再遵循固定流程,而是在关键节点做出决策,根据结果动态选择下一步。这也是模块化 RAG 相比朴素 RAG 的关键特征之一。
Judge 模块评估 RAG 过程中的关键点,确定是否需要检索外部文档库、答案是否满意、是否需要进一步探索。它常用于递归、迭代和自适应检索。主要包括以下两个运算符:
根据预定义规则决定下一步行动。通常对生成的答案进行评分,然后根据分数是否满足预定义阈值来决定继续或停止。常见阈值包括 token 的置信水平。
LLM 自主决定下一步行动。主要有两种方式:第一种是提示 LLM 根据对话历史进行反思或判断,如 ReACT 框架。好处是不需要微调模型,但判断的输出格式取决于 LLM 对指令的遵守程度。基于提示的代表是 FLARE。
第二种方式要求 LLM 生成特定的 token 来触发特定操作,这种方法可追溯到 Toolformer,并在 RAG 中应用,例如 Self-RAG。
这个概念源自 RAG Fusion。正如前面查询扩展部分所述,现在的 RAG 流程不再是单一管道,通常需要通过多个分支来扩展检索范围或多样性。因此,在扩展到多个分支后,需要依靠融合模块来合并多个答案。
融合方法根据多个分支生成的不同 token 的权重值,综合选择最终输出,主要采用加权平均。
RRF 是一种将多个搜索结果列表的排名组合成单个统一排名的技术,由滑铁卢大学和 Google 合作开发,效果比在任何单个分支下重排序更好。
RAG 流程的更多内容将在第二部分介绍,敬请期待。
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
Ondo将于今日上线股票永续合约
暗黑4S14野蛮人终局BD攻略
区块链OTC交易所有哪几家比较正规?
Binance新增15种bStocks代币化证券为杠杆抵押资产
Meme币DOGS今晚上线!开局就解锁91%代币是否带来风险?
忍者必须死3极刃血影角色介绍
晶核艾尔莎角色盘点 晶核艾尔莎强度分析与实战表现
余姚的路虎4s店在哪个位置
彩云天气怎么看分钟级降雨预报 彩云天气精准预报方法【技巧】
五千元以下的笔记本几乎消失!经销商:至少一年看不到涨价尽头
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
遗忘之海密室通关教程 遗忘之海密室全关卡解谜思路与难点解析
华为Mate 70系列首发的红枫镜头下放至千元档:全员普及原色影像
合集38个项目筹集5.406亿美元 Figure融资2亿
国家养老服务消费补贴上线京东
英伟达机器人团队在京沪深招人,聚焦具身智能等四大领域
一站式PDF转Markdown解决方案PDF3MD
硬刚苹果!华为9月新品阵容出炉:Mate 90系列、全新三折叠
微软Copilot AI漏洞可致敏感数据泄露,企业用户需及时更新
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc