Skip to content

RAG 知识库分块与文档解析策略

文档解析陷阱、分块策略(固定/递归/结构/语义/父子块)、滑动窗口 Overlap、表格与代码解析,以及端到端评测。

Updated View as Markdown
For humans

RAG 知识库分块与文档解析策略

校招考察频度:★ 高频(重点常考·大厂分水岭) 一句话速记:分块的本质不是机械“把文本切短”,而是切出“语义自包含的可回答单元”;递归字符切分是稳健工业基线,重叠窗口(Overlap 10%~20%)防止上下文腰斩;针对“检索精度与回答上下文”的天然矛盾,工业界最优解是父子块(Parent-Child)索引:小块向量匹配保召回,父级大块喂给 LLM 保忠实度。

在当今的大模型与 Agent 岗位面试中,RAG(检索增强生成)几乎是每位同学简历上都会出现的项目。很多初学者被问到分块时只会说“用 LangChain 默认 500 字符切分”,立刻暴露经验欠缺。


一、0 基础生动类比:图书切页与查字典模型

RAG 分块环节生活化比喻现实面临的痛点
粗暴固定切分(Fixed)闭着眼睛每 500 个字拿剪刀剪一刀。刚好把“但是以下情况除外:”剪在上一页,把具体免责条款剪在下一页,LLM 召回后直接给出与事实完全颠倒的致命回答!
滑动窗口(Overlap)剪书时,每页末尾与下一页开头重叠复印两句话。保证相邻段落之间的语法与指代连续性,代价是产生轻微重复数据。
父子文档块(Parent-Child)字典的**“详细词条卡片(父块)”与“微型拼音索引标签(子块)”**。用极小的子块(如 64 token)做精准的语义向量匹配;一旦命中,把完整的章节大卡片(如 1024 token)喂给 LLM,既准又全。

二、父子块索引架构(Parent-Child Retriever)

父子块(Parent-Child)索引与检索架构

为什么父子块能破解“语义分块悖论”?

  • 语义分块悖论:块切得越小(如单句话 50 token),向量语义越纯粹,检索匹配精度极高;但当把这一句话送给 LLM 时,由于缺乏上下文的前因后果与逻辑推导,模型依然只能一本正经地胡说八道(产生幻觉)。
  • 父子块两全其美:检索阶段用小块(解决向量被多主题稀释问题),推理生成阶段用大块(提供完整论证证据链)。

三、主流分块策略深度对比

策略模式运作机制适用场景与优缺点
固定字符大小纯按字符或 Token 长度硬切,辅以 Overlap玩具级 Demo,容易破坏句子结构与词义。
递归字符分块 (Recursive)按分隔符优先级尝试:["\n\n", "\n", " ", ""]工业界通用默认方案。优先保留自然段落,段落过大再拆为单句,尽可能保全完整语义。
结构感知分块 (Markdown/HTML)解析 Markdown 的 #, ## 标题或 HTML 标签层级适合技术文档、产品手册。能将上层各级标题自动拼接到子块头部作为上下文增强。
语义分块 (Semantic)计算相邻句子的向量余弦相似度,相似度急剧下跌处截断适合论文、散文等无明显小标题的长文本,但计算开销大。
代码/表格感知分块基于 AST 语法树切分函数与类;表格整表作为原子单元代码与金融财报必备。严禁将一张完整的 Markdown/HTML 表格从中间横截切断!

四、文档解析的三大高频“深水坑”

  1. 表格结构损坏:
    • 表格一旦被普通分块器切碎,表头与具体数值字段脱节,模型召回后完全不知道那一串数字代表什么含义。
    • 解法:整表必须作为不可拆分的原子块;若表格超大,拆分时必须在每个子块中重复拷贝完整的表头与表元数据。
  2. 指代与代词断裂:
    • 比如合同第 1 页定义:“本协议甲方指北京某某有限公司”;而在第 5 页切出的分块里只有:“甲方应在 3 日内付款……”。
    • 解法:元数据注入(Metadata Injection),在每个分块的顶部强制追加包含“文档标题、核心实体定义”的面包屑描述文本。
  3. 扫描件与复杂多栏 PDF:
    • 传统 PDF 提取库按物理从左到右读取,会把两栏排版的报纸直接串行混拼在一起。必须采用支持 Layout 布局感知的解析工具(如 MinerU、Marker 或多模态 Vision 模型)。

五、知识脉络关联网(Knowledge Highway)


六、校招高频面试追问

  1. 块大小(Chunk Size)和重叠度(Overlap)怎么调参?有黄金法则吗?
    • 没有一劳永逸的固定数值,但有严谨的工程经验区间:
      ① FAQ / 问答对:100200 tokens;
      ② 常规企业知识库 / 规章制度:300
      500 tokens(搭配 10%20% 的 Overlap,即 5080 tokens);
      ③ 硬性物理约束:Chunk 长度绝对不能超过你所选用 Embedding 模型的最大上下文长度(如 bge-large-zh 为 512 tokens,超出部分会被直接截断丢失)。最终必须基于你所在业务场景的真实召回评测集进行网格搜索调优。
  2. 什么是“丢失在中间”(Lost in the Middle)现象?分块如何缓解它?
    • 论文《Lost in the Middle》指出:大模型对长上下文的头部(开头)和尾部(结尾)关注度最高,而对位于中间位置的信息敏感度急剧下降。
    • 分块如果切得过大,关键信息若落在长块的中间,模型很容易视而不见。控制单块精炼度,并配合 Rerank 重排器将最相关的块调整到上下文的最前端或最末端,能有效解决该问题。
Navigation

Type to search…

↑↓ navigate↵ selectEsc close