← 返回全部文章

长工程文档的语义切分:让检索结果保留上下文

按固定字数切块很方便,却常把章节、表格和结论切碎;更可靠的是结构优先、语义补充的分块策略。

文档智能RAG数据处理

RAG 的检索质量常常在入库时就已经决定。若把一份设计说明书每 500 个字机械切开,标题与正文分离、表格被截断、前提条件留在上一块,模型即使拿到了“相关片段”也容易给出脱离语境的答案。

以文档结构作为第一边界

优先识别目录、标题层级、段落、列表、表格和页眉页脚。标题应继承到其下所有 chunk 的 metadata 中,形成“章节路径”;表格应作为整体或按完整记录切分,不应在单元格中间截断。对于扫描件,版面恢复的质量直接决定结构切分的上限。

长度控制是第二步

结构块过长时,再按句子或段落边界拆分,并保留适度重叠。重叠不是复制越多越好,而是让定义、条件和结论在相邻块之间不断裂。工程文档可按字符、token 或句子长度控制,但必须和实际模型上下文、重排序器上限与成本一起评估。

区分父块与子块

一个有效模式是“子块检索、父块回答”:子块较小,适合精确召回;命中后返回其所属的段落群、章节或完整表格作为生成上下文。这样既不牺牲检索粒度,也减少模型在碎片中拼凑答案的风险。父子关系、章节路径和页码应成为可查询的显式字段。

去重与版本不可忽略

同一文件经 PDF 转换、修订或重复上传后,内容可能高度相似。入库前应对原文件和规范化文本分别计算指纹,索引时标明版本、有效状态和来源。否则检索结果会被同一段内容淹没,用户也无法辨别新旧版本。

分块不是文本预处理的小细节,而是知识系统对文档结构的第一次理解。尊重原始结构,后续的检索、引用和生成才有稳定的基础。