犀牛鸟 2026 研究笔记 estelledc.github.io

Ch40: 挑战深读③——分块与多模态

Part 10 · 覆盖 challenges #3 分块 + #12 多模态 前置:Ch27 分块源码 · 案例:case-1725

结论先行分块矛盾 = 粗则丢细节、细则丢上下文,且 最优分块是 query 依赖的,却必须在 ingest 离线决定多模态矛盾 = 架构图/财务报表/公式承载关键信息,文本管线却常丢弃或展平。大师做法:按 文档类型 选策略,不是全局一个 chunk_size;多模态默认 文本化 OCR,图搜图或 VLM 按需叠加。


一、日常类比(分块)

把教材拆成检索卡片:按页拆太长搜不准;按段拆有的段只有一句话脱离上下文;按句拆逻辑关系全丢。理想是按 知识点 拆——但「什么算一个知识点」本身难解,且同一本书对「总结全书」与「第三页 p-value」需要 不同粒度。WeKnora 四级自适应是在 文档维度 做折中,仍非 query 维度最优。


二、分块失败场景与根因

场景 失败表现 根因
代码文档 函数签名与实现分属两 chunk,各「半相关」 固定长度切断语法单元
FAQ 问题 chunk 召回、答案 chunk 未召 分块只看长度,不懂 Q-A 绑定
表格 表头与数据行分离,数字无语义 表格语义 = 表头×数据 组合
长距离指代 「它」指 WeKnora 图谱,指代跨 chunk 丢失 分块破坏共指消解

这些失败直接喂养 挑战 #1 最后一公里 的「跨 chunk」形态;也加剧 挑战 #6 向量失真(大块语义稀释 vs 小块上下文缺失)。


三、分块决策树(ingest 时选用)

上传文档
  ├─ 短 FAQ / 单页说明(< 阈值 token)→ L1 文档级整篇
  ├─ 有清晰 # 标题的手册/API → L2 章节级
  ├─ 长文叙述、结构弱 → L3 段落(\n\n + max tokens)
  ├─ L3 仍超限 → L4 语义切(embedding 跳变点)
  ├─ 检测到 Markdown/HTML 表格 → 整表 chunk,禁止滑动窗口切表
  ├─ 检测到代码块 ``` → 按函数/类边界,不拦腰断
  └─ 降级链:L4 失败 → L3 → 固定长度 + overlap

平台对照(摘自 challenges.md):

项目 策略 未解根本问题
WeKnora 四级自适应 + 降级 文档维非 query 维
RAGFlow DeepDoc 结构感知 解析错则分块错
Dify 固定长 + overlap + 父子 父 chunk 仍固定
FastGPT QA 对 LLM 拆 叙述性 doc 失真
AnythingLLM 固定长 + overlap 无语义感知

源码走读见 Ch27ChunkSizeprotectedPatterns、降级 if-else。贡献时必做 表格 / 代码 / FAQ 三类回归


四、case-1725:分块与解析的格式契约

PaddleOCR-VL 输出带 style="text-align:..." 的 HTML <table>,WeKnora chunker 的 protectedPatterns 只认 Markdown 管道表 |...|

docreader(HTML table) → docparser(未归一化) → chunker(只保护 pipe 表)
                              ↓
                    表超 ChunkSize → 从 <td> 中间切断
                    style 属性 → token 为同内容 MD 的 2–3 倍

PR #1755 在 docparser 加 HTML 表归一化:简单表转 GFM MD(chunker 天然保护);rowspan/colspan 表剥 presentational 属性保留 HTML。教学点:管线中间层输出必须满足下游保护条件——修 chunker alone 不够,上游仍喷 HTML 仍会浪费 token。


五、多模态:核心矛盾与三架构

文档中图/表/公式承载关键信息,文本检索却无法直接利用——或 ingest 时丢弃,或展平丢结构。

日常类比:菜谱只有文字描述「色泽金黄」,照片被扔掉;更糟的是正文写「见上图」而图已丢失。

架构 做法 成本 何时默认
文本化 OCR 图→文字/caption 进同一文本索引 生产默认;WeKnora IMA、RAGFlow OCR
多向量 CLIP 图文共嵌入,文本查图 以图搜图、商品/catalog
VLM 按需 单页 GPT-4V/Qwen-VL 理解版式+语义 L2 失败后的单页精答

未解共性:OCR 拿不到「箭头表示调用方向」;CLIP 对架构图 vs 流程图粒度粗;VLM 贵且慢。RAGFlow DeepDoc 表格最好;WeKnora 可贡献 ingest 时 VLM 生成图片描述 关联存储,检索间接吃语义。

公式:LaTeX 可解析;扫描 PDF 公式需数学 OCR,开源效果有限——常落 Level 3 按需 VLM。


六、五平台多模态能力快照

项目 图片 表格 公式
RAGFlow OCR + 图注 深度表格识别 基础 LaTeX
WeKnora IMA + OCR 实体抽取向 基础
Dify 可配 OCR 插件 基础
FastGPT 外部服务 基础
AnythingLLM

多模态质量 上限Ch39 解析天花板 约束;下限 受本分块策略约束(图 OCR 文本应与 caption 同 chunk_id,避免图注分离)。


七、前沿与贡献 idea

Late Chunking、Contextual Chunking、Sentence-Window 见 challenges.md。WeKnora 可落地 PR

  1. 上传 doc_type 枚举 → 绑定 chunk 策略(法规/FAQ/论文)
  2. 表格检测 → force chunk_boundaries(与 1725 归一化双做)
  3. 图片 OCR + caption 同 chunk;MHTML 分辨率见 case-1743

独立工具向:分块 内聚性/完整性/边界质量 评估器(challenges.md 机会 2),服务自适应降级调参。


八、挑战耦合


章末自检

延伸阅读