flowchart LR
W3["Week03<br/>raw document ingest"] --> RAW["raw_doc_asset<br/>s3://omni-raw-documents"]
RAW --> PARSE["Week7 parse<br/>Docling-first"]
PARSE --> SECTION["knowledge_section<br/>layout + hierarchy"]
SECTION --> CHUNK["document_chunk<br/>section-aware"]
CHUNK --> ANCHOR["evidence_anchor<br/>page / bbox / source"]
ANCHOR --> GATE["Week8 ready gate"]
GATE --> W8["Week08<br/>index / retrieval / RAG"]
Week 7:非结构化数据工程
从“原始文档”到“带证据锚点的可检索文档资产”
Week7 不是 PDF 工具横评,也不是 RAG 索引课。
这一周只解决一个关键问题:
企业知识文档进入系统后,如何保留布局、层级、页码、坐标、版本、质量状态,并把每个 chunk 绑定到可回指原文的 evidence anchor。
本周默认 Student Core 路线是 Docling-first 文档解析、结构感知切片、evidence anchor 与质量门禁。Unstructured、OCR、ASR、video、VLM caption 都只作为 optional / Instructor Scale,不作为学员必需路径。
Week7 不生成 embedding、不写 pgvector、不做 hybrid retrieval、不做 reranker、不实现 RAG API。Week8 才开始索引和检索。
本周一句话
把 Week3 已经 ingest 的 raw document asset 升级成 可切片、可质检、可引用、可被 Week8 安全索引的文档资产 v1。
本周为什么重要
- 如果只做 PDF to text,标题层级、表格结构、页码和 bbox 很容易丢。
- 如果 chunk 没有 evidence anchor,Week8 的 citation 只能变成“看起来像引用”。
- 如果解析策略和切片策略没有版本,坏案例无法复盘,也无法做回归对比。
- 如果没有 quality gate,Week8 会把低质量 chunk 直接送进索引。
本周在整门课里的位置
上承 Week03
Week03 负责把文档资产拿进系统:manifest、raw object、knowledge_doc、ingest report。
本周解决
Week7 把 raw document 变成 parsed sections、document chunks、evidence anchors、quality report 和 Week8 ready gate。
接住 Week06
如果 Week06 asset factory 已落地,Week7 可以挂到 Dagster asset graph;如果还没有,先走 devbox CLI fallback。
下接 Week08
Week8 只应该消费通过质量门禁、且能回指原文的 chunks。任何 citation 都必须来自 evidence anchor。
五个课时
课时1|为什么“抽出文本”不等于非结构化数据工程
- raw document 与 document asset 的区别
- 为什么 RAG 需要结构保真和 provenance
- Week7 做什么、不做什么
课时2|智能文档解析:布局、层级、表格、页码、坐标与 provenance
- DoclingDocument / Unstructured elements 的取舍
- parser 输出必须保留哪些 metadata
- 为什么 OCR / ASR / VLM 不进入 Student Core
课时3|从 section 到 chunk:结构感知切片与 overlap 边界
- fixed-size chunk 为什么危险
- section-aware / table-aware / page-aware 怎么组合
- chunk strategy version 和稳定 ID
课时4|Evidence Anchor:让每个 chunk 可以回指原文位置
- chunk、section、anchor 的职责拆分
- citation 为什么不能由 LLM 临时发明
- anchor contract 最少要保留什么
课时5|解析质量与切片质检:把 Week8 索引准入做成工程门禁
- metadata completeness / anchor coverage / bbox coverage
- content-type aware quality gate
chunk_quality_report.md与week8_ready_gate.json
实验|把 Week3 文档资产升级成 Week8-ready 文档资产
实验目标是跑出 Week7 最小闭环:
- 读取 Week3 raw document asset
- 运行 Docling-first parse
- 生成 normalized sections
- 生成 section-aware chunks
- 为每个 chunk 生成 evidence anchor
- 输出 quality report 与 Week8 ready gate
作业|提交文档资产 v1 与质检报告
作业要求你把 Week7 收口成可交接交付物:
- Week7 execution blueprint
- schema / contract 校验结果
- sections / chunks / anchors 样例
chunk_quality_report.mdweek8_ready_gate.json- 一份 bad case 复盘与修复建议
Week3 → Week7 → Week8 主线图
本周做 / 不做边界
| 分类 | 本周处理方式 |
|---|---|
| 必做 | parse、normalize sections、structure-aware chunking、evidence anchor、quality report、Week8 ready gate |
| 可选 | Unstructured fallback、OCR flag、visual placeholder、ASR/video schema placeholder |
| 明确不做 | embedding、pgvector、hybrid retrieval、reranker、RAG API、tool calling、full eval harness |
| 默认路径 | Mac + Docker Compose + devbox CLI;Dagster 只是 thin wrapper |
| 数据落点 | PostgreSQL + MinIO parsed artifacts;Iceberg optional,不阻塞本周 |
本周交付物
contracts/data/knowledge_section.schema.jsoncontracts/data/document_chunk.schema.jsoncontracts/data/evidence_anchor.schema.jsoncontracts/data/parse_run.schema.jsoncontracts/data/chunk_quality_sample.schema.jsonpipelines/parse_normalize/run_parse.pyartifacts/week07/sections.jsonartifacts/week07/chunks.jsonartifacts/week07/evidence_anchors.jsonreports/week07/chunk_quality_report.mdreports/week07/week8_ready_gate.jsonrunbooks/week07-unstructured-data.mddocs/blueprints/week07/week07-execution-blueprint.md
关键判断
- Week7 的核心不是“读出更多文本”,而是让文本、表格和图片占位带着结构、来源、策略版本和质量状态进入 Week8。
- Evidence anchor 是 citation 的事实来源,LLM 只能消费它,不能发明它。
- 质量门禁必须按文档类型判断:PDF、HTML、Markdown、DOCX 的 page / bbox 规则不同。
- 本周先保证 Student Core 可跑,再讨论 OCR、ASR、video、VLM caption 等 Instructor Scale 能力。