结构化文档标注
定义
结构化文档标注 是指把原本偏自由描述的业务文档,补充为带有明确层级、内容边界和语义标签的文档形式,使其不仅适合人阅读,也适合机器切分、索引、检索和召回。
它的核心不是“把文档写得更漂亮”,而是让文档在进入知识库前就具备稳定的结构:哪些内容属于主题,哪些属于字段说明,哪些属于业务规则,哪些属于样例、关联关系或查询场景,都能被清楚区分。
在 RAG 场景中,这种标注直接服务于知识入库与召回质量:当文档被切分成 chunk 后,每个语义块更容易保持完整,不会因为切分过细而丢失上下文,也不会因为切分过粗而把大量无关信息一并送入模型。
在本文语境中的含义
本文语境下的结构化文档标注,主要用于数据库表结构相关的业务文档,尤其适合以下内容:
- 表说明
- 业务用途说明
- 字段说明
- 表间关联关系
- 数据样例解读
- 常见查询场景或业务规则
这类文档通常同时包含多种信息维度。如果仍保持普通描述性写法,文档在入库后很容易出现两个问题:
- 切分过粗:单个 chunk token 过多,占用大模型上下文窗口
- 切分过细:表说明、字段定义、规则和关系被拆散,导致召回结果不完整
因此,结构化文档标注的目标不是单纯做格式规范,而是让“完整知识内容”能够以适当粒度进入知识库,并在检索时被整体召回。
为什么需要结构化文档标注
数据库业务文档对“完整召回一块知识内容”的要求很高。以表结构解读为例,一个问题往往不只依赖单个字段名,还可能同时依赖:
- 表的业务定位
- 字段含义
- 编码规则
- 父子层级关系
- 与其他表的引用关系
如果这些内容在预处理时缺少层级和边界,系统即使检到了表名,也可能只召回到零散字段,无法把关键背景一起带出。
结构化标注的价值主要体现在三个方面:
- 精准识别:检索系统更容易识别哪些内容块是字段说明、规则说明或关系说明
- 完整性保障:减少信息被错误切断后造成的语义残缺
- 一致性维护:不同文档采用统一结构,后续扩展、维护、批量入库都更稳定
关键机制
1. 层级标注
最常见也最实用的做法,是用 Markdown 标题层级建立文档骨架。
典型约束包括:
- 一级标题用于文档主题
- 二级标题用于主要分类
- 三级标题用于次级分类
- 标题尽量简洁明了,通常 3 到 7 个字较合适
例如一份表结构文档,可以按“表说明—字段定义—业务规则—关联关系”组织。这样做的作用是,切分器或后续处理逻辑可以优先沿着标题边界切块,避免把两个不同语义单元混在一起。
这与 数据库文档分块 密切相关:分块效果不仅取决于 chunk 大小,也取决于原文是否已经提供了天然的结构锚点。
2. 边界标记
仅有标题还不够。对于表格、样例、字段列表、规则块等高价值内容,还需要补充显式的开始与结束标记,让系统知道一段内容的边界在哪里。
常见做法是使用 HTML 注释形式的标记,例如某块内容的 begin 与 end 成对出现。这类标记有几个特点:
- 不影响文档正常阅读
- 对机器友好,便于稳定识别
- 可以强制声明内容块的起止范围
- 适合和标题层级结合使用
边界标记的关键要求是:
- 名称简洁明了
- 风格统一
- 开始和结束必须成对出现
- 同一类内容尽量使用同一命名规则
这部分与 文档边界标记 是直接相关的:边界标记不是装饰,而是保障 chunk 完整性的核心手段之一。
3. 语义标记
结构化文档标注不仅要划分边界,还要表达“这块内容是什么”。
例如同样是一段文本,系统需要区分它到底是:
- 表说明
- 字段说明
- 业务规则
- 样例数据
- 关联关系
这类语义区分可以通过标题命名、注释标记名或统一分隔符来实现。只要命名一致、结构固定,后续的解析、切分和索引就更容易围绕语义块展开,而不是只按字数硬切。
4. 统一模板
结构化标注强调“统一结构”而不是“每篇文档各写各的”。
对于同类数据库文档,应尽量采用同一套模板,例如固定包含:
- 表说明
- 业务用途
- 数据样例解读
- 字段说明
- 关联关系
统一模板的意义在于:
- 便于批量转换与批量评估
- 便于后续构建稳定的知识入库流程
- 便于在不同表之间做横向检索与对比
- 降低 RAG 召回时的结构不确定性
常见标注方式
标题层级标注法
这是最通用、最容易落地的方法。通过 Markdown 的一级、二级、三级标题,把表级、分类级、子类级内容区分开。
优点是:
- 简单直接
- 可读性好
- 与大多数 Markdown 处理链兼容
- 适合作为第一层结构骨架
不足是:
- 只能表达层级,不能精确表达每个信息块的开始和结束
- 遇到表格、样例数据、长字段列表时,仍可能需要额外边界标记
信息块标记法
这种方法为高价值信息块增加显式 begin/end 标记。特别适合字段说明、样例数据、关系定义等内容。
优点是边界清楚,适合机器识别;缺点是文档会比普通 Markdown 更“工程化”,需要维护命名一致性。
语义分隔符方法
还可以使用特殊分隔符,把字段区块、规则区块等隔开。使用时需要注意:
- 分隔符不能是文档里本来就会自然出现的普通内容
- 整个文档库中要保持统一风格
这种方法比 HTML 注释更直观,但对解析逻辑的一致性要求更高。
实践中的典型组成
在数据库表结构文档中,一份经过结构化标注的文档,通常会包含以下组成:
- 文档级起止标记
- 表名或主题标题
- 表说明
- 业务用途
- 数据样例解读
- 字段说明,必要时按多个块拆分
- 关联关系
- 文档级结束标记
其中,“字段说明”经常需要单独作为重点块处理,因为它既是高频检索目标,又容易因字段过多而超出单个 chunk 的理想长度,所以常常需要在统一结构下进一步分块。