文档切分策略
文档切分是把长文档拆成适合检索的 Chunk。切分太小会丢上下文,切分太大会降低召回精度并增加模型成本。
# 1. 切分目标
好的 Chunk 应该:
- 语义完整。
- 长度适中。
- 能独立回答某类问题。
- 保留标题、来源和上下文。
- 方便检索和引用。
# 2. 常见切分方式
| 方式 | 特点 | 适合场景 |
|---|---|---|
| 固定长度切分 | 简单,按字符或 Token 分段 | 快速原型 |
| 按标题切分 | 保留文档结构 | Markdown、技术文档 |
| 按段落切分 | 语义较自然 | 文章、制度文档 |
| 滑动窗口 | 相邻 Chunk 有重叠 | 避免边界丢信息 |
| 语义切分 | 根据语义边界切分 | 长文章、复杂知识库 |
# 3. Chunk 重叠
重叠可以减少切分边界导致的信息丢失。
Chunk 1: A B C D
Chunk 2: C D E F
Chunk 3: E F G H
但重叠过多会带来重复索引、成本上升和检索结果冗余。
# 4. 标题上下文补充
切分后,Chunk 可能离开原文档上下文。建议给每个 Chunk 补充标题路径。
文档:员工手册
章节:考勤制度 > 请假规则 > 年假
正文:员工连续工作满一年后...
这样模型在看到 Chunk 时能理解它属于哪个主题。
# 5. 不同文档的切分建议
| 文档类型 | 建议 |
|---|---|
| 技术文档 | 按标题和代码块边界切分 |
| FAQ | 一问一答作为基本 Chunk |
| 制度文档 | 按条款切分,保留编号 |
| API 文档 | 按接口切分,保留参数和返回值 |
| 表格 | 按业务行或小表切分,保留表头 |
| 长 PDF | 先解析结构,再按标题和段落切分 |
# 6. 常见坑
| 问题 | 后果 |
|---|---|
| 固定长度硬切 | 句子和表格被截断 |
| Chunk 太小 | 缺少回答依据 |
| Chunk 太大 | 召回不准,成本高 |
| 不保留标题 | 模型不知道上下文 |
| 不保留来源 | 答案无法引用 |
# 7. 如何评估切分效果
准备一组真实问题,检查:
- 正确资料是否能被召回。
- 召回 Chunk 是否包含完整答案。
- 是否返回太多重复 Chunk。
- 引用是否能定位到原文。
- 模型基于 Chunk 是否能正确回答。
# 8. Tips 快问快答
Q:Chunk 大小有没有固定标准?
A:没有。要结合文档类型、模型窗口、Embedding 效果和问题类型测试。
Q:重叠越多越好吗?
A:不是。适度重叠能减少边界损失,过多会造成重复和成本上升。
Q:为什么要保留标题路径?
A:标题路径能给 Chunk 提供语义背景,让模型知道当前内容属于哪个主题和层级。
上次更新: 2026/06/25, 17:53:09