← 返回 AI 基础 首页 / 算法与AI / AI 基础 / RAG 进阶
AI 基础 · RAG 进阶

RAG 进阶:让大模型用上你自己的资料

大模型再聪明,也不知道你公司内部那本《员工手册》写了啥,更不知道昨天刚发的公告。RAG(检索增强生成)就是:先去你的资料库里把相关段落捞出来,塞进提示词,再让模型照着答。这一课讲怎么把"粗捞"升级成"精捞"——切块、选向量、混合检索、重排序,一个都不能少。

① RAG 的基本流水线

1切块 Chunking
把长文档切成一段段小文本。
2向量化 Embedding
每块转成一个向量存进库。
3检索
用户问题找最相似的几块。
4生成
把捞到的块连同问题交给大模型作答。
为什么要切块整篇文章太长,模型塞不下、也抓不住重点;切成合适大小的块,既能精准检索,又能完整放进上下文。切块切得好不好,直接决定 RAG 答得准不准。

② Chunking 策略:怎么切才不把句子切两半

策略做法优缺点
固定大小按 token 数硬切,如每 500 token 一块,带重叠简单快,但可能把一句话切两半、上下文断裂
递归切分优先按段落→句子→词逐级切,尽量在自然边界断保留语义完整,最常用、性价比高
语义切分用 embedding 检测语义突变点,话题一变就切块内话题纯,但慢、成本高
块大小怎么定太小(如 100 token)信息不全;太大(如 2000 token)检索不精准、还浪费上下文。经验值 300–800 token,留 10%–20% 重叠防止边界信息丢失。

③ Embedding 模型选择:把文字变成向量

Embedding 模型负责把一段文字映射成一串数字(向量),意思相近的句子向量也相近。选哪个很关键:

模型特点适合
OpenAI text-embedding-3效果稳、开箱即用、按调用收费图省事、可联网的场景
BGE(智源)开源、中文效果强、可本地部署中文知识库、要私有化
M3E开源轻量、中英双语资源有限、快速起步
小贴士查询和文档最好用同一个 embedding 模型,否则两边向量不在一个空间里,相似度算出来全乱。

④ Hybrid Search:向量 + 关键词一起上

纯向量检索擅长"意思相近",但遇到专有名词、编号、药名、代码变量就抓瞎——因为它是按语义模糊匹配,不是精确找词。这时候要叠上传统的关键词检索。

方式原理强项弱项
BM25(关键词)统计词频,谁命中关键词多谁排前精确名词、编号、缩写不懂同义改写
向量检索语义相似度同义、换个说法也能找到对精确名词不敏感
Hybrid(融合)两路各召回一批,加权合并排序两者通吃,准确率最高链路稍复杂
融合常用做法两路结果分别归一化分数,按权重相加:
$score = \alpha \cdot score_{向量} + (1-\alpha)\cdot score_{BM25}$,$\alpha$ 常取 0.5 左右再调。

⑤ Rerank 重排序:先粗筛,再精排

召回阶段为了快,一次捞 20–50 条,但这里面有真有假。Rerank(重排序)是用一个更强大但更慢的 cross-encoder 模型,把"问题 + 每篇文档"放一起重新打分,挑出最相关的 top 3–5 条喂给大模型。

阶段模型追求数量
召回 Recall向量/BM25快,别漏掉相关的20–50 条
重排 Rerankbge-reranker 等准,把最相关的顶上来精排到 3–5 条
为什么要两段式如果直接用大模型对 50 条逐篇精读,太慢太贵;先粗召回省时间,再用 rerank 精排,速度和准确率兼得。bge-reranker 是中文场景常用的开源重排模型。

⑥ Query 改写、多轮 RAG 与 HyDE

技巧解决什么问题怎么做
Query 改写用户问得口语化、缺上下文先让大模型把问题改写成更适合检索的标准问句
多轮对话 RAG"那它多少钱?"里的"它"指代不明结合历史把指代补全,再去检索
HyDE问题太抽象,直接检索效果差先让模型"脑补"一个假设答案,用这个假答案的向量去检索真文档
HyDE 的思路人问"怎么缓解失眠",直接搜可能匹配不好;先让模型编一段"假设的失眠建议",这段文字的向量反而更接近真正相关的文档段落——用想象去钓真相。

⑦ 三个例子:RAG 调优实战

例 1 · 切块把答案切没了
用户问"年假有几天",答案在"年假规定:工作满 1 年享 5 天"这句话里。
如果硬切正好在"5 天"处断开,检索到的那半句就残缺。改用递归切分 + 留重叠,答案就完整了。
例 2 · 靠关键词找到编号
用户搜"Q3-2024 报销标准"。
纯向量可能把"报销"语义相关的都捞出来,但漏掉精确编号;BM25 一眼命中含"Q3-2024"那篇。Hybrid 融合两路,结果最稳。
例 3 · Rerank 把错的挤下去
召回 30 条,其中第 1 条是"差旅费报销",第 18 条才是"餐饮费报销"。
用户问的是餐饮费。向量召回把差旅费排前面是因为都带"报销";rerank 模型精读问题和每篇文档后,把餐饮费那条顶到第一位。
防坑提示 ① 别一上来就上复杂架构——大多数场景"递归切块 + BGE + 向量检索 + 重排"就够好。
② 检索不到相关内容时,模型会硬编答案。要么提升召回,要么让模型"不知道就说不知道"。
③ Embedding 模型换了,历史向量库必须全量重建,否则语义空间对不上。

⑧ 折叠自测(点开看答案)

基础1. RAG 解决大模型的什么痛点?

大模型不知道你私有的、最新的资料。RAG 先从知识库检索相关段落,再让模型基于这些资料回答,解决幻觉和知识过时问题。

中档2. 为什么要做 Hybrid Search(向量 + BM25)?

向量擅长语义相似(同义改写),BM25 擅长精确关键词(编号、专有名词)。两者融合后既懂意思又能精确命中,召回更全更准。

拔高3. Rerank 为什么放在召回之后,而不是直接用它?

Rerank 模型精读"问题+文档"对,更准但慢、贵。库里成千上万篇文档不可能全精排一遍。所以先用快的召回粗筛出 20–50 条,再用 rerank 精排出 top 3–5,速度与精度兼顾。

⑨ 费曼三问:讲给自己听

问 1:RAG 和直接问大模型有啥区别?
直接问靠模型死记的旧知识;RAG 先查你的资料再答,更新更准、还能溯源。
问 2:为什么不能整篇文档直接塞给模型?
太长塞不下、也抓不住重点;切块后只把最相关的几段捞出来,既省 token 又准。
问 3:召回和重排分工是什么?
召回求快求全(别漏),重排求准(把最相关顶上来),两段配合。
口述全链路
"RAG 就是先切块、向量化,用户提问时检索相关段落,再让大模型照着答。"
"块别切太碎,用 BGE 类中文向量模型;检索上向量加 BM25 混合,再用 rerank 精排。"
"指代模糊就改写查询,问题太抽象就用 HyDE 假答案钓真文档。"

⑩ RAG vs 微调 vs 全塞上下文:怎么选

有了私有数据,到底是 RAG、微调还是整篇塞进去?一张表说清:

方案适合优点缺点
RAG知识频繁更新、要溯源、数据多更新便宜、可引用出处依赖检索质量
微调要改语气/风格/固定技能风格内化、无需每次塞资料知识更新贵、不擅长记事实
全塞上下文资料很短(几页内)最简单、信息最全长了塞不下、费 token
经验法则要"记住最新事实"用 RAG;要"改变说话风格"用微调;资料短就直接塞。两者常组合:RAG 供事实,微调定风格。

⑪ 向量数据库是干嘛的

切好块、算好向量后,要存起来并能快速按相似度找出来——这就是向量数据库的活:

方案特点适合
FAISSMeta 开源的向量检索库,库本身自己写程序、离线试验
Chroma轻量、上手快原型、小项目
Milvus / Qdrant生产级、可扩展企业大规模知识库
别神化向量库本质是"给向量建了快速相似索引",核心还是召回那套逻辑,不是什么黑魔法。

⑫ 常见误区辨析

误区 1:Embedding 模型随便选一个就行不同模型向量空间不通用,查询和文档必须同模型;换模型必须全量重建索引。
误区 2:向量检索万能,不用关键词专有名词、编号、代码变量靠 BM25 更稳,纯向量会漏。生产建议 Hybrid。
误区 3:召回越多越好塞太多无关片段会稀释重点、浪费上下文,还可能带偏模型。重排后只留 top 3–5。
误区 4:RAG 就不会幻觉了检索到错的或片面的资料,模型照样会据此一本正经地错。要加"找不到就说不知道"的约束。

⑬ 分层练习(点开解析)

基础RAG 四个步骤依次是?
切块 → 向量化入库 → 按问题检索相关块 → 把块交给大模型生成答案。
基础为什么查询和文档要用同一个 Embedding 模型?
不同模型向量空间不同,混用后相似度不可比,检索会乱。
中档BM25 擅长找什么?
精确关键词:编号、专有名词、药名、代码变量——它数词频,不做语义模糊。
中档Recursive(递归)切分比固定大小好在哪?
优先在段落、句子等自然边界断开,避免把一句话或一个答案从中间切坏。
中档多轮 RAG 为什么要做 Query 改写?
用户常说"那它多少钱"这种指代句,得结合历史把"它"补全成完整问题再检索。
拔高HyDE 为什么能用"假答案"检索到真文档?
先让模型脑补一段假设答案,这段文字在语义空间里反而更接近真正相关的文档,再用它的向量去召回。
拔高RAG 和微调分别更适合解决什么?
RAG 适合"频繁更新的事实"和溯源;微调适合"固定的语气风格/技能"。常组合使用。

⑬ 三句记忆口诀

① 切块别切一半句,递归切分留重叠;查询文档同模型。
② 向量懂语义、BM25 抓名词,Hybrid 两路融合。
③ 先粗召回 20-50 条,再用 rerank 精排出 top 3-5。
问题对策
指代不清多轮 Query 改写
问题太抽象HyDE 假答案检索
要更新的事实用 RAG 而非微调

📌 知识链路

前置知识(先学) · 上一章 · GPT 系列:先有一个强模型,再用 RAG 给它配资料。
本节位置 把通用大模型接到你的私有知识上,这是落地最常见的工程形态。
下一步(学完去) · 下一章 · 推理优化:资料接好了,再把它跑得又快又便宜。
← 上一章 · GPT 系列 AI 基础