跳到主要内容
约 9 分钟4 张卡

文档解析与切分

文档解析把 PDF、网页等文件转换成带结构信息的文本。切分再把文本分成适合检索的片段,称为块(Chunk)。块是 RAG 检索和组装上下文的基本单位,它的边界决定了模型能看到哪些前后文。

本文先介绍不同文件的解析方式,再说明切分策略、块大小与重叠的取舍。随后介绍父子索引,以及表格和跨块证据的处理。

1. 面试核心​

先记住这几条,再读正文
  • 块大小的取舍。 小块的主题集中、便于匹配问题,大块能保留更多前后文,但会混入其他主题并占用更多上下文。卡 · 切分策略
  • 结构切分。 结构切分按标题、段落或条款划分文档,超长部分再递归细分,以保留完整的语义边界。卡 · 切分策略
  • 重叠的作用。 相邻块的重叠能保留边界处的前后文,代价是增加索引体积和重复召回。卡 · 切分策略
  • 父子索引。 父子索引用主题集中的子块匹配问题,再回取父块,为回答补齐条件和前后文。卡 · 父子索引
  • 结构与来源保留。 表格块要保留表头、单位和行列关系,各类文档块都要记录来源、版本与权限。卡 · 解析

2. 解析​

解析首先要恢复文件中的阅读顺序和结构。否则,切分得到的块即使长度合适,也会缺少标题或混入无关文字。不同文件要保留的信息如下:

文件类型解析要点
Markdown、HTML保留标题层级,去除导航与页脚。
文字 PDF、Word恢复阅读顺序,处理分栏与跨页段落。
扫描件OCR 后检查数字、单位和版面。
表格、Excel保留表头、单元格和行列关系。
PPT关联页标题、正文与备注。
代码保留函数、类、文件路径与符号名。

OCR 指从扫描件或图片中识别文字。识别后还要分析版面,区分标题、段落和表格区域。Word 和文字 PDF 则要结合标题样式恢复层级,并去掉重复页眉页脚。PPT 可以按页组织内容,代码可以按函数或类组织内容。

解析错误会直接影响后续检索。比如,PDF 表格被抽成一串无序数字后,重排也难以恢复数字对应的列。页眉“内部资料”若在每个块中重复出现,还会给检索加入相同的噪声。所以,入库前要对照原文件抽查解析结果,重点检查表格和扫描件。

3. 切分策略​

切分要同时考虑语义边界和长度限制。有明确标题、条款或函数边界时,可以先沿这些边界划分,再处理过长的部分。

策略做法取舍
固定长度按长度截取实现简单,语义边界容易断开。
递归切分依次尝试段落、句子等分隔符保留结构,同时限制长度。
结构切分按标题、条款或函数划分需要可靠的结构解析。
语义切分根据相邻片段的语义变化划分增加向量计算,边界仍需评测。

选择时,可以按文档结构理解这四种策略:

  • 固定长度适合先为无结构纯文本建立基线,比如每 N 个 Token 切一块。它容易把句子、表格行或条款从中间切断。
  • 递归切分先尝试按段落划分,过长的段落再按句子划分。仍然超长时才继续细分到字符,并重新检查长度。
  • 结构切分适合有清晰层级的文档、法规和代码。标题、列表和代码块尽量保持完整,超长部分再用递归切分处理。
  • 语义切分适合结构不明显的长文本。程序计算相邻句子的向量相似度,在相似度明显下降处划分,代价是额外的向量计算。

3.1 块大小与重叠​

块大小要依据回答所需的证据跨度选择。比如,“年假几天”的答案集中在一两句话中,可以从数百 Token 的小块开始比较。解释整段规则或流程时,则需要更大的块保留完整条件。

块过小会缺少主语、条件和例外,召回结果也更零碎。块过大则把多个主题放进同一个向量,问题对应的内容更难突出。命中后,这些无关文字还会占用模型的上下文空间。

重叠指相邻块重复保留边界处的一段内容。答案横跨边界时,这段重复内容能让单个块保留更多前后文。可以把块长的 10%–20% 作为试验范围,并与零重叠比较。重叠越多,索引体积和重复候选也越多,所以最终比例要由评测确定。

检查长度时,要明确计量单位是字符还是 Token。Token 是模型处理文本的单位,其数量由分词器决定。按 Token 限长时,应使用对应 Embedding 模型的分词器,拼接的标题和上下文说明也要计入。块超过输入上限时,部分服务会报错,部分本地组件会按配置截断。被截掉的后半段没有进入向量计算,所以靠这个向量难以检索到那部分信息。

比较切分方案时,固定文档快照和问题集,并标注每题需要的原文证据。评测既要关注回答质量,也要记录检索成本:

  • 检索到的块是否覆盖正确证据,以及召回率是否提高。
  • 模型最终回答是否正确。
  • 召回结果中有多少内容重复。
  • 最终放入上下文的文本占多少 Token。

切分变化后,同一段证据会落入不同的块。因此,评测标签要按原文区间对齐,才能公平比较不同方案。

3.2 块上下文补充​

块从原文中单独取出后,会丢失指代对象。比如,“上述费用由乙方承担”中的费用在上一块才有定义。补充块的上下文,可以让检索时的文本更容易理解。

可以通过以下三类信息补足定位与含义:

  • 标题与章节路径放在块前。比如,“《采购管理制度》> 第三章 费用 > 3.2”能说明这段文字的主题。
  • 上下文说明由模型结合全文生成,用一句话解释这个块在全文中的位置和含义。说明与原文一起向量化,但要分开保存并抽查准确性,引用仍定位到原文。
  • 来源元数据记录来源、页码、版本与权限。元数据是随块保存的描述字段,用于过滤文档和定位引用。

4. 父子索引​

父子索引把检索用的块和回答用的块分开,兼顾匹配精度与上下文完整性。父块保存完整章节或较大段落,子块则是从中切出的小段,并记录父块 ID。

基本做法是只对子块建立向量索引。命中子块后,程序根据父块 ID 从文档存储中读取父块,再交给生成模型。

父块:差旅费用
子块 A:住宿标准
子块 B:交通工具等级
子块 C:报销时限
命中子块 A → 读取父块及原文位置

比如,父块可以是约 1500 Token 的差旅费用章节,住宿标准子块约为 200 Token。检索住宿问题时,子块的主题更集中。回取父块后,模型还能看到同一章节中的适用条件。这两个长度仅用于说明两级粒度,实际大小仍由问题和预算决定。

多个子块命中同一父块时,应合并重复父块,可以保留其中最高的匹配分数。父块过大时,可只返回命中子块及前后相邻的子块,避免占满上下文。回取时还要检查父块的版本和权限,保证扩展出来的内容同样有效且可访问。

5. 表格与异构文档​

表格中的数值要结合表头和单位才有意义。处理不同文件时,应保留这些关系,再决定哪些内容进入文本索引。

  • 表格:小表格可以整体作为一个块,转成 Markdown 表格时保留表头。大表格按行分组,每组重复表头和单位。也可以把每行转成“字段: 值”的文本,便于语义检索。跨页表格要保留连续关系,合并单元格表示的分组也要传给各行。
  • Excel 报表:求和、同比和排序需要确定性计算,也就是按明确规则得到数值结果。可以把数据导入数据库,再用 SQL 或计算工具返回结果。向量索引保存表的说明与字段含义,帮助程序找到该查哪张表、哪一列。
  • 制度文档:按章、条、款切分,块内保留条款编号、生效日期和版本。检索时过滤失效版本,避免把旧制度当成当前规则。
  • 混合 PDF:先用版面分析区分正文、表格和图像,再分别处理。图像可由多模态模型生成文字描述后入库,并保留对应页图,便于核对描述和原图。

5.1 跨块证据与原文定位​

正文、脚注和例外条款经常分处不同位置,回答却需要同时引用它们。相邻重叠只能覆盖局部边界,所以远处的条款需要显式记录关联。

解析时,可以保存标题路径、脚注关联和引用条款 ID。命中主体条款后,再补取它明确引用的内容。这样既能补齐适用条件,也能让回答分别引用正文与例外。

为了准确回到原文,每块应保留以下定位信息:

  • 文档 ID 和版本,用于确定引用的是哪一版文档。
  • 页码,用于在原文件中找到大致位置。
  • 字符偏移或段落 ID,用于定位具体证据区间。

切分策略变化后,旧块 ID 也需要随版本区分,避免把旧引用指向新边界。

索引发布与删除机制见检索增强生成(RAG)。

6 · 面试题卡片​

本页题目与参考回答

6.1 Chunk 的切分大小如何确定?重叠度如何设置?分块过大或过小会有什么问题?​

考察重点:解释块大小如何影响证据完整性与检索匹配,并用评测比较重叠带来的收益和重复成本。

相关内容:切分策略、块大小与重叠。

参考回答

块大小应按证据跨度和模型输入上限选择,重叠比例则通过评测确定。

事实问答可以从数百 Token 的小块开始,规则和流程题需要更完整的段落。小块的主题集中,但容易丢失主语与条件。大块保留更多前后文,却会混入无关主题,并占用更多上下文。超过 Embedding 输入上限时,还会报错或被截断。

切分可以先按标题、段落或条款划分,再递归细分超长部分。重叠可试验块长的 10%–20%,并与零重叠比较,检查边界证据是否保留。最终在同一文档快照和问题集上,比较召回率、回答正确率、重复占比与输入长度。切分变化后,证据标签按原文区间对齐。

6.2 RAG 为什么需要父子索引?检索小块、返回父文档解决什么问题?​

考察重点:解释为什么用子块匹配、用父块回答,并说明父块去重、回取和预算控制的关系。

相关内容:父子索引。

参考回答

父子索引用小块匹配问题,再用父块补足回答所需的前后文。

子块的主题集中,适合建立向量索引。父块保留章节中的条件和解释,适合交给模型回答。子块记录父块 ID,命中后就能回取对应父块。

多个子块指向同一父块时,要合并去重,可以保留最高匹配分数。父块过大时,只读取命中子块及相邻子块。扩展内容也要检查权限和版本,并计入上下文预算。

6.3 知识库中有制度文档、Excel 报表、PDF 等不同文件,应该怎么解析和切分?​

考察重点:按文件类型解释需要保留哪些结构,并区分文本证据检索与精确数值计算。

相关内容:解析、表格与异构文档。

参考回答

不同文件应按自身结构解析和切分,表格数值计算则交给 SQL 或计算工具。

制度文档按章、条、款划分,保留标题路径、条款编号、版本与生效时间,检索时过滤失效版本。PDF 先区分正文、表格和图片,再恢复阅读顺序并去掉重复页眉页脚。扫描件先做 OCR,PPT 则按页关联标题、正文与备注。

小表格整体入库,大表格按行分组并重复表头和单位,也可把每行转成字段描述文本。Excel 的求和、同比等问题需要计算,向量索引只负责定位表和字段。各块还要保存原文位置与权限,便于引用和回取。

6.4 答案跨越正文、脚注和例外条款,怎样切分与引用?​

考察重点:说明怎样保存跨块关联、补齐引用证据,并将每段证据定位到对应版本的原文。

相关内容:跨块证据与原文定位。

参考回答

切分时保存正文、脚注和例外条款的关联,检索命中后再补取相关证据并分别引用。

相邻重叠只覆盖局部边界,远处的条款需要通过脚注关系或引用条款 ID 找到。每段证据都保留文档版本和原文区间,才能说明结论具体来自哪里。补取的内容也要经过权限检查,并计入上下文预算。

7. 参考资料​