跳到正文

RAG 模型分类有哪些?

对比不同架构差异与适用场景,帮你快速选型

原题:请介绍RAG(Retrieval-Augmented Generation)模型的主要分类方式,并比较不同类别之间的架构差异与适用场景。

RAG基础 · 淘天真题

回答与解析

RAG 的三代演进架构

1. Naive RAG(基础架构)

架构:离线建索引 → 向量检索 → 直接拼接Prompt → LLM生成

核心特征

  • 检索与生成硬耦合,一次检索即生成
  • 无反馈机制,检索错误直接传导到输出
  • 代表:早期DPR+GPT-3方案

适用:事实性问答、内部文档查询等单跳、确定性场景


2. Advanced RAG(优化架构)

架构:检索前(查询改写/扩展)→ 检索中(重排序/混合检索)→ 检索后(上下文压缩/摘要)→ 生成

核心改进

  • 查询优化:HyDE(假设文档嵌入)、Query2Doc
  • 精排策略:Cross-encoder重排、多路召回融合
  • 上下文处理:Recomp压缩、选择性上下文

适用:企业知识库、产品手册等噪声多、需精排的场景


3. Modular RAG(模块化/Agent化)

架构:检索与生成解耦,支持多轮迭代、主动决策

关键能力

模块 功能
检索器 可切换(向量/图谱/搜索引擎)
调度器 判断是否需要检索、何时停止
生成器 支持Self-RAG(反思token)、FLARE(动态检索)

代表:Self-RAG、ReAct、RAG-Fusion

适用:科研分析、多跳推理、开放域复杂任务


架构差异对比

维度 Naive Advanced Modular
延迟
准确性 依赖索引质量 显著提升 最高
灵活性 有限 高度可编排
运维成本

选型建议:从Naive快速验证→Advanced优化体验→Modular解决复杂任务,避免过度设计。

学习建议

建议先掌握向量运算和概率基础,再结合Transformer论文理解Attention的计算流程与意义。

口语版讲法(约4分钟)

  • 一句话定位:RAG分类本质是检索与生成耦合度演进
  • Naive RAG:快速验证但硬耦合,适用单跳事实问答
  • Advanced RAG:查询优化+重排,落地企业知识库时重点做上下文压缩
  • Modular RAG:解耦+决策,适合多跳推理但成本高
  • 边界划分与落地风险:Naive快速验证、Advanced优化、Modular解决复杂,常混合使用;前提是索引质量与延迟容忍度

面试官你好,这道题问RAG的分类,其实本质是在问检索和生成之间的耦合度是怎么演进的。我理解RAG不是一种固定的架构,它从最早的简单拼接,到后来加各种优化,再到最近模块化、Agent化,其实是检索和生成从硬耦合走向解耦的过程。

先说最早的一代,Naive RAG。它的流程很简单:离线把文档切成块、做 Embedding 存进 Vector Database,用户提问时检索出最相关的几个块,直接拼到Prompt里交给LLM生成。这个架构最大的问题是检索和生成是硬耦合的,一次检索结果就决定了输出质量,如果检索错了,模型只能硬着头皮基于错误信息来回答,就会出现 Hallucination。所以它只适合单跳、确定性强的场景,比如内部文档里的简单事实问答,像查员工手册里年假天数这种。换个场景,比如客服问退款政策,用户可能说'我买的东西降价了',Naive RAG直接搜'降价'可能搜不到退款条款,这就挂了。

所以后来出现了Advanced RAG,它的核心是在检索的前、中、后都加优化。检索前做查询改写或扩展,比如用 HyDE 先生成一个假设文档再检索;检索中用 Hybrid Search 融合关键词和向量,再用 Cross-Encoder 做 重排;检索后做上下文压缩,把检索回来的长文本摘要成关键信息,避免把噪声带进生成。这里有一个关键点:不是所有场景都需要重排。如果知识库质量高、分块合理,直接用 BM25 加向量检索的混合就够用了;只有噪声多、需要精确排序的场景,比如企业合规文档,才需要加重排。我实际落地企业知识库时,最关注的是检索后的上下文压缩,因为LLM对输入长度敏感,压缩能直接提升生成的准确率和速度。但这里有个坑:压缩本身也会丢失信息,所以需要设计好压缩策略,比如只保留跟问题最相关的段落。

再后来就是Modular RAG,也叫Agentic RAG。它把检索和生成彻底解耦,引入一个调度器来决定什么时候检索、检索什么、要不要多轮迭代。比如 Self-RAG 让模型在生成时输出反思token,判断当前答案是否需要更多证据;ReAct 则是边推理边检索,像人类查资料一样一步步逼近答案。这个架构灵活性最高,但延迟和成本也最高。它的典型场景是科研分析或多跳推理,比如问'某药物对某疾病的疗效,对比传统疗法有哪些优势',需要先查到药物数据,再查疾病背景,再对比,一次检索搞不定。

那么这三类怎么选呢?我的经验是:不要孤立地选一类,而是根据场景混合使用。比如做一个客服退款系统,可以先用Naive快速搭一个原型验证可行性;然后加上查询改写和重排,变成Advanced;如果遇到复杂退款纠纷需要查多份政策,再引入调度器做多轮检索。边界划分上,Naive适合单跳、确定性场景;Advanced适合噪声多但仍是单跳的场景;Modular适合多跳、开放域复杂任务。但真正落地时,我常常把Advanced和Modular结合,比如用Modular的调度器来控制Advanced的检索流程,而不是完全照搬论文。

不过这里有个延伸点值得留意:Modular RAG里的调度器如何决定何时停止迭代?如果不停,可能会浪费token甚至陷入循环。我倾向于用置信度阈值加最大轮数来控制,但更优雅的做法是用 Faithfulness 评估当前答案对检索结果的支持度,低于阈值就继续检索。

最后总结一下我的工程师判断:RAG不是越高级越好,Naive有它快速验证的价值,Advanced适合优化体验,Modular解决复杂问题。我会把RAG的选型看成一条演进路径,从简单开始,按需加复杂度,避免过度设计。前提是索引质量要够好,否则后面所有优化都是白费。如果面试官感兴趣,我们可以再深入聊聊调度器的具体实现。

关键一句:Modular RAG中调度器如何决定何时停止迭代,我倾向于用置信度阈值加最大轮数,更优雅的是用Faithfulness评估支持度。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们做一个企业知识库问答系统,用户问“去年的财报数据”,系统直接搜回来一堆文档塞给大模型。但有时候搜到的内容很杂,回答质量不稳定。你觉得这种“搜了就直接回答”的方式有什么问题?有没有更好的演进思路?

  2. 问法 2 · 层层追问

    RAG 的基本流程你了解吧?就是检索加生成……那如果检索结果不准,比如用户问“退款政策”却搜到商品描述,怎么改善?……如果再进一步,想让模型自己决定什么时候需要再搜一次,这种架构又该怎么设计?

  3. 问法 3 · 直球架构

    请你介绍一下 RAG 的主要分类和架构差异。重点说说从 Naive 到 Advanced 再到 Modular,每一代改进了什么,分别适合什么场景?比如延迟、准确性、灵活性上的取舍。

同模块相关题目