目录
1.固定长度分块-Fixed‑size Chunking
2.递归字符分块-Recursive Character TextSplitter
3.句子级分块-Sentence‑level Splitting
4.语义分块 Semantic Chunking
5.结构感知分块-Structure‑aware Chunking
6.LLM 智能分块-Agentic Chunking
7.父子分块 Parent‑Child Chunking(分层分块)
8.多模态分块(图文混排 PDF)
9.PDF表格如何分块
方案 1:小表格(整体 token≤500)
方案 2:超大 / 跨页长表格(token>800,几十上百行)
方案 3:扫描版 PDF,表格解析失败
表格与周围文本如何处理
父子分块如何结合表格(生产环境标准做法)
表格摘要子块(双索引策略)
表格分块避坑清单
分块是 RAG 的预处理核心,目标:块不能太大(噪声多、语义弥散),不能太小(语义断裂、上下文不足),直接影响召回质量。下面按:基础固定策略、语义感知分块、文档结构感知、高级智能分块、多模态分块,分别说明优缺点与适用场景。
原始待切文本(统一样例文本,用于对比大部分分块算法):
文本 A :
大模型检索增强生成 (RAG),通过外部知识库补充大模型固有知识,缓解幻觉。RAG 分为索引阶段和查询阶段。索引阶段:文档加载、文档分块、向量化、存入向量数据库。查询阶段:用户 query 向量化、向量库相似度检索、把检索到的上下文连同问题喂给大模型生成答案。RAG 性能受分块策略、Embedding 模型、检索器、重排器共同影响。分块是最前置的环节,分块不合理会造成后续无论怎么调检索器都很难提升效果。
1.固定长度分块-Fixed‑size Chunking
最经典、实现最简单。设置固定chunk_size(token / 字符)、chunk_overlap,滑动窗口切割,完全不看句子、段落、语义边界,到长度就切一刀。
参数示例:chunk_size=120字符,overlap=30字符
- Chunk1:大模型检索增强生成 (RAG),通过外部知识库补充大模型固有知识,缓解幻觉。RAG 分为索引阶段和查询阶段。索引阶段:文档加载、文档分块、向量化、存入向量数据库。查询阶段:用户 query 向量化、向量库相似度检索、把检索到的上下文连同问题喂给大模型
- Chunk2:把检索到的上下文连同问题喂给大模型生成答案。RAG 性能受分块策略、Embedding 模型、检索器、重排器共同影响。分块是最前置的环节,分块不合理会造成后续无论怎么调检索器都很难提升效果。
问题:Chunk1 末尾句子被硬生生截断 “喂给大模型”,后半句跑到下一个 chunk。语义断裂。


- ✅优点:实现最简单,速度最快;兼容任意脏文本;原型快速验证首选。
- ❌缺点:暴力切割,经常切断句子、逻辑单元;重叠带来重复内容。
- 🙂 适用:爬虫网页、无格式杂乱文本、快速 POC 原型。
2.递归字符分块-Recursive Character TextSplitter
多级分隔符,优先用大分隔符切,切完如果块依旧超过 size,就使用下一级更细分隔符继续切。 默认分隔符优先级:["\\n\\n", "\\n", "。", "!", "?", ",", " "]

Chunk1:大模型检索增强生成 (RAG),通过外部知识库补充大模型固有知识,缓解幻觉。RAG 分为索引阶段和查询阶段。索引阶段:文档加载、文档分块、向量化、存入向量数据库。
Chunk2:查询阶段:用户 query 向量化、向量库相似度检索、把检索到的上下文连同问题喂给大模型生成答案。RAG 性能受分块策略、Embedding 模型、检索器、重排器共同影响。
Chunk3:RAG 性能受分块策略、Embedding 模型、检索器、重排器共同影响。分块是最前置的环节,分块不合理会造成后续无论怎么调检索器都很难提升效果。
- ✅优点:工业界 RAG 基线方案;尽量保证句子完整;支持 markdown。
- ❌缺点:不懂语义,只看标点符号;如果一大段没有句号的长文本,退化成固定长度切割。
- 🙂 适用:Markdown 文档、技术文档、报告,绝大多数生产项目的基线。
3.句子级分块-Sentence‑level Splitting
原理
第一步:NLP 工具先完整切出一个个独立句子;
第二步:把连续多个句子累积拼接,接近目标 chunk_size 就停止,形成块。切割边界永远在句子末尾,不会切破一句话内部。
文本 A 拆出原始句子列表:
目标块大小:2 个句子为一块
Chunk1: 大模型检索增强生成 (RAG),通过外部知识库补充大模型固有知识,缓解幻觉。RAG 分为索引阶段和查询阶段。
Chunk2:
索引阶段:文档加载、文档分块、向量化、存入向量数据库。查询阶段:用户 query 向量化、向量库相似度检索、把检索到的上下文连同问题喂给大模型生成答案。
Chunk3:
RAG 性能受分块策略、Embedding 模型、检索器、重排器共同影响。分块是最前置的环节,分块不合理会造成后续无论怎么调检索器都很难提升效果。
4.语义分块 Semantic Chunking
不依赖标点、长度;依靠 Embedding 向量相似度判断语义边界。
流程:

5.结构感知分块-Structure‑aware Chunking
利用文档本身的层级结构(标题、章节、条款、列表)作为天然分割边界。

# RAG基础介绍
## 1.什么是RAG
RAG通过外部知识库补充大模型固有知识,缓解幻觉。
## 2.RAG两大阶段
### 2.1索引阶段
文档加载、文档分块、向量化、存入向量数据库。
### 2.2查询阶段
用户query向量化、相似度检索、上下文送入大模型生成答案。
##3.RAG影响因素
RAG性能受分块策略、Embedding、检索器、重排器共同影响。
真实 PDF 场景:MinerU 解析 PDF,提取标题树,基于标题树做结构分块。
- ✅优点:贴合文档原生知识单元;保留章节归属信息。
- ❌缺点:扫描 PDF 没有标题结构,直接失效;依赖文档解析质量。
- 适用:PDF 技术手册、标准规范、书籍、markdown 知识库。
6.LLM 智能分块-Agentic Chunking
交给大模型理解全文逻辑,识别知识单元,输出切分后的块数组。给 LLM 写 Prompt,让它做分块工作。

Prompt 示例:
将下面文本切分成语义完整的知识块,每个块 300‑500token,不要割裂完整逻辑,不要修改原文,输出 JSON 数组。 文本:【文本 A】
LLM 输出返回:
[
"大模型检索增强生成(RAG),通过外部知识库补充大模型固有知识,缓解幻觉。RAG分为索引阶段和查询阶段。索引阶段:文档加载、文档分块、向量化、存入向量数据库。",
"查询阶段:用户query向量化、向量库相似度检索、把检索到的上下文连同问题喂给大模型生成答案。",
"RAG性能受分块策略、Embedding模型、检索器、重排器共同影响。分块是最前置的环节,分块不合理会造成后续无论怎么调检索器都很难提升效果。"
]
- ✅优点:语义理解最强,可以处理逻辑混乱、混杂多类型内容文档。
- ❌缺点:调用 LLM 成本高、速度慢;有小概率篡改原文、幻觉;不适合百万级海量文档。
- 适用:少量高价值文档,合同、复杂白皮书。
7.父子分块 Parent‑Child Chunking(分层分块)
解决经典矛盾:小块检索准,但是上下文信息不足;大块上下文完整,检索噪声大。
- 父块 Parent:大块(1000‑2000token)保存完整原文上下文,不入库向量库;
- 子块 Child:父块再切割成细粒度小块(200‑400token),子块做 Embedding 存入向量库;
- 检索流程:用户 query 检索向量库命中子块;通过 ID 映射,取出子块对应的完整父块,把父块交给 LLM 做回答。
原始父块(完整一大段,不入库向量库)
【父块】大模型检索增强生成 (RAG),通过外部知识库补充大模型固有知识,缓解幻觉。RAG 分为索引阶段和查询阶段。索引阶段:文档加载、文档分块、向量化、存入向量数据库。查询阶段:用户 query 向量化、向量库相似度检索、把检索到的上下文连同问题喂给大模型生成答案。RAG 性能受分块策略、Embedding 模型、检索器、重排器共同影响。分块是最前置的环节,分块不合理会造成后续无论怎么调检索器都很难提升效果。
父块切出 2 个子块,子块向量化入库:
Child‑1:大模型检索增强生成 (RAG),通过外部知识库补充大模型固有知识,缓解幻觉。RAG 分为索引阶段和查询阶段。
Child‑2:查询阶段:用户 query 向量化、向量库相似度检索、把检索到的上下文连同问题喂给大模型生成答案。RAG 性能受分块策略、Embedding 模型、检索器、重排器共同影响。
检索例子:用户问 “RAG 查询阶段做什么?”,向量检索命中 Child‑2;系统不直接把 Child‑2 丢给 LLM,而是取出 Child‑2 对应的完整父块全部文本送入 LLM。
- ✅优点:兼顾细粒度检索召回,同时提供完整上下文;生产 RAG 非常常用优化手段。
- ❌缺点:存储翻倍;需要维护父子 ID 映射关系。
- 适用:几乎所有生产 RAG 系统。
8.多模态分块(图文混排 PDF)
图文混合文档,文本、图表不能混切在一起。
样例 PDF 片段:
图 1 RAG 系统整体架构图
(图片)
图注:RAG 系统分为索引阶段与查询阶段两大模块。索引阶段负责文档处理,查询阶段负责检索生成。
❌错误切分:把图注和图片拆开,图注跑到别的文本块;
✅正确切分:一个独立多模态 chunk:[图片] + 图注文字:图1 RAG系统整体架构图。RAG系统分为索引阶段与查询阶段两大模块。索引阶段负责文档处理,查询阶段负责检索生成。
- ✅优点:图表信息不会丢失;
- ❌缺点:依赖 PDF 解析工具 MinerU/PyMuPDF;向量库需要支持多模态 embedding。
- 适用:论文 PDF、带大量图表技术手册。
PDF原始文档
↓
MinerU布局解析 → 识别text / title / table / image元素
↓
遍历元素列表
if 元素类型 == text/title:普通结构分块/递归分块
elif 元素类型 == table:
提取标题、表注、markdown表格
if token ≤500:整体作为table‑chunk
else:按N行切片,每片复制表头,生成多个table‑child‑chunk
存入父子映射,完整表格作为parent存入KV存储
elif 元素类型 == image:多模态图片chunk
↓
全部子块(文本子块+表格子块+图片子块)向量化入库
↓
查询:检索命中子块 → 取出parent父块送入LLM
9.PDF表格如何分块
❌绝对禁止:普通递归 / 固定长度分块直接切表格。 普通文本分块会把表格从中间拦腰切断,丢失表头,单元格错位,召回出来的片段完全失去业务含义。
示例错误切分(灾难案例) 原始 markdown 表格:
表格
| 电压 | 220 | V |
| 功率 | 1500 | W |
被递归分块从中间切断,得到:
Chunk:| 参数 | 数值 | 单位 | |—-|—-|—-| | 电压 | 220|
下一个 chunk:
Chunk:V| | 功率 | 1500|W|
模型拿到V|功率|1500|W,完全分不清哪一列对应什么。
依赖布局解析器(MinerU /pdfplumber/ Unstructured.io),识别文档元素类型:text / table / image / title。
表格必须识别为独立table对象,不和前后文本粘连在一起,拿到:
三种表格分块策略(按表格大小区分)
方案 1:小表格(整体 token≤500)
—— 整张表格作为独立 Chunk(最常用)
规则:
✅生成 Chunk 示例:
### 表1 设备参数表
|参数|数值|单位|
|—-|—-|—-|
|额定电压|220|V|
|额定功率|1500|W|
|工作温度|-10~60|℃|
表注:设备选型需要结合电压、功率参数综合评估。
元数据:{type:"table", table_name:"表1 设备参数表", section_path:"第三章>设备参数"}
向量库存入这个 markdown 文本,普通 text‑embedding 模型就可以检索。
用户提问 “设备额定功率多少?” 召回整个表格 chunk,直接喂给 LLM。
方案 2:超大 / 跨页长表格(token>800,几十上百行)
—— 按行切片,每一片都强制带上表头
核心铁律:任何一个表格子 chunk,不能没有表头,否则召回出来的行没有列含义,完全无效。
原始大表格:表头 A B C D,共 30 行数据。 设置:每 8 条数据行为一个子 chunk。
- Table‑Child‑1:表头 + 第 1‑8 行
- Table‑Child‑2:表头 + 第 9‑16 行
- Table‑Child‑3:表头 + 第 17‑24 行
- Table‑Child‑4:表头 + 第 25‑30 行
每一个子块都带上:表格标题、表注、完整表头,再带上对应数据行。
示例:
### 表2 设备清单(节选)
表头:|设备编号|型号|电压|功率|
|——–|—-|—-|—-|
|D001|A‑1|220V|1000W|
|D002|A‑2|220V|1500W|
……(共8行)
工程实践:
方案 3:扫描版 PDF,表格解析失败
(OCR 识别错乱,拿不到 markdown)
两条可选路线:
缺点:图像 embedding 检索召回精度不如文本,成本更高;优先尽量做结构化解析。
表格与周围文本如何处理
(非常容易踩坑)
场景 A:表格前面有一大段介绍文字,后面有一大段分析文字
【前文】本节介绍设备各项电气参数,下面表格汇总关键指标。 【表 1 设备参数表】 【后文】由上表可见,额定功率决定设备能耗,选型时重点关注功率指标。
✅正确分块:
不要把大段前文 + 表格 + 大段后文全部塞到同一个块,会造成块过大,embedding 混杂多主题。
✅边界例外:如果前后文字很短(一两句话),可以和表格合并为一个 chunk。
❌错误:直接把表格混在大段文本中间,交给 RecursiveCharacterTextSplitter 自由切割。
父子分块如何结合表格(生产环境标准做法)
- 小表格:子块 = 完整表格;
- 超长表格:切分多行片段,每段子块携带完整表头 + 表标题;子块做 embedding 存入向量库。
好处:检索用细粒度子块更容易命中某几行;生成时拿到完整全量表格,不会只有局部片段。
表格摘要子块(双索引策略)
对于非常大的业务表格,增加一个摘要子块:
- 子块 A:表格结构化 markdown 片段(用于精确数值查询)
- 子块 B:VLM/LLM 生成的表格文本摘要(用于语义类问题检索) 两者都绑定同一个 parent_id,检索命中任意一个,都取回完整父表格。
示例摘要:
表 1 设备参数表,记录设备额定电压 220V,额定功率 1500W,工作温度‑10~60℃。
适合:用户问 “设备工作条件是什么”,更容易命中摘要子块。
表格分块避坑清单





