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

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


































