跳转至

RAG 文档切分

文档切分把原始资料转换成适合检索、引用和重新组合的知识单元。切分目标不是让每块长度相等,而是让 每个检索单元具有清晰语义、足够上下文和可靠来源。

常见策略

  • 固定长度:实现简单,但容易截断段落、表格或代码。
  • 递归结构切分:依次按标题、段落、句子等边界拆分。
  • Token 切分:直接控制模型输入预算。
  • 文档结构切分:按 Markdown 标题、代码函数、幻灯片或表格边界拆分。
  • 语义切分:根据相邻句段的主题变化决定边界。

一个高质量 chunk 应保存

  • 正文;
  • 标题层级路径;
  • 来源文件和稳定定位;
  • 页码、幻灯片、时间戳等位置;
  • 内容类型,例如正文、表格、代码或图注;
  • 版本和更新时间;
  • 与前后单元的关系。

大小不是独立参数

切分粒度要同时考虑:

  • 用户问题通常多具体;
  • embedding 模型适合的输入长度;
  • 检索后是否需要完整段落或跨段推理;
  • 生成模型的上下文预算;
  • 引用是否能精确定位。

小块通常提高局部匹配精度,但可能丢失上下文;大块保留完整性,却会稀释向量表示并占用更多输入空间。 常见折中是“小单元检索,向父级或邻近单元扩展上下文”。

Chunking-free 的位置

无切分或上下文感知表示试图避免固定分块破坏语义,但仍然需要某种可返回、可引用的细粒度单元。 因此它更像对“如何表示和定位长文档”的改进,而不是取消知识单元本身。