RAG 文档切分¶
文档切分把原始资料转换成适合检索、引用和重新组合的知识单元。切分目标不是让每块长度相等,而是让 每个检索单元具有清晰语义、足够上下文和可靠来源。
常见策略¶
- 固定长度:实现简单,但容易截断段落、表格或代码。
- 递归结构切分:依次按标题、段落、句子等边界拆分。
- Token 切分:直接控制模型输入预算。
- 文档结构切分:按 Markdown 标题、代码函数、幻灯片或表格边界拆分。
- 语义切分:根据相邻句段的主题变化决定边界。
一个高质量 chunk 应保存¶
- 正文;
- 标题层级路径;
- 来源文件和稳定定位;
- 页码、幻灯片、时间戳等位置;
- 内容类型,例如正文、表格、代码或图注;
- 版本和更新时间;
- 与前后单元的关系。
大小不是独立参数¶
切分粒度要同时考虑:
- 用户问题通常多具体;
- embedding 模型适合的输入长度;
- 检索后是否需要完整段落或跨段推理;
- 生成模型的上下文预算;
- 引用是否能精确定位。
小块通常提高局部匹配精度,但可能丢失上下文;大块保留完整性,却会稀释向量表示并占用更多输入空间。 常见折中是“小单元检索,向父级或邻近单元扩展上下文”。
Chunking-free 的位置¶
无切分或上下文感知表示试图避免固定分块破坏语义,但仍然需要某种可返回、可引用的细粒度单元。 因此它更像对“如何表示和定位长文档”的改进,而不是取消知识单元本身。