跳到主要内容
指南WHITEHOLE

长文档切片策略:按文档类型切,而不是按字数切

长文档切片,指的是把几十上百页的文件拆成检索系统能定位、能引用、又保留语境的片段。固定字数切分最省事,却会把表格拦腰截断、把条款与适用范围拆散。本文按文档类型给出切片方式对照表,并说明重叠窗口、父子块与验收口径

RAG文档解析知识库

长文档切片,指的是把一份几十页甚至上百页的文件,拆成检索系统能精确定位、能作为引用出处、同时又不丢掉语境的片段。它是文档进入知识库前的最后一道工序,也是最容易被跳过的一道 —— 很多「检索不准」的问题,追到底都是切片切坏了

固定长度切片为什么会出问题

按字数平均切分实现最简单,在结构规整的纯文本上也确实够用。但企业文档大多不规整:一份设备手册里有步骤、有参数表、有安全警告;一份合同里有条款、有附件、有金额表。等距切分会产生三类问题:

  • 语义被截断:一个完整结论被切成两半,检索只命中后半句,答案就少了一半前提。
  • 表格被破坏:表格行与表头分离后,模型看到的是没有列名的数字,既读不懂也容易被误读。
  • 标题与正文分离:小节标题掉进上一块,正文片段失去主题线索,向量表示随之偏掉。

这三类问题的共同点是:它们不会报错,只会在回答质量上慢慢显现,因此很难靠开发阶段的测试发现。

按文档类型选切片方式

切片没有通用参数,只有按文档类型分派的规则。下面这组对应关系来自实际项目里反复出现的六类文档:

  • 制度与规范:按条款层级切,一条一款为一块,保留条款编号与所属章节标题。
  • 合同与协议:按条款切,同时把「定义」「适用范围」这类前置条款作为公共片段附加给同一文档的其他块。
  • 技术手册与操作规程:按步骤与章节切,一个操作步骤为一块,参数表整表保留。
  • 会议纪要与邮件:按议题切,一个议题为一块,保留时间、参与人与结论三要素。
  • 表格与财务报表:整表为一个单元并转成结构化描述,行列不做拆分。
  • 问答与常见问题:一问一答为一块,不与其他内容混切。

这张对照表的作用是让切片策略可以被讨论和复核。当团队争论块大小该设多少时,真正该先回答的是这份文档属于哪一类、它的语义边界在哪里。

重叠窗口与父子块

重叠是指相邻两块共享一小段内容,用来避免关键句正好落在切分点上。重叠比例通常不需要很大,过大的重叠会带来大量重复命中,挤占后续排序的名额,让真正有区分度的片段排不上去。

父子块解决的是另一对矛盾:检索要精确,回答要完整。做法是子块负责被检索到,命中后回溯到它所属的父块(整节或整章)再交给模型。这样既能精确定位,又能把完整语境带上去,代价是索引要多存一层映射关系,更新时两级都要同步。

验收口径

  • 抽二十个高频问题,检查命中的片段本身是否可读 —— 人看不懂的片段,模型也很难用对。
  • 抽查涉及的表格与条款,确认表头与内容、条款与适用范围仍然在一起。
  • 同一份文档更新后,新旧片段不会同时留在索引里。
  • 切片策略有文字记录,且能回答「这类文档为什么这样切」。

不要做的事

不要把切片当成一次性调参。文档类型会变、业务会增,切片规则需要跟着一起维护。也不要在没有固定评测问题集的情况下反复调整块大小 —— 没有评测手段,调参只是把问题从一处挪到另一处,而且没人能证明是变好了还是变差了。

FAQ

常见问题

与这篇相关、并且被问得最多的几个问题

块大小到底设多少合适
没有通用值。先按文档类型确定切法,再在同一类型内部微调长度;脱离文档结构的块大小数字意义不大
切片这一步能不能跳过
结构规整的纯文本可以简化处理,但含条款、表格与步骤的文档跳过切片,等于把解析问题推给模型,代价会在检索准确率上出现
重叠是不是越多越安全
不是。重叠过多会造成同一内容反复命中,占用检索名额,还会让后续排序难以区分优劣