游乐游手机版
首页/AI热点日报/热点详情

检索增强生成RAG技术综述:多样性与代码实践

类型:热点整理2026-06-28
检索增强生成(RAG)通过外部知识检索弥补大型语言模型局限性,发展出朴素、混合、假设文档嵌入、父文档检索、融合、上下文、重写检索读取、校正、自我及自适应等多种技术流派,各具优缺点,适用于不同场景需求。

当前大型语言模型(LLM)的局限性其实很明显:它只能依靠训练时的“老黄历”来回答问题,一旦涉及到公司内部的私有数据或者刚发生的新鲜事,就很容易“翻车”,甚至一本正经地胡说八道。为了解决这个核心矛盾,检索增强生成(RAG)框架应运而生。它的核心思想很简单:不让LLM凭记忆硬答,而是先让它去外部知识库里“查资料”,拿到可靠的上下文后再进行回答。这样一来,答案不仅更相关,也更有据可查。

今天,我们就来深入剖析一下RAG家族的各类技术流派,看看它们各自的优缺点,以及在实践中应该如何选择。

RAG综述:探索检索增强生成技术的多样性与代码实践

一、RAG的基本概念与工作流程

任何一个RAG系统,其背后都有一套标准化的流水线,主要由四个核心组件构成:索引、检索器、增强器和生成器。

  1. 索引:首先,我们需要把各种格式的文档(PDF、Word、网页等)分割成易于处理的小块(Chunk),并为每个小块创建一种叫做“嵌入”(Embedding)的数学表示。这些嵌入向量随后被存入一个向量数据库中,以便后续进行高速的相似性检索。
  2. 检索器:当用户提出一个问题(Query)时,检索器会把这个查询也转换成嵌入向量,然后在向量数据库中通过相似度计算,快速找到最相关的那几个文档块。
  3. 增强器:这一步是RAG的精髓。增强器会把用户的原始查询和检索到的相关文档块拼接在一起,形成一个更丰富的“提示”(Prompt)。这个提示里包含了回答问题所需的所有外部信息。
  4. 生成器:最后,这个增强后的提示被传递给LLM。模型根据这些信息,生成最终的、精准的回答。

这套流程确保了模型输出的信息不仅相关,而且是最新、最准确的。

二、RAG技术的多样性

在标准的流程之上,研究者们又发展出了多种针对不同痛点的变体技术,每个都有其独特的解题思路和局限性。

1. Naive RAG(朴素RAG)

这是最基础的RAG版本,逻辑非常直接:直接用用户的查询去文档数据库里做语义相似度匹配。优点是简单、计算开销低,对于问题意图非常明显、上下文容易识别的场景,效果还不错。但短板也很明显——它缺乏复杂的过滤机制,很容易检索到一些似是而非的无关内容。此外,受限于模型的上下文窗口,它也可能导致关键信息的截断,最终给出的答案不完整。

2. Hybrid RAG(混合RAG)

既然纯语义检索有局限,那不如两条腿走路。Hybrid RAG结合了向量搜索(捕捉语义)和传统的关键词搜索(如BM25,确保精确匹配)。这种方法能同时把握问题的“言外之意”和“字面意思”,显著提升了检索的全面性和准确性。代价是计算成本增加了,并且需要精细地调整关键词和语义结果之间的权重,这是个技术活。

3. Hyde RAG(假设文档嵌入RAG)

Hyde RAG的思路非常巧妙。面对一个复杂或抽象的问题,它不直接去搜,而是先让LLM“凭空”生成一个假设性的答案。然后,利用这个假设答案的嵌入向量作为索引,去文档库里寻找与之最相似的真实文档。这就好比警察根据目击者描述先画一张嫌犯的模拟画像,再用画像去比对真实的人脸库。这种方法特别适用于那些传统搜索很难搞定的复杂查询。但缺点也很明显:首先生成假设答案本身就是一笔额外的计算开销,而且最终效果高度依赖于那个初始假设答案的生成质量,如果第一步就跑偏了,后面全白搭。

工作原理
  • 生成假设答案:利用LLM根据用户问题生成一个可能回答。它不需要完全准确,但需捕捉相关信息。
  • 嵌入假设答案:用一个对比编码器(如Contriever)将假设答案编码成向量。
  • 检索相似文档:用这个向量去文档库中检索最相似的真实文档。
  • 生成最终答案:将原始问题、假设答案和检索到的文档一起输入LLM,生成最终回答。

4. Parent Document Retriever RAG(父文档检索器RAG)

为了解决“只见树木不见森林”的问题,这个技术应运而生。它先把大型文档分解成更小的块。在搜索时,系统先精准地检索出最相关的小块。如果这个小块看起来很有价值,系统就会进一步检索并返回包含这个小块的完整父文档。这样既保证了初始搜索的精确性,又为模型提供了完整的上下文背景。它特别适合那种相关信息分散在不同章节的长篇大论。但代价是,返回的父文档里可能包含大量无关信息,并且系统需要额外的内存来维护父子文档的映射关系。

5. RAG Fusion(融合RAG)

RAG Fusion的思路是“兼听则明”。它首先生成与原始查询相关的多个子查询,每个子查询代表问题的不同视角。然后,它为每个子查询独立检索文档,最后使用一种叫“互惠排名融合”的算法来对所有结果进行重新排名和组合。这就像一个团队从不同角度研究同一个课题,最后汇总大家的研究成果,得出的结论自然更全面。不过,这种多路并行的检索方式显著增加了计算成本,实现和维护也更复杂。

其工作流程如下:

  1. 查询生成:用LLM对初始查询进行改写,生成多个相关子查询。
  2. 向量搜索:对每个子查询进行向量检索,形成多路召回。
  3. 倒数排序融合(RRF):应用RRF算法,根据文档在多个查询结果中的排名来重新计算分数并排序,提高最相关文档的排位。
  4. 结果重排:使用重排序模型对结果进一步优化。
  5. 输出生成:将最终排名靠前的文档和查询一起输入LLM,生成回答。

6. Contextual RAG(上下文RAG)

Contextual RAG致力于“效率”和“精确”。它并不把检索到的整个文档块一股脑地扔给LLM,而是先对文档进行压缩,只提炼出最核心、最相关的细节。这样能帮助模型生成更简洁、更聚焦的回复。在处理海量信息、要求输出简短精炼的场景下,这招非常管用。当然,它需要维护对话历史来保证上下文的连贯性,对于长对话来说,计算成本依然不低。

其工作流程包括:

  1. 上下文增强:对每个文档块,在其前面添加一段由小型LLM生成的解释性上下文。
  2. 混合搜索:同时使用稀疏(关键词)和密集(语义)两种方式进行嵌入和搜索。
  3. 排名融合:使用RRF算法合并搜索结果。
  4. 重排序:检索前150个块,重排序后筛选出Top 20。
  5. 答案生成:将这20个精选块传给大型LLM生成最终答案。

7. Rewrite Retrieve Read RAG(重写检索读取RAG)

这个技术的核心在于“提问的艺术”。它认为很多时候检索失败是因为问题本身问得不好。因此,在搜索文档之前,系统会先对原始查询进行重写和优化,使其更精确、语义更丰富。经过优化的查询往往能检索到更相关的文档,从而生成更优质的答案。但麻烦的是,这种多轮查询(重写->检索->再重写)会增加系统的延迟,并且有可能会导致“查询漂移”,即改着改着,问题就偏离了用户的原始意图。

该框架由三个核心模块构成:

  • Rewrite(改写)模块:洞察用户真实需求,对原始查询进行重写和细化。
  • Retrieve(检索)模块:根据改写后的查询,在数据库中进行语义检索。
  • Read(阅读/生成)模块:对检索到的信息进行处理,生成最终回答。

8. Corrective RAG(校正RAG)

Correntive RAG引入了一套“自我审查”机制。在检索到文档后,系统会用一个轻量级评估器来判断这些文档是否与问题相关。如果相关度很高,就正常使用;如果相关度很低,则判定为错误,系统会触发网络搜索来补充信息;如果模棱两可,则进行进一步处理。这种动态精炼信息的方式,确保了模型始终使用最高质量的信息。尤其适用于初始检索不够精确或存在偏差的场景。代价是,多出的评估和纠正步骤会增加延迟,计算成本也更高。

工作原理如下:

  1. 文档检索:使用查询向量检索相似文档。
  2. 评估与纠正:评估器为每个文档打分。分数高于上限(Correct)、低于下限(Incorrect)或介于之间(Ambiguous)。
  3. 知识精炼:对“Correct”的文档,会进一步提炼关键知识。
  4. 网页搜索:对“Incorrect”的文档,会触发网络搜索来补充信息。
  5. 生成过程:用优化后的知识生成最终回答。

9. Self RAG(自我RAG)

Self RAG在反思的道路上走得更远。它不仅在生成前反思检索结果,甚至在生成过程中也不断进行自我评估。模型会生成一种特殊的“反思标记”(Reflection Token),比如标记当前是否需要检索、检索的内容是否相关、是否支持当前生成的内容、整体效用如何等等。这就像LLM自带了一个内置的品控官,不断检查自己的工作,确保输出的可靠性。但显而易见,这种“边写边改”的机制极大地增加了计算开销,且有效自我评估标准的设定本身就非常复杂。

主要特点:

  • 检索灵活性:根据需求决定是否检索。
  • 自我评估与调整:生成内容时不断评估质量,发现问题就自我调整。
  • 并行处理多个文档:能对多个文档并行评估,并选择最佳输出。

反思标记类型包括:Retriever(是否检索)、IsRel(是否相关)、IsSup(是否支持生成内容)、IsUse(整体效用)。

10. Adaptive RAG(自适应RAG)

Adaptive RAG可以说是目前最灵活的方案。它像一个聪明的项目经理,会根据查询的具体类型,动态地调整检索策略。面对简单问题,它可能选择不检索,直接让模型回答;面对中等复杂的问题,它进行一次单步检索;面对需要多步推理的复杂问题,它则启动多步检索流程。这种动态切换策略的能力,使其在各类复杂任务中都能游刃有余。但代价是,系统架构非常复杂,需要强大的技术储备才能驾驭。

其核心策略有三种:

  • 无检索策略:用于可直接由模型回答的简单查询。
  • 单步检索策略:用于需要外部信息的中等复杂查询。
  • 多步检索策略:用于需要多步推理的复杂查询。

工作机制是:系统首先分析查询的复杂度,然后由分类器决定采用上述哪种策略。

三、RAG 技术综合对比与应用策略

(一)性能综合对比

纵观这些技术,各有侧重。朴素RAG简单快速但精度有限;混合RAG提升了召回率但牺牲了计算效率;Hyde RAG擅长解决复杂问题但计算繁重;父文档检索器RAG保留了上下文但增加了内存压力;RAG Fusion检索能力强但实现复杂;上下文RAG输出精准但依赖历史管理;重写检索读取RAG优化了查询但引入了延迟和漂移风险;校正RAG提升了质量但牺牲了速度;自我RAG强化了质控但资源消耗巨大;自适应RAG灵活通用但架构复杂。

开发者在选型时必须有所取舍。资源受限的环境可以优先考虑朴素RAG或上下文RAG;对精度要求极高的专业领域,则应该倾向于混合、Hyde或校正RAG;面对动态复杂的需求,自适应RAG能发挥最大潜力,但前提是你有强大的技术团队来支撑和维护。

(二)应用场景适配策略

  • 智能客服领域:常见问题可以用朴素RAG快速响应;复杂的售后问题,则可以通过混合RAG或校正RAG来精准溯源,完善解答,有效减少问题转接,提升服务效率。
  • 学术研究辅助:文献检索的初筛阶段,用混合或父文档检索器RAG能拓宽视野;深入探索前沿课题时,Hyde或RAG Fusion能帮助挖掘潜在的知识关联,激发创新思路。
  • 内容创作平台:新闻资讯创作中,上下文RAG能快速提炼要点,提升创作效率;在创意写作领域,自适应或自我RAG可以按需取材,并对生成内容进行审核优化。

四、RAG 技术发展趋势展望

(一)技术优化方向

一方面,性能提升是永恒的追求。我们会看到更多算法创新来压缩向量索引、加速检索匹配;另一方面,智能融合是大势所趋,RAG将更深度地与知识图谱、多模态技术(图像、语音)进行协同。

(二)新兴应用拓展

RAG的应用场景远不止于此。在教育领域,它可以实现个性化的知识推送和能力评估;在医疗领域,它可以辅助分析病历和医学影像,精准推荐治疗方案;在办公领域,它将成为智能助手,精准处理文档、进行数据挖掘,重塑工作流程。

(三)挑战与应对策略

当然,前路也并非一片坦途。数据隐私保护需要通过加密检索、联邦学习等手段来解决;知识的实时更新需要构建动态索引机制;而模型的偏见问题则需要通过数据均衡采样和公平性评估来治理。如何在这些挑战中找到平衡,将是RAG技术能否行稳致远的关键。

总的来说,RAG技术为解决LLM在处理私有和动态信息时的短板,提供了一条极具前景的创新路径。通过引入外部知识,它让模型的回答不再只是“美丽的废话”,而是有理有据、精准可靠的“真知灼见”。尽管在索引、检索、评估等环节仍有许多挑战,但随着持续的探索和实践,我们有理由相信,RAG将在更广泛的领域取得成功,释放出AI的真正生产力。

来源:https://www.53ai.com/news/RAG/2024120960318.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。