系統梳理 RAG 系統的 21 種分塊策略
檢索增強生成(RAG)是許多 AI 工程師又愛又恨的技術(包括我)。
沒錯,因為從理論上看,它簡單極了:“從你的定制數據中檢索正確的上下文,然后讓大語言模型基于此生成回答”。
但在實踐中,你不得不面對海量雜亂無章的數據 —— 這些數據以你見過的最混亂隨機的格式存儲,接著就是數日絞盡腦汁的試錯:
- 調整文本塊(tweaking chunks)
- 切換嵌入模型(switching embedding models)
- 替換檢索器(swapping out retrievers)
- 微調排序器(fine-tuning rankers)
- 重寫提示詞(rewriting prompts)
而模型依然回復:“我找不到足夠的信息來回答你的問題”。
更糟糕的是,它還會一本正經地輸出完全錯誤的答案(產生幻覺)。
毋庸置疑,RAG 系統中存在許多復雜的組件,但真正默默決定整個系統是否能正常運行的關鍵因素其實是分塊(chunking)。
不同的數據類型、文件格式、內容結構、文檔長度和使用場景,都需要匹配不同的分塊策略。
一旦出錯,你的模型要么抓不住重點,要么... 好吧,還是抓不住重點。
本文將解析 21 種分塊策略(從基礎到進階),并說明何時該用何種策略,讓你的 RAG 系統不再...掉鏈子。
1.基礎分塊法(按換行符分割)Naive chunking (split by newline)
遇到換行符就分割文本。僅此而已。
基礎分塊法示例 | 此圖片由原文作者制作
適用場景:
- 處理由換行符統一分隔的文本:筆記、項目列表、FAQ、聊天記錄或每一行都包含完整語義的文字轉錄稿。
注意:如果內容行過長,可能超出 LLM 的詞元限制。如果內容行過短,模型可能遺漏上下文或產生幻覺。
2.定長分塊法 Fixed-size/ fixed window chunking
按固定字符數/單詞數切割文本(即便這樣會切斷完整句子或語義單元)。
image.png
定長分塊法示例 | 此圖片由原文作者制作
適用場景:
- 適用于原始的、雜亂的文本數據,如掃描文檔、質量較差的轉錄文本,或無標點、無標題、無其他結構的大型文本文件。
3.滑動窗口分塊法 Sliding window chunking
類似定長分塊,但每個文本塊會與前塊內容重疊,以保持跨塊上下文之間的關聯。
滑動窗口分塊法示例 | 此圖片由原文作者制作
適用場景:
- 處理需要保持長句間邏輯連貫性的文本類型:議論文、敘述性報告、自由形式的寫作等。
- 與定長分塊法類似,適用于無結構的文本(無標題、無標點、無框架等),但需注意詞元消耗與上下文連貫性間的平衡。
4.按句分塊法 Sentence-based chunking
在句子結尾處分割文本(通常以句號、問號或感嘆號為標記)。
按句分塊法示例 | 此圖片由原文作者制作
適用場景:
- 適用于語義清晰的規整文本,每句話都承載著完整的語義,如技術博客、內容摘要或文檔。
- 可作為初級的分塊手段產出小而聚焦的文本塊,便于后續通過更復雜的分塊技術重新組合或重排序這些文本塊。
5.按段分塊法 Paragraph-based chunking
依據段落分割文本(通常以雙換行符為界),使每塊均包含完整的語義單元。

按段分塊法示例 | 此圖片由原文作者制作
適用場景:
- 當按句分塊所得內容過于零碎時
- 處理已具備段落結構的文檔,如議論文、博客文章或研究報告
6.按頁分塊法 Page-based chunking
將每個物理頁面視為一個獨立文本塊。
按頁分塊法示例 | 此圖片由原文作者制作
適用場景:
- 處理含固定頁面的文檔,如掃描版 PDF、演示文稿或書籍。
- 需保留頁面布局的檢索場景(如在檢索時需要引用頁碼)。
7.按預定結構分塊法 Structured chunking
依據預定結構(如具有固定格式的系統日志記錄、結構化數據中的預定義字段、HTML 標簽或 Markdown 元素)分割文本。
按預定結構分塊法示例 | 此圖片由原文作者制作
適用場景:
- 處理結構化/半結構化數據,如系統日志、JSON 記錄、CSV 文件或 HTML 文檔。
8.基于文檔層級的分塊法 Document-Based Chunking
基于文檔固有結構分塊(按標題/小標題/章節劃分)。
基于文檔層級的分塊法示例 | 此圖片由原文作者制作
適用場景:
- 當源文件具備清晰的章節結構時,如在技術文章、操作手冊、教材或學術論文中。
- 可作為進階分塊技術(如按層級分塊(hierarchical chunking))的預處理步驟。
9.基于關鍵詞的分塊法 Keyword-based chunking
在預設關鍵詞出現處分割文本,將其視為邏輯斷點。
基于關鍵詞的分塊法示例(關鍵詞為“Note”)| 此圖片由原文作者制作
適用場景:
- 文檔無標題結構但含標志性的關鍵詞(且這些關鍵詞可穩定標記新主題的起始)時使用
10.基于實體的分塊法 Entity-based chunking
使用命名實體識別(NER)模型檢測人物、地點、產品等實體,將相關文本圍繞每個實體分組形成區塊。
基于實體的分塊法示例 | 此圖片由原文作者制作
適用場景:
- 處理特定類型的實體(人物/地點/組織等)對文檔理解起決定性作用的文件,如新聞報道、法律合同、案例研究或電影劇本。
11.基于詞元數的分塊法 Token-based chunking
通過 tokenizer(分詞器)按詞元數量分割文本。
建議結合按句分塊法(sentence chunking)等技術使用,避免破壞句子完整性導致上下文被破壞。
適用場景:
- 無標題/無段落結構的非結構化文檔。
- 使用低詞元限制的 LLM 時(避免響應被強制截斷或長文本輸入被丟棄)。
12.基于主題的分塊法 Topic-based chunking
當文本主題發生變化時,可以通過以下方式對文本進行分塊:
- 首先,將文本拆分為小單元(句子/段落)
- 然后,使用主題建模或聚類算法將相關單元合并為區塊
基于主題的分塊法示例(使用聚類算法) | 此圖片由原文作者制作
適用場景:
- 當文檔涵蓋多個主題,且需保持語義焦點時。
- 適用于主題轉變較為平緩但未通過明確的標題或關鍵詞標注的文本。
13.表格感知分塊法 Table-aware chunking
獨立識別表格內容,并按 JSON 或 Markdown 格式分塊(可逐行/逐列/整表處理)。
表格感知分塊法示例 | 此圖片由原文作者制作
適用場景:
- 含表格元素的文檔。
14.內容感知分塊法 Content-aware chunking
根據內容類型動態調整分塊策略(為段落/表格/列表等內容適配不同規則)。
適用場景:
- 混合格式的文檔(含多種文本結構)。
- 需保持原生格式完整性的場景(表格不分割/段落不截斷等)。
15.上下文增強分塊法 Contextual chunking
通過 LLM 實現:
- 分析知識庫的部分或全部內容。
- 在嵌入前為每個文本塊注入簡短且相關的上下文
上下文增強分塊法示例 | 此圖片由原文作者制作
適用場景:
- 知識庫的全部內容或部分內容在 LLM 的詞元限額內。
- 處理復雜文檔(如財報/合同等)。
16.語義分塊法 Semantic chunking
基于嵌入相似度聚合主題相關的句子/段落,保持語義聚焦性。
適用場景:
- 當按段分塊法或定長分塊法失效時
- 處理含混雜主題的長文檔。
17.遞歸分塊法 Recursive chunking
首先使用大粒度的分隔符(如段落)分割文本。
如果任何生成的分塊超過預設的分塊大小限制,對這些區塊遞歸使用小粒度分隔符(如句子或單詞)進行分割,直至所有分塊都符合所需大小。
適用場景:
- 處理句子長度不規則或不可預測的文本,如訪談記錄、演講內容、自由形式的寫作內容。
18.嵌入優先分塊法 Embedding chunking
常規流程是先分塊后嵌入,但此方法先將所有句子全部嵌入,再按順序逐一處理,若相鄰句的相似度高于設定閾值則合并為一組,低于閾值則進行拆分。
適用場景:
- 無結構(無句子分隔/標題/章節符/標記等)的文檔
- 當基礎技術(如滑動窗口分塊法)效果不佳時
19.基于大模型/智能體的分塊法 Agentic / LLM-based chunking
將分塊的決策權完全交由 LLM,由其自主決定文本的分割方式。
適用場景:
- 當內容復雜或結構不明確,需要類似人類的判斷力來確定分塊邊界時
注意:該方法計算成本較高。
20.分層分塊法 Hierarchical chunking
將文本按照多個層次(如章節、子章節、段落)進行分塊,以便用戶能夠以不同詳細程度檢索信息。
image.png
適用場景:
- 具備清晰層次結構的文檔,如技術文章、手冊、教材、研究論文等
- 希望用戶在不丟失上下文的情況下,同時探索整體概述和詳細信息。
21.多模態分塊法 Modality-Aware Chunking
針對不同內容類型(文本、圖像、表格)實施差異化的分塊策略。
多模態分塊法示例 | 此圖片由原文作者制作
BONUS:混合分塊法 Hybrid chunking
融合多種分塊技術、啟發式規則、嵌入模型以及 LLM 來提升分塊過程的可靠性。
適用場景:
- 單一分塊方法效果不足時,需組合方案應對復雜的數據結構。



































