RAG 文档切片怎么做才不乱
RAG 切片没有一个通用字数。应先按文档类型、标题结构和业务语义确定完整单元,再用重叠、元数据和评估问题修正。
先说结论。
RAG 文档切片不要从“每段多少字”开始,而要先回答:什么内容必须一起出现,用户的问题通常指向哪一层,答案需要带哪些上下文。固定长度只是实现参数,业务语义才是切片边界。
这篇文章给出一套可测试的切片方法。它不承诺一个万能数字,而是帮助你按文档类型选择策略,并用真实问题验证。
切片乱,表面看是召回问题
常见现象是检索到了相关词,却缺少结论;答案引用了半句话,却没有适用条件;同一制度的标题和正文被分到不同片段。
这些问题继续调向量模型未必有效。若原始片段没有形成可理解单元,检索只能准确地找回残缺内容。
例如退款政策把“适用订单”“申请时限”和“例外情况”拆成三块,用户问特殊订单时,模型可能只看到通用时限。
先按文档类型选基本单元
制度文档适合以条款和子条款为主;产品手册适合以功能或操作任务为主;FAQ 可以一问一答;会议纪要则更适合按议题、决策和行动项拆分。
代码文档需要保留函数签名、说明和示例之间的关系。表格则不能简单按行转成孤立文本,还要带列名、表名和适用范围。
判断标准是:单独拿出一个片段,读者能否知道它在说什么、适用于谁、结论是否完整。
标题路径是最便宜的上下文
切片时保留“文档名—一级标题—二级标题”路径,能帮助检索和回答解释片段位置。标题不一定进入正文展示,但应作为元数据或前缀参与检索。
版本、生效日期、部门、产品和权限也应进入元数据。这样检索可以先过滤有效集合,再比较语义相似度。
不要把所有上下文都复制进每个片段。过多重复会增加索引体积,也可能让通用标题压过真正内容。
重叠只解决边界,不解决结构
适量重叠可以保留跨段句子,但不能修复错误拆分。如果一个完整步骤被切成四块,增大重叠只是生成四个相似片段。
更稳的做法是先按结构形成语义单元,超过上下文预算时再递归拆分。拆分后保留父节点标识,回答时可以按需补回相邻或父级内容。
用真实问题反推切片
准备一组来自客服、搜索记录或内部咨询的问题。为每个问题标注“答案最少需要哪些原文”。然后检查当前切片能否一次或少量召回这些证据。
重点记录三类失败:证据被切断、召回了错误版本、需要的上下文分散过远。每类失败对应不同调整,不能都归因于“chunk 太小”。
一轮检查清单包括:问题是否可回答、证据是否完整、引用是否可读、权限是否正确、片段是否包含无关大段。
常见误区是一次切完全库
不同文档使用同一规则最省开发时间,却通常最难维护。另一个误区是只看平均召回指标,不检查高风险条款和例外问题。
还有人频繁改切片参数,却不保留索引版本和评估结果。这样无法知道改善来自切片、模型还是数据更新。
边界:短而独立的内容无需复杂策略
如果资料本身就是短 FAQ、产品卡片或独立定义,按条目索引足够。复杂的父子检索、语义切片会增加实现和调试成本。
相反,长制度、嵌套手册、跨页表格和权限复杂的文档,应先做解析质量检查。解析顺序错了,切片策略再好也只是加工错误文本。
最小实践从一种文档开始
先选一种高频文档和二三十个真实问题。制定结构规则,保存标题路径、版本和权限,再建立切片版本号。每次调整只改一个变量,跑同一批问题。
切片的目标不是让每块大小整齐,而是让每个被召回的片段都成为可解释、可引用、可维护的证据单元。
切片规则也需要版本和回滚
每次调整解析器、标题规则、最大长度或重叠方式,都应生成新的索引版本,并记录使用的文档集合。不要在原索引上静默重建,否则线上答案变化后无法还原原因。
上线前用同一批问题对比新旧版本:正确证据是否更靠前,引用是否仍完整,片段数量是否异常增加,高风险问题是否退化。改进不能只看几个成功样本,也要查看原本答对的问题有没有被破坏。
当新版效果不稳定时,系统应能切回旧索引。切片是数据生产流程的一部分,不是预处理脚本里的永久常量。
团队评审要直接阅读片段
让业务人员随机打开若干片段,不看原文目录,判断是否能理解主题、条件和结论。再从一个真实问题出发,检查召回片段能否共同支撑答案。
这项人工检查很朴素,却能发现自动指标不容易暴露的问题:标题丢失、例外条款分离、表格列名缺失、页脚污染和旧版本混入。完成结构检查、问题评估和版本记录后,切片策略才具备可维护性。
评审结论应写回切片规则说明,供下一批文档复用和复查。
发生了什么、真正变化与后续观察信号
发生了什么:切片规则从固定长度转向按文档结构和真实问题校准。真正变化不是片段数量更整齐,而是问题、证据和原文结构之间的断裂减少。后续观察信号有三项:
- 信号一:命中片段是否保留回答所需的标题路径。
- 信号二:业务人员是否频繁打开相邻片段才能理解条件。
- 信号三:规则升级后,旧的高风险问题是否出现回归。
短 FAQ 或每条都能独立成立的产品说明无需复杂结构切片,这是边界。下一步固定一组曾经因条件丢失而答错的问题,用新旧切片各跑一次,并让评审直接阅读候选片段,不只比较检索分数。
表格和附件要单独处理。把列名与数据行拆开,会让数值失去含义;把附件标题从正文引用处移走,会让检索结果不知道适用范围。遇到这类结构时可保留父级摘要或显式关联,并在评估集加入跨块证据问题。
// comments
0 threads登录 后可留言、回复。
- 还没有留言,来做第一个。