当前位置: 首页 > news >正文

10 种 RAG 模式

过去一年里,我至少听了十几次"RAG 已死"的论调。

“RAG 过时了。现在上下文窗口(context window)那么大,直接把所有东西塞进提示词(prompt)不就完了?”

每次听到这种话,我心里想的都是:行,那咱们来稍微推敲一下这套逻辑。

假设你公司有十年的内部文档:法律合同、运维手册、客户支持记录、改了四十版的产品规格书。你打算每次查询都把这些全部塞进去?成本得多高?延迟得多大?等模型被海量无关信息淹没、开始胡说八道的时候(这几乎是必然的),你打算怎么办?

RAG 没死,从来就没死过。

真实情况是,那些 2023 年试过它的人,随便搭了个粗糙的检索流程,效果平平,然后就弃了。他们把一套不成熟的实现当成了这个思路本身有缺陷。但这两者根本不是一回事。

思路本身是站得住脚的,只是实现方案终于慢慢跟上来了。


上下文窗口

我先替"直接上超大上下文窗口"派把话说全,因为这个立场确实值得认真回应。

如今顶尖模型单次上下文能塞进数百万 token。如果你能把整个知识库丢进去,检索这一步就全省了。

不用切块、不用嵌入、不用向量数据库,就一次性把所有东西放进去,更简单,不是吗?

但这在生产环境中站不住脚,原因有三:

其一,成本叠加得飞快。推理成本和处理掉的 token 数成正比。如果每次查询都扔两百万 token,而绝大多数查询真正需要的只有两千 token,那你等于每请求一次就多花了一千倍的钱。在规模化场景下,这可不是什么舍入误差,这是决定产品能活得下去还是悄悄失血而死的分水岭。

其二,太慢了。处理几百万 token 是需要时间的。那些指望两秒内出结果的用户,等上六秒八秒,体验就会急转直下。这不光是工程问题,更是产品问题。

其三,它其实会让模型变笨,而不是变聪明。上下文里塞满无关信息时,模型表现会变差。有效信号被稀释,注意力被摊薄。有一个真实存在的现象叫"迷失在中间"(lost in the middle),意思是模型会系统性低估出现在长上下文中间那部分信息的权重。你不是给了模型更多素材,而是给了它更多需要费力筛查的噪音。

精准检索,恰好找到对的那部分上下文,而不是把所有可能的东西都丢过去是一种优势,不是权宜之计。


切块与嵌入

在聊 RAG 演化出的那十种模式之前,得先弄清楚两个决定任何 RAG 系统能不能跑起来的基础组件。

切块策略(Chunking)

每份进入检索系统的文档,都必须被切成可检索的小块(chunk)。策略很关键,而绝大多数早期的 RAG 实现都做错了。

最简单的切块方式是按固定字符数或 token 数截断文本。

简单、快。但它也经常把完整的句子分割开,把结论和支撑它的论据断开,切出来的块在语义上失去了原本的完整性。

推荐的做法是语义切块(semantic chunking):不用固定的边界去切,而是在主题转换、文档从一个想法自然过渡到另一个想法的地方下刀。这样切出来的块内部是连贯的、语义完整的,检索出来的内容才能真正告诉模型一些有用的东西。

层级式切块(hierarchical chunking,也叫从小到大切块)则更精细一步。先用小而精的块来存储小块够具体,嵌入模型(embedding model)能把它们和查询精确匹配。

但每个小块都带一个指针,指向它来自哪个章节、哪份文档、哪个更宽泛的段落。当小块被检索到之后,系统会往外扩展到父级上下文,再一并交给模型。这样一来,你既拿到了小块检索的精确,又拥有大块上下文的连贯。

嵌入模型与向量数据库(Embedding Model & Vector Database)

文档切好块后,得把它们转成向量(vector)一种稠密的、数字化的语义表征,这样才能用数学方法与进来的查询做比对。

嵌入模型的好坏,决定了检索质量的天花板, OpenAI 的text-embedding-3-large和开源的BGE-large,它们捕捉语义细节的能力都足够强,能应付那些用词和目标文档不完全一致的查询。

这些向量存在像 Pinecone、Weaviate、pgvector、Qdrant 这样的向量数据库里,通过近似最近邻搜索(ANN,Approximate Nearest Neighbor),在毫秒级别就能找到和任意查询语义最相似的那些块。


10 种 RAG 模式

1. 简单 RAG(Naive RAG)

查询进来,做嵌入,召回最匹配的块,把块拼到提示词里,模型给答案。

对于不少场景,比如一个整理得很好的内部 wiki,或者文档清晰的客服机器人,这真的就够用了。

理解简单 RAG 的真正价值,未必是要一直用它,而是要清清楚楚知道它没干什么,而这,基本也就是推动后面所有模式出现的动力。

2. 带记忆的 RAG(RAG with Memory)

简单 RAG 基本上是个健忘症患者。每个查询都落在完全的真空里。

你问它"能展开说说第二点吗?",系统压根不知道第二点是什么,在它看来,根本就没有过第一点。

加上记忆(memory),意味着维护一条持续跟进对话的线索,可能是一份摘要,可能是历史记录,也可能是对已聊内容的提炼,并把它揉进每一次的检索查询里。这时候,追问才真的有用,代词才有了指代对象,整个体验才开始像真正的对话,而不是一串互不搭界的查询。

3. 分支式 RAG(Branched RAG)

有些问题,表面上是一个问题,实际上是好几个问题套了件大衣。

"我们上个季度亚太区的客户获取成本跟北美比怎么样,这对我们 Q3 的预算分配意味着什么?"这可不是一个检索任务,这至少是三到四个,需要不同的文档集、不同类型的推理,然后还得把结果揉成一个连贯的答案。

分支式 RAG 会先把问题拆开。子查询并行走在不同检索通道里,结果回来后先整合到一块儿,再拿去生成。

当然比简单检索更耗时,这点没得说。但对于真正复杂的多段式问题,质量上的提升通常太明显。

4. HyDE(Hypothetical Document Embeddings,假设性文档嵌入)

用户的提问,和能回答它的那份文档,措辞常常差了十万八千里。

用户问得口语化,文档写得正式。在嵌入空间里一比对,结果就不准,因为两段文本表面上看起来根本不像,哪怕语义是相通的。

在检索任何东西之前,你先让模型生成一份"假设答案",不是真答案,只是一份看着挺像那么回事、措辞风格跟你的文档库差不多的答案。然后拿这份假设答案当检索查询,而不是原始提问。

你现在干的,是去搜和一份假想答案相似的真实文档,而不是搜和问题相似的文档。对齐效果好得出奇,召回的块切题得多。对那些用词高度专业化的技术类或垂直领域文档库,HyDE 的效果有时出乎意料地好。

5. 自适应 RAG(Adaptive RAG)

不是所有情况都需要检索。"埃菲尔铁塔哪年建的"这类问题真用不上向量数据库,"法国首都是哪"就更不用说了。对所有查询无差别检索,浪费算力不说,有时还会引入无关上下文,把答案质量反而拉低了。

自适应 RAG 在检索层前面加了个路由(routing)步骤。在任何搜索发生之前,先做个轻量判断:这个查询到底需不需要外部文档?还是说模型靠自己脑子里的知识就能答得不错?然后系统据此走不同路由。

对那些要处理五花八门查询的高吞吐企业系统,这个路由层能实实在在地降成本、降延迟。而且这也意味着你的检索管线只有在真正值得跑的时候才跑。

6. 纠错式 RAG(CRAG,Corrective RAG)

检索偶尔是会失手的,这没法完全避免。索引有死角,查询有些歧义,排最前面的几条结果可能也就在正确答案边上蹭了蹭,但并不真的是。标准 RAG 基本察觉不到这些,它只会把自己召回来的东西原样喂给模型,然后仿佛一切都很好地往下走。

CRAG 在检索和生成之间塞了一道质量检查。召回来的文档会被打一个相关性分:分高,万事大吉,正常往下走;分低,系统会介入干预,要么重新措辞查一遍,要么退而求其次,通过网络搜索补充来源。

你就把它理解成带自我纠错机制的 RAG。模型基于垃圾输入一本正经地胡说的概率大大降低了,因为那些垃圾输入在送到模型嘴边之前就被截住了。

7. 自审式 RAG(Self-RAG)

这个在理念上其实很有意思。它不加外部检查,而是靠训练让模型学会审视自身。

生成的过程中会织入一些特殊的 token,有点像内置的自我追问,让模型时不时停下来琢磨:我在这儿真的需要去查吗?我刚刚查到的东西真的有关吗?我给出的这个答案,跟我找到的证据对得上吗?

模型某种程度上成了自己的审计师。当它不该那么确定的时候,就更可能主动说出"我对这个其实不太有把握";自己的推理链出了错,也更可能在把答案吐出来之前先自己抓到。这肯定有代价,因为这种方法需要更精细的训练,推理也多了些复杂性。但凡是风险高的场景,这种校准能力的提升通常都是值得的。

8. Agent RAG(Agentic RAG)

到了这里,RAG 就不太像一条管道(pipeline)了,而更像一个过程。

在 Agent RAG 里,模型不再只是检索完就生成。它会一步一步决定下一步做什么:可能先查一下向量库,发现结果有点稀薄,就调一个外部 API 补点数据,再对着找到的东西琢磨一下,意识到自己需要另一份不同的文档,于是再去查,最后才把所有东西综合出一个答案——全都在同一次查询里完成。

模型本质上是个调度中心(orchestrator):它行动、观察、然后根据沿途的发现调整自己。

对于真正开放式的任务,这就是正确的架构:复杂的研究类查询、多步骤流程、任何需要动态决策而非固定"先检后答"序列的场景。它搭建起来更复杂,调试起来更头疼,本质上可预测性也差一些。但用在恰当的场景上,说实话,其他方案跟它比,差得不是一星半点。

9. 多模态 RAG(Multimodal RAG)

你公司的知识可不只是存在纯文本文件里。它还在那些幻灯片里,里面的图表讲着项目符号没讲出的故事;它在架构图里;它在那些数字之间的关系比数字本身还重要的财务报表里;它还在那些靠标签指向某个组件才说得清的技术原理图里。

标准 RAG 碰到这些,要不就当成一堆乱码,要不就当数据不存在。多模态 RAG 把这些当成值得认真检索的信息。

借助视觉语言模型(VLM,Vision-Language Model),图表、表格、图片可以和文本一起被嵌入进去。检索可以把一张图就当成一张图返回来。模型直接解读视觉内容,而不是通过某种严重降级的文字近似物去猜。企业知识正越来越多地以视觉形态存在,这件事就不再是锦上添花,而正在变成你真正需要的东西。

10. 图谱 RAG(Graph RAG)

对任何检索系统来说,最难啃的一类问题就是:问关系。

“现在正在被审计的那份供应商合同,当初是谁批的?”“上个月造成故障的那个服务,到底归哪个团队?”"跟这个客户投诉有关的那条政策,v2 到 v3 期间到底改了什么?"这类问题,绝无可能靠找相似文本来回答。它们需要去顺着实体之间的联系走——人、项目、文档、事件,而这些联系散落在几十上百个独立来源里。

图谱 RAG 在向量索引(vector index)旁边建了一个知识图谱(knowledge graph):实体被映射出来,关系被追踪下来。当一个查询需要沿着一条关系链去走时,检索就去遍历图谱,而不是仅仅找那些嵌入向量相近的东西。

对于任何涉及组织复杂度、合规、法务,或者系统间有大量相互依赖的场景,图谱 RAG 打开了一整类其他模式根本摸不着边的问题。


架构选择

没人会只单用其中一种模式。

一个真实的企业 AI 系统,往往是组合体:前面用自适应 RAG 做路由,大部分查询走简单 RAG,碰上复杂分析问题就切到分支式 RAG,CRAG 再作为质量关卡贯穿始终。要是一个系统重度依赖文档,可能还得把多模态 RAG 叠上去处理视觉内容,把图谱 RAG 拉进来处理关系型问题。

语义切块、足够强的嵌入模型、靠谱的向量存储,必须扎扎实实地打牢,上面那些花活才可能真正跑起来。糟糕的数据准备,没法靠精巧的架构来弥补。那些用惨痛教训才学到这点的团队,往往花好几个月去调检索,最后发现从头到尾都是切块的问题。

而那些把 RAG 当成 2023 年过气潮流的人,常常在用另一套工具干着本质上一样的事,只不过少了这套方法论和严谨性,然后纳闷为什么自己的 AI 产品一过了演示环节就老感觉不那么靠谱。


未来

RAG 变得成熟,是因为底层的那个问题从来就没有消失过。你需要你的 AI 系统处理最新的、私有的、特定领域的信息。你需要它们说的话有根有据,而不是仅凭模型训练时咽下去的那点东西胡诌。你需要它们在真正有意义的规模下还能把成本和响应速度都控制住。

这些需求,不会因为上下文窗口变大就消失。甚至恰恰相反,当企业开始把更关键的业务流程押在 AI 上,大家对可靠性的要求只会越来越高,对那种自信满满的幻觉的容忍度只会越来越低。对能追责、能审计的事实依归的需求,正变得越来越紧迫,而不是相反。

RAG 就是对这个问题给出的回答。只不过,它早已不是两年前的那个 RAG 了。现在它有十种模式,再过两年可能就是二十种。但它的核心思想:让模型在开动脑筋之前,先踩在召回来的、有关的、最新的信息上。

这十种模式,从入门必须搞定的基础款,到真正精巧复杂的架构,全都在这里了。如果你正用其中任何一种做开发,你能做的最好投资,还是那件看起来最不性感的事:把切块策略弄对,选好一个强大的嵌入模型,让一切从一个扎实的地基上长出来。说真的,只要这步踏实了,后面所有事情都会容易得多。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.jsqmd.com/news/1099525/

相关文章:

  • 你的 Agent 架构选错了:越复杂的 Agent 系统,越可能走向失败
  • 工业互联网组建与维护核心流程与实战要点
  • 什么是 Vaadin?
  • Fan Control完整教程:5个实用技巧优化电脑散热性能
  • 鸿蒙系统进一步学习(三):ArkUI的差分渲染
  • 3D CAD SDK 安装
  • Spring AI + RAG
  • 大模型服务弹性伸缩:从 GPU 利用率到 K8s HPA 的全链路实战
  • 告别Keil律师函!手把手教你用VSCode+GNU Arm+STM32CubeMX搭建免费单片机开发环境(Windows版)
  • 从零到一:基于Dify的AI应用开发全流程实践指南
  • 气泡特效的核心在于BubbleEffect类,它继承自Manim的Animation类,通过重写关键方法来实现气泡的上升、变大和透明度变化效果。
  • 操作系统缓存机制深度解析:从页缓存到内存映射,超越Redis的性能优化之道
  • 深智微:华润微官方授权代理商,如何让型号、库存交期与项目交付协同推进
  • 新用户福利,千问新用户福利怎么领,领取8元优惠券,附最新口令
  • Redis缓存:Python操作Redis实战
  • 行测申论试卷|公务员申论刷题|数量关系备考
  • 2026年人工智能发展的新风口:从“数字智能”到“物理智能”的范式革命
  • Qt——文本绘制技巧
  • 学习一门语言——Python(自学版)
  • 你的输出第一行肯定和我不一样,且每次运行的输出肯定不一样。
  • 乳牙蛀了不用管?避开护牙误区,科学守护孩子恒牙健康
  • info = {“k1“:1,“k2“:“222“,“k3“:“guohan“} 可变类型不可以做字典的键(列表,字典,集合) 因此键可以是整数什么的如 info = {1:2}公
  • 闪迪 x300 2.5-sata
  • 通用二进制协议分析:基于AST的Protobuf动态解析与容错设计
  • — 一款针对 IT 团队开发的文档管理系统,基于 Golang 开发,内置项目管理,用户管理,权限管理等功能,可以用来储存日常接口文档,数据库字典,手册说明等文档。功能特色:
  • 零基础使用VMware虚拟机安装CentOS Linux超详细教程
  • 硬件学习第三天(阅读芯片手册)
  • c语言项目驱动学习--实例化(图书管理)--005-代码对比
  • 基于51单片机RFID车位车库管理系统/RC522读卡/车库收费系统2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • [智能体-612]:AGENTS.md 完整详解(OpenClaw 体系,对应 workspace 里的工作规范文件)