Skip to content

RAG:檢索增強生成

前言

為什麼 ChatGPT 有時候會「一本正經地胡說八道」? 大語言模型的知識來自訓練資料,但訓練資料有截止日期,也不包含你公司的內部文件。RAG(Retrieval-Augmented Generation,檢索增強生成)就是解決這個問題的核心技術——讓 AI 在回答之前,先去「查資料」。

這篇文章會帶你學什麼?

學完這章後,你將獲得:

  • 核心概念理解:明白 RAG 是什麼、為什麼需要它,以及它如何解決大模型的「幻覺」問題
  • 完整流程認知:掌握從文件載入、分塊、向量化到檢索、生成的端到端流程
  • 技術選型能力:了解不同分塊策略、檢索方法的優劣,能根據場景做出選擇
  • 架構演進視角:理解 RAG 從 Naive 到 Advanced 再到 Modular 的演進路線
  • 實踐決策能力:知道什麼時候該用 RAG、什麼時候該用微調
章節內容核心概念
第 1 章RAG 基礎流程索引、檢索、生成三階段
第 2 章文字分塊策略固定分塊、語意分塊、遞迴分塊
第 3 章檢索技術向量檢索、關鍵字檢索、混合檢索
第 4 章架構演進Naive RAG → Advanced RAG → Modular RAG
第 5 章RAG vs 微調兩種方案的適用場景對比

0. 全景圖:為什麼大模型需要「查資料」?

想像你是一個博學的教授,讀過無數書籍。但如果有人問你「昨天公司的銷售資料是多少」,你肯定答不上來——因為這些資訊不在你讀過的書裡。

大語言模型面臨的就是同樣的困境:

  • 知識有截止日期:GPT-4 的訓練資料截止到某個時間點,之後發生的事它不知道
  • 缺乏私有知識:你公司的內部文件、產品手冊、客戶資料,模型從未見過
  • 容易產生幻覺:當模型不確定答案時,它傾向於「編造」一個看起來合理的回答

RAG 的核心思想

RAG 的解決方案非常直覺:在讓模型回答之前,先幫它找到相關的參考資料。 就像開卷考試——你不需要記住所有知識,只需要知道去哪裡找、怎麼找。

RAG = 檢索(Retrieval)+ 增強(Augmented)+ 生成(Generation)


1. RAG 基礎流程:索引、檢索、生成

RAG 的工作流程可以分為兩個階段:離線索引線上查詢

離線階段就像圖書館的編目工作——把所有書籍分類、編號、上架,方便日後查找。線上階段則是讀者來圖書館查資料的過程——根據問題找到相關書籍,然後綜合資訊給出回答。

选择问题:
💬
用户提问
我们公司的年假政策是什么?
🔍
语义检索
📋
上下文组装
🤖
LLM 生成
返回结果
用户提问 — 详细说明
用户向系统提出一个自然语言问题。这个问题会被转化为向量表示,用于后续的语义检索。
1 / 5

三個核心階段

  1. 索引階段(Indexing):將原始文件載入、清洗、分塊,然後透過嵌入模型轉化為向量,存入向量資料庫。這是一次性的準備工作。
  2. 檢索階段(Retrieval):使用者提問時,將問題也轉化為向量,在向量資料庫中搜尋最相似的文件片段。
  3. 生成階段(Generation):將檢索到的文件片段和使用者問題一起拼接為 Prompt,交給大模型生成最終回答。
階段輸入輸出關鍵技術
索引原始文件向量資料庫文字分塊、嵌入模型
檢索使用者問題Top-K 文件片段向量相似度、重排序
生成問題 + 上下文最終回答Prompt 工程、LLM

2. 文字分塊:把大象裝進冰箱

文字分塊是 RAG 中最容易被忽視、卻對效果影響最大的環節。為什麼需要分塊?因為大模型的上下文視窗有限,我們不可能把整本書塞進去。更重要的是,分塊的品質直接決定了檢索的品質

想像你在圖書館找一本書的某個知識點。如果整本書是一個「塊」,檢索到了也沒用——你還是得翻遍全書。但如果按章節甚至段落分塊,就能精準定位到你需要的內容。

输入文本
固定大小
按照固定的字符数切分文本,是最简单直接的分块方式。通常会设置一定的重叠区域(overlap),避免在切分边界丢失上下文。
块大小: 80 字符重叠: 20 字符
分块结果 共 0 个块
请输入文本后查看分块结果
策略优点缺点适用场景
📏 固定大小实现简单,块大小均匀可能在句子中间截断结构化程度低的长文本
📝 按句子保持句子完整性块大小不均匀文章、报告等自然文本
🧠 语义分块主题连贯,语义完整计算成本高,需要嵌入模型多主题混合的复杂文档
🔄 递归分块兼顾结构与大小实现较复杂通用场景,推荐默认选择

分塊策略的選擇

  • 固定大小分塊:按字元數或 token 數切分,簡單粗暴但可能切斷語意
  • 遞迴分塊:先按段落分,段落太長再按句子分,保持語意完整性
  • 語意分塊:用嵌入模型判斷語意邊界,相似度突變處切分
  • 文件結構分塊:利用 Markdown 標題、HTML 標籤等結構資訊分塊

沒有「最好」的分塊策略,只有最適合你資料的策略。一般建議從遞迴分塊開始,chunk 大小 200-500 tokens,overlap 10-20%。


3. 檢索技術:如何找到最相關的內容?

分塊完成後,下一個關鍵問題是:使用者提了一個問題,怎麼從成千上萬個文件片段中找到最相關的那幾個?

這就像在一個巨大的圖書館裡找書。你可以按書名關鍵字搜尋(關鍵字檢索),也可以描述你想要的內容讓圖書管理員幫你找(語意檢索),最好的方式是兩者結合(混合檢索)。

选择查询:
1
查询编码
2
向量搜索
3
重排序
4
Top-K 选择
查询编码
将用户的自然语言查询通过嵌入模型(如 text-embedding-ada-002)转化为高维向量表示。这个向量捕捉了查询的语义信息。
查询文本
如何申请年假?
↓ 嵌入模型编码
查询向量
0.12-0.450.780.33-0.210.560.89-0.14
檢索方式原理優勢劣勢
關鍵字檢索(BM25)基於詞頻和逆文件頻率精確匹配、速度快無法理解語意、同義字失效
向量檢索基於嵌入向量的餘弦相似度理解語意、支援模糊匹配對專有名詞不敏感
混合檢索融合關鍵字和向量檢索結果兼顧精確和語意需要調權重、複雜度高

重排序(Reranking)

檢索到候選文件後,通常還需要一步「重排序」。初始檢索追求召回率(盡量不遺漏),重排序追求精確率(把最相關的排到最前面)。常用的重排序模型有 Cohere Rerank、BGE Reranker 等,它們使用交叉編碼器對 query-document 對進行精細打分。


4. 架構演進:從簡單到智慧

RAG 技術在短短兩年內經歷了三代演進,每一代都在解決上一代的痛點。

最基础的 RAG 架构,流程简单直接:索引 → 检索 → 生成。适合快速原型验证,但在复杂场景下效果有限。
📄
文档加载
✂️
文本分块
🔢
向量化
🔍
检索
🤖
生成
点击流程节点查看详细说明
架构特点
实现简单,上手快
适合结构化知识库
⚠️检索质量依赖分块策略
无法处理复杂查询
架构演进路线
Naive RAG
2023
Advanced RAG
2024
Modular RAG
2025

三代 RAG 架構對比

  • Naive RAG(2023):最基礎的「索引→檢索→生成」流程,實作簡單但效果有限。問題包括:檢索品質不穩定、無法處理複雜查詢、容易引入噪音上下文。
  • Advanced RAG(2024):在 Naive RAG 基礎上增加了查詢改寫、混合檢索、重排序、上下文壓縮等最佳化環節,顯著提升了檢索精度和生成品質。
  • Modular RAG(2025):將 RAG 拆解為可插拔的模組,支援路由判斷、自適應檢索、自我反思等進階能力。可根據查詢類型動態選擇最佳處理流程。

5. RAG vs 微調:該選哪個?

當你想讓大模型掌握特定領域的知識時,通常有兩條路:RAG 和微調(Fine-tuning)。它們不是互斥的,而是互補的。

打個比方:微調像是讓學生上培訓班,把知識內化到大腦裡;RAG 像是給學生發參考書,考試時可以翻閱。兩種方式各有優劣,關鍵看你的具體需求。

RAG 检索增强生成
VS
Fine-tuning 微调
知识更新速度
实时更新,修改文档即生效
需要重新训练,周期长
实施成本
搭建检索系统,成本适中
💰
需要 GPU 资源和标注数据
回答风格控制
依赖 Prompt 工程
🎨
可深度定制输出风格
幻觉控制
有据可查,可追溯来源
🎯
仍可能产生幻觉
推理延迟
需要额外的检索步骤
⏱️
直接生成,无额外开销
私有数据安全
数据留在本地,不进入模型
🔒
数据融入模型权重
一句话总结
RAG 像是给模型配了一个实时更新的参考书库,适合知识频繁变化的场景; 微调像是让模型上了一门专业课,适合需要特定风格或领域深度的场景。 实际项目中,两者常常结合使用。
維度RAG微調
知識更新即時更新,改文件即可需要重新訓練
成本低(無需 GPU 訓練)高(需要訓練資源)
可解釋性高(可追溯來源)低(知識內化在權重中)
適用場景知識庫問答、文件檢索風格遷移、特定任務最佳化
幻覺控制較好(有參考依據)一般(仍可能幻覺)

實踐建議

大多數場景下,先試 RAG。RAG 的優勢在於:不需要訓練、知識可即時更新、回答可追溯來源。只有當你需要改變模型的「行為模式」(比如輸出格式、語言風格、推理方式)時,才考慮微調。最強的方案往往是 RAG + 微調 的組合。


總結

RAG 是當前讓大模型「落地」最實用的技術之一。它的核心價值在於:讓模型的回答有據可查、知識可即時更新、幻覺可有效控制。

回顧本章的關鍵要點:

  1. RAG 解決的核心問題:大模型知識過時、缺乏私有資料、容易幻覺
  2. 三階段流程:索引(離線準備)→ 檢索(線上查找)→ 生成(綜合回答)
  3. 分塊是基礎:分塊品質直接決定檢索品質,選擇合適的分塊策略至關重要
  4. 檢索是關鍵:混合檢索 + 重排序是目前效果最好的組合
  5. 架構在演進:從 Naive RAG 到 Modular RAG,系統越來越智慧和靈活
  6. RAG 和微調互補:大多數場景先試 RAG,需要改變模型行為時再考慮微調

延伸閱讀