AI神功 KNOWLEDGE BASE
内功05 · RAG 检索增强生成·第 6 关 / 36 约 3 分钟

INNER 05 / RAG / 02 · ENGINE v1

文档解析与黄金分块策略(Document Chunking & Overlap)

本关练习:重构人力资源考勤制度文档的抗截断分块器。

约 3 分钟·免费阅读·整理自 AI 现代必修课 · 内功05·来源精读 ↓·直接做题 ↓

30 SECONDS / 30 秒看懂

这一关只解决一件事:“垃圾进,垃圾出(Garbage In, Garbage Out)。”在 RAG Zero to Hero Guide 与 RAG All-in-One 的生产实践中,80% 的 RAG 回答错误源于粗暴的固定字符切分(Fixed-size Chunking)——比如把一句关键免责条款从中间劈成两半,或者把表格的表头切在第 1 块、第 15 行数据切在第 2 块,导致检索出来的第 2 块完全丢失了表头上下文与所属章节标题!

  • 设定分层切分优先级分隔符列表(优先按二级/三级标题、段落换行、句号切分,严禁在句子中间硬切) (
  • 5 分);
  • 配置合理的 chunk_size(如 400‒600 字符)、chunk_overlap(如 60‒80 字符)及表格整体保留策略;

3 MINUTES / 3 分钟拆解

先看来源里的例子:PDF 本关任务(来源)

输入
公司《员工手册》第 4 章“带薪年假与病假管理”长达 3,000 字,包含多级子标题和一张薪资扣减比例表。直接按每 300 字硬切后,员工问“司龄满 5 年请病假怎么发工资”,系统搜出的片段只有 “按 80% 发放”,却不知道这属于产假还是病假。

发生了什么

来源要求:设定分层切分优先级分隔符列表(优先按二级/三级标题、段落换行、句号切分,严禁在句子中间硬切) ( / 5 分); / 配置合理的 chunk_size(如 400‒600 字符)、chunk_overlap(如 60‒80 字符)及表格整体保留策略;

输出

参考答案:参考答案:抗截断递归分块与章节面包屑注入器 CHUNK_CONFIG = { "separators": ["\n## ", "\n### ", "\n\n", "。", ";", " "], "chunk_size": 500, "chunk_overlap": 75, # 15% 滑动重叠,确保跨块句子语义不断裂 "keep_tables_intact": True # 检测 Markdown 表格语法 |---| 时整体保留不拆行

术语拆开

chunk
检索时使用的一段文本。
overlap
相邻块之间保留的重叠内容,用来保住边界上下文。

为什么有效

来源核心原理:“垃圾进,垃圾出(Garbage In, Garbage Out)。”在 RAG Zero to Hero Guide 与 RAG All-in-One 的生产实践中,80% 的 RAG 回答错误源于粗暴的固定字符切分(Fixed-size Chunking)——比如把一句关键免责条款从中间劈成两半,或者把表格的表头切在第 1 块、第 15 行数据切在第 2 块,导致检索出来的第 2 块完全丢失了表头上下文与所属章节标题!高手的黄金分块法则是:按 Markdown 章节层级递归切分 + 保留 10%‒15% 滑动窗口重叠(Chunk Overlap) + 为每个分块头部自动注入所属文档名与章节面包屑路径 (Metadata Header Injection)。

结构长什么样

设定分层切分优先级分隔符列表(优先按二级/三级标题、段落换行、句号切分,严禁在句子中间硬切) (
5 分);
配置合理的 chunk_size(如 400‒600 字符)、chunk_overlap(如 60‒80 字符)及表格整体保留策略;
设计分块元数据注入模板:在每个 Chunk 文本开头自动拼接 【来源文档:员工手册v2 | 所属章节:第四章 >
2 病假薪资标准】。 第二阶段:核心引擎篇(第 3‒4 关)——语义检索引擎、混合检索与重排序

chunk 太小和太大分别会损失什么?

SOURCE READING / 来源精读

“垃圾进,垃圾出(Garbage In, Garbage Out)。”在 RAG Zero to Hero Guide 与 RAG All-in-One 的生产实践中,80% 的 RAG 回答错误源于粗暴的固定字符切分(Fixed-size Chunking)——比如把一句关键免责条款从中间劈成两半,或者把表格的表头切在第 1 块、第 15 行数据切在第 2 块,导致检索出来的第 2 块完全丢失了表头上下文与所属章节标题!

逐点读懂

  1. 设定分层切分优先级分隔符列表(优先按二级/三级标题、段落换行、句号切分,严禁在句子中间硬切) (
  2. 5 分);
  3. 配置合理的 chunk_size(如 400‒600 字符)、chunk_overlap(如 60‒80 字符)及表格整体保留策略;

怎么对应本关练习

先读 30 秒与 3 分钟拆解,再读本关原文与实验,最后做客观题和实操题;答案在下方。

例子在哪

本关任务与参考答案见页面下方;来源为本册 PDF 对应关卡。

本关先记住:设定分层切分优先级分隔符列表(优先按二级/三级标题、段落换行、句号切分,严禁在句子中间硬切) (

核心原理

“垃圾进,垃圾出(Garbage In, Garbage Out)。

”在 RAG Zero to Hero Guide 与 RAG All-in-One 的生产实践中,80% 的 RAG 回答错误源于粗暴的固定字符切分(Fixed-size Chunking)——比如把一句关键免责条款从中间劈成两半,或者把表格的表头切在第 1 块、第 15 行数据切在第 2 块,导致检索出来的第 2 块完全丢失了表头上下文与所属章节标题!

高手的黄金分块法则是:按 Markdown 章节层级递归切分 + 保留 10%‒15% 滑动窗口重叠(Chunk Overlap) + 为每个分块头部自动注入所属文档名与章节面包屑路径 (Metadata Header Injection)。

第 2 关实操练习题:重构人力资源考勤制度文档的抗截断分块器

任务背景

公司《员工手册》第 4 章“带薪年假与病假管理”长达 3,000 字,包含多级子标题和一张薪资扣减比例表。直接按每 300 字硬切后,员工问“司龄满 5 年请病假怎么发工资”,系统搜出的片段只有 “按 80% 发放”,却不知道这属于产假还是病假。

通关硬性要求(满分 12.5 分)

1. 设定分层切分优先级分隔符列表(优先按二级/三级标题、段落换行、句号切分,严禁在句子中间硬切) (

4.5 分);

2. 配置合理的 chunk_size(如 400‒600 字符)、chunk_overlap(如 60‒80 字符)及表格整体保留策略(4 分);

3. 设计分块元数据注入模板:在每个 Chunk 文本开头自动拼接 【来源文档:员工手册v2 | 所属章节:第四章 >

4.2 病假薪资标准】(4 分)。 第二阶段:核心引擎篇(第 3‒4 关)——语义检索引擎、混合检索与重排序

PRACTICE / 本关练习 · 本地规则 + 覆盖检查

重构人力资源考勤制度文档的抗截断分块器

本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。

0 字未保存

评分项

评分项加载中…

结构分 — / 12.5 分

查看参考答案与得分点 先自己写,再打开+

参考答案与得分要点

参考答案:抗截断递归分块与章节面包屑注入器 CHUNK_CONFIG = { "separators": ["\n## ", "\n### ", "\n\n", "。", ";", " "], "chunk_size": 500, "chunk_overlap": 75, # 15% 滑动重叠,确保跨块句子语义不断裂 "keep_tables_intact": True # 检测 Markdown 表格语法 |---| 时整体保留不拆行 } def inject_breadcrumb_header(doc_title: str, section_path: str, raw_chunk: str) -> str: """在每个分块头部注入文档与章节层级上下文,再送入 Embedding 模型编码""" header = f"【来源文档:{doc_title} | 所属章节:{section_path}】\n" return header + raw_chunk.strip() # 注入后效果示例: # 【来源文档:员工手册2026版.pdf | 所属章节:第四章考勤与休假 > 4.2 病假薪资发放标准】 # 员工连续司龄满 5 年不满 10 年的,病假期间基础工资按本人标准薪资的 80% 计发。 得分要点拆解:按标题、段落、句号层级递归切分且不拆散表格(4.5 分);设置 `chunk_size=500` 与 `15% overlap`(4 分);在文本块头部显式拼接文档名与章节路径(4 分)。 第 3 关

网页永久免费。完整 PDF 会按顺序发给留邮箱的读者,不转售、不群发广告。

留邮箱,获取完整 PDF ↗
← 上一关 下一关 →