RAG 到底是什么?用一个图书馆的比喻讲透

📚 本文是《AIGC 人话系列》第 2 篇 > 系列目录:01 内容理解|02 RAG(本篇)|03 三招选型|04 工具清单|05 动手实战|06 踩坑|07 行业观察

上一篇我们聊完了「向量」,这一篇讲怎么用向量,把 AI 从「只会背书」改造成「会翻书」。

引子:一个能把 AI 问懵的问题

先问你一个简单问题:

我们公司的年假有多少天?

你把这句话原封不动丢给任何一个大模型,它会怎么做?

它会一本正经地编一个答案。可能是 5 天,可能是 15 天,看起来还很自信。

但如果你顺手把《员工手册》一起丢给它,再问同样的问题------它大概率能答对。

同一个模型、同一个问题,差别只在于:这一次,它有资料可翻了。

这中间的技术,就叫 RAG。

一、先搞明白:大模型的「记忆」其实是假的

很多人以为大模型像一个随时能查的数据库,其实不是。

训练一个大模型,更像是考前把一屋子书背下来:

  • 背完之后,脑子里剩下的是压缩过的印象,不是原文
  • 训练之后发生的新事(你公司的规定、今天的新闻),它完全不知道
  • 细节也记不准,记住个大概,细节就开始「合理推测」

所以大模型有三个天生的短板:

短板 表现
知识过期 不知道训练之后的事
不懂私有资料 不知道你公司的文档
细节不准 会「幻觉」,编得还很像真的

关键洞察 :这三个问题的本质都是同一个------它脑子里没有那份资料。

那解决办法就很朴素了:既然它记不住,那就别让它记,改成开卷考试。

二、RAG 是什么?给 AI 配一个图书馆

RAG 全称 Retrieval-Augmented Generation,中文叫「检索增强生成」。别被这名字吓到,拆开看就三件事:

英文 中文 人话
Retrieval 检索 先从你的资料里,找出最相关的几段
Augmented 增强 把这几段塞进它要回答的问题里
Generation 生成 它照着这几段话,组织出答案

一句话总结:

不让 AI 硬背,改成开卷翻书。

用图书馆打比方

想象你要找一个超级学霸实习生 干活。他博览群书,但从没来过你公司,也没看过你公司的任何文件。

这时候你有两个选择:

  1. 让他硬背(= 微调模型):把公司规定塞进他脑子里。成本高、改一次要重背一次。
  2. 给他配个图书馆 + 管理员(= RAG):文档整理好书架,他每次答题前先去借几页。

显然后者更快、更便宜、改起来也方便。RAG 就是那个「图书馆 + 管理员」。

角色对照表

RAG 里的组件 图书馆里的角色
你的文档(PDF/Word/网页) 一屋子的书
切分(Chunk) 把书拆成一页页
向量化(Embedding) 给每一页贴一张「内容标签」
向量数据库 按标签排好序的书架
检索器(Retriever) 管理员:你说要啥,他去拿
大模型(LLM) 拿到几页就能答题的学霸

上一篇讲过的 Embedding,在这里终于派上用场------它就是那张「内容标签」,让书架上意思相近的页面挨在一起。

三、完整流程长这样

RAG 其实有两条流水线:一条是提前把资料建好库,一条是每次提问时跑的。

看明白了吗?"检索"这一步,本质是一场超大规模的"找相似"。

你的问题和文档里的每一段,都被变成了向量。谁的向量离你的问题最近,谁就是「最相关的那几段」,被捞出来塞进提示词。

四、为什么说「切分」才是 RAG 的胜负手

大部分人第一次搭 RAG,效果都很差。然后到处换模型、换向量库、调参数------但八成问题出在最不起眼的一步:切分。

切分方式 后果
切得太大 一段塞满噪音,模型抓不住重点
切得太小 语义被切碎,「它」指的谁都不知道了
硬按字数切 表格、代码被拦腰切断,直接报废

一句话:垃圾进,垃圾出。 资料切得乱七八糟,后面再高级的模型也救不回来。

好的切分讲究两点:

  1. 按语义边界切------按段落、按小标题,而不是按第 500 个字
  2. 留一点重叠(overlap)------相邻两段共享几十个字,避免关键信息正好落在接缝上

五、20 行代码,看个大概

原理讲完了,实际用起来其实就这么几步(伪代码,看得懂就行):

python 复制代码
# ① 建库(做一次)
docs   = load("员工手册.pdf")
chunks = split(docs, size=500, overlap=50)   # 切分,留 50 字重叠
vectors = embed(chunks)                      # 每段变成向量
db.add(vectors, chunks)                      # 存进向量数据库

# ② 问答(每次提问)
q = "我们公司的年假有多少天?"
hits = db.search(embed(q), top_k=3)          # 找出最相关的 3 段

prompt = f"""
请严格根据以下资料回答问题,资料里没有的就直说不知道。

【资料】
{'\n'.join(hits)}

【问题】{q}
"""

answer = llm(prompt)                         # 让模型照着资料组织答案

注意 prompt 里那句「资料里没有的就直说不知道」------这一句能挡掉一大半的幻觉,是 RAG 的隐藏保命符。

六、RAG 到底能干嘛

  • 企业知识库问答:把公司文档喂进去,新人自助查规章制度
  • 智能客服:答案从产品手册里来,而不是模型瞎编
  • 个人第二大脑:笔记、论文、收藏夹,全部变成可提问的资料库
  • 长文档理解:几百页的合同,直接问「违约金是多少」

七、泼盆冷水:RAG 不是万能药

RAG 很实用,但它也不是银弹。它的失效方式非常典型:

症状 真正的原因
答得像模像样但不对 检索没检索到------库里根本没有那段资料
检索到了却答歪 模型没用好那几段,提示词没写清
简单问题能答,复杂问题崩 多跳问题(要串好几处信息)依然很难
明明有资料却说不知道 切分把关键信息切丢了

所以调试 RAG 的正确姿势是:先看检索结果,再看生成结果。 十次有八次,问题出在检索那一步。

写在最后

RAG 其实就三句话:

  1. 别让模型硬背,改成开卷翻书
  2. 流程是 检索 → 增强 → 生成
  3. 效果好不好,八成看切分和检索

上一篇我们讲了「向量」,这一篇讲的是「怎么用向量」,两篇连起来看,AIGC 应用的地基就打好了。

下一篇,我们聊 Prompt、微调、RAG 到底该用哪个------很多人一上来就选错,白花了不少钱。

如果这篇对你有用,欢迎点赞收藏。也欢迎在评论区聊聊:你踩过 RAG 的哪些坑?

相关推荐
flash俊杰6 小时前
零模型调用的知识编译器:重叠分片缝合、规则抽取与世代事务
后端·aigc
Rocky Ding*6 小时前
DeepSeek-Bot技术拆解:持久化Agent团队如何管理记忆、上下文与协作成本
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·智能体
Sayai7 小时前
ComfyUI+MiniMax H3 文生视频实测:12G 显存跑 21G 模型,5 分钟出片自带音效(附模型与工作流)
人工智能·aigc·音视频·文生视频·comfyui·minimax
技灵AI7 小时前
图生视频提示词怎么写:一张商品图生成整条演示视频
人工智能·aigc·音视频·提示词
feiyu_gao7 小时前
Spec→实现→结晶:一种让 AI 项目不失控的纪律框架
架构·aigc·vibecoding
细雨若静9 小时前
DeepSeek Harness vs opencode:接入第三方模型后谁更聪明
aigc·ai编程
TomEval9 小时前
【测AI】第12篇:NLP / CV / 语音 —— 三大 AI 方向速通
人工智能·python·自然语言处理·aigc·测试用例
AI创界者10 小时前
进阶实战:AsyncIO 异步环境下的装饰器与代理模式演进
人工智能·aigc
来福猿10 小时前
2026 数字人技术栈全景图:从一张照片到 7×24 小时直播
aigc