背景与边界
数据切分(Chunking)是 RAG 流程入口。该节点将原始文档转成可检索语义单元,直接决定召回(Retrieval)上限。
要完成的工作
- 输入:Markdown、PDF、网页、表格、OCR 文本。
- 处理:清洗、解析、切分、重叠、元数据补充、版本管理。
- 输出:标准 Chunk(
chunk_id、doc_id、text、metadata)。
实现目标
- 提升召回可达性与语义完整性。
- 控制 chunk 总量与平均长度。
- 支持增量更新与可追踪回溯。
阶段指标
评测本阶段时冻结下游检索器与 $k$,避免把召回/生成的变化算进切分。
段末注释:召回率@k(Recall at k,Recall@k) = 金标准相关块落入检索前 $k$ 条的比例;本阶段用它当切分质量的下游代理,不是生成对错。
召回率@k(冻结检索)
- 含义:切分策略变了之后,同一批问句、同一嵌入与同一 $k$,金标准证据还能不能进候选。量的是可达性上限。
- 计算:查询 $q$ 的金标准相关块集合为 $R_q$,检索前 $k$ 条为 $T_k(q)$,
$$
\mathrm{Recall}@k=\frac{1}{|Q|}\sum_{q\in Q}\frac{|R_q\cap T_k(q)|}{|R_q|}
$$ - 适配:对比
chunk_size/ overlap / 语义边界;多约束问句(剂量 + 时限)是否被拆散。 - 不适配:检索器、重排、提示同时在改——数字无法归因到切分。
语义完整率(Semantic Completeness,SC)
- 含义:一条原子事实(数值、条件、否定)是否落在同一个 chunk 内。
- 计算:标注原子事实集 $F$,
$$
\mathrm{SC}=\frac{1}{|F|}\sum_{f\in F}\mathbf{1}\bigl[\exists,c:;f\subseteq c\bigr]
$$ - 适配:条款、方法步骤、统计表述;解释「为什么短窗口 Recall 低」。
- 不适配:事实天然跨段(需层级切分或多跳),SC 低不等于切分失败。
Chunk 膨胀比
- 含义:重叠与多粒度带来的索引体积代价。
- 计算:原文 token 数 $|D|$,切分后 $\sum_c |c|$,
$$
\mathrm{Inflation}=\frac{\sum_c |c|}{|D|}
$$ - 适配:overlap 网格、父子双层索引是否划算。
- 不适配:单独当质量指标;膨胀低但 SC 低是假节省。
阅读顺序正确率
- 含义:版面块顺序是否与人类阅读一致(双栏、图表穿插)。
- 计算:以金标准相邻块有序对为分母,预测顺序中仍保持先后的比例。
- 适配:Document Parsing、扫描件/双栏 PDF。
- 不适配:已是 Markdown/纯文本,本指标接近饱和,应看 SC 与 Recall@k。
主要难点
- 固定窗口易截断语义,过大又会引入噪声。
- 多格式文档结构不一致。
- 版本变更导致 chunk 漂移。
成熟解决方案
- 结构优先切分(标题、段落、表格边界)。
- 语义切分(相似度判边界)。
- 层级切分(父子 Chunk 联合)。
- 离线评测门禁后上线。
二级方法对比(含 100 篇生物学文献量级)
假设(全文同):约 100 篇生物学 PDF(期刊/预印本,约 10–15 页/篇,含摘要、正文、图表与参考文献);离线批处理;硬件参考 单卡 NVIDIA A10 24GB + 32GB 系统内存。下表为工程量级估算,非固定基准;生物领域常见 双栏、插图、化学式与密集引用,解析与切分偏「偏重」。
| 二级方法 | 适用范围 | 特点 | 主流实现框架 | 100 篇文献·资源消耗(估算) | 100 篇文献·时间消耗(估算) |
|---|---|---|---|---|---|
| Chunking-centric | 版式已规整、需统一 chunk 策略 | 以切分/重叠策略拉齐召回上限,常配合离线 recall 评测 | langchain-text-splitters;LlamaIndex SentenceSplitter / SemanticSplitter |
内存 8–16 GB;磁盘增量约 0.5–1.5 GB;可不使用 GPU | 多策略网格 + 同一批评测问句:约 0.5–2 CPU·h |
| Document Parsing | 扫描件、双栏、表格/公式/插图多 | 版面、阅读顺序、表格结构先于切分,决定下游上限 | 数字 PDF:Docling;生信双栏+公式:MinerU;多格式兜底:Unstructured | 内存 16–32 GB;临时磁盘 10–25 GB;可选 GPU 8 GB(布局/检测加速) | 解析 + OCR + 表格:约 3–10 CPU·h,或 1–4 GPU·h(视工具与是否批处理) |
| Hierarchical Chunking | 长篇综述、章节层级明显 | 父子 chunk 联合检索,粗到细两级 | LlamaIndex ParentDocumentRetriever / HierarchicalNodeParser;LangChain Parent Retriever |
索引体积约为扁平策略 1.2–1.8×;内存 +15–30% | 建库较同语料扁平切分:约 +30%–70% 离线时间 |