Skip to content

PDF 文档 RAG 工程化:四环节流水线(口播版) ​

面试高频问题:PDF 文档的 RAG 怎么做?和普通文本 RAG 有什么区别? 一句话答案:PDF RAG 是完整工程流水线,不是"抽文本 → 切块 → 存向量"三步跑通就完 —— 尤其扫描件、表格图表这些,解析和分块决定系统上限。 适用面次:二面深度 / 三面综合(落地能力 + 架构意识) 本版定位:口语应答脚本 —— 先给「开口就能说」的话术,再给速记要点。


【30 秒极简版】(面试官随口一问时用) ​

PDF RAG 不能只做"抽文本、切块、存向量",它是四环节工程流水线: ① 解析层先判文件类型 —— 原生文本 PDF 直接提取、扫描件走 OCR、图文混排上多模态模型; ② 结构还原用字体坐标推断标题层级和表格,剔页眉页脚、标元数据; ③ 智能分块按语义单元切,每块带元数据 + 上下文说明,避免只见树木不见森林; ④ Agent 工具化把能力封装成 search_pdf / read_page 这些工具按需调用,回答带引用,用指标闭环优化。 一句话:垃圾进垃圾出,解析和分块决定上限 —— 要从"能跑"做到"可靠"。


【2 分钟完整口播】(正式被问到时的主干回答) ​

PDF 的 RAG 处理,我看到很多实现就是"抽文本 → 切块 → 存向量"三步跑通,但真上生产会发现这是工程流水线问题,我把它拆成四个环节。

第一环节是解析层,核心是先判断 PDF 类型。PDF 其实是排版格式不是内容格式,不判断类型直接抽,扫描件抽出来是空的。三类:原生文本 PDF 用 pdfplumber 这类工具提取文字,关键是要保留坐标信息,后面结构还原要用;扫描件 PDF 必须走 OCR,Tesseract 或 AWS Textract;最麻烦的是图文混排 PDF —— 含表格、图表,纯文本抽取会把表格拍成一串乱序文字,信息就割裂了,这种我用多模态模型直接理解视觉信息,比如 Claude 的 PDF 能力。

第二环节是结构还原,构建文档骨架。用字体大小、坐标位置推断标题层级和表格行列;把页眉页脚剔掉,不然每块都混着重复噪声;同时标记元数据 —— 章节、页码。这步的价值在条款级追溯:比如合同场景,答出"第 3.2 条"和答出一坨模糊文本,是两个可信度等级。

第三环节是智能分块,语义切片加上下文注入。不是按固定字数切,而是按语义单元:一个章节、一张表格、一组图文绑定在一起切,表格拆两半就废了。每块携带元数据 —— 文档 ID、章节、表格 ID;再补一句上下文说明,比如"此片段来自第三章风险因素",让每块独立可理解。否则检索出来的块只见树木不见森林,模型根本不知道这块在讲什么。

第四环节是 Agent 工具化。把能力封装成工具:search_pdf 检索、read_page 读整页、analyze_chart 分析图表,Agent 按需动态调用 —— 比如对比两份财报,直接抽表格而不是全文检索。回答必须标注引用来源(页码、原文),可追溯才可信。最后用检索准确率、OCR 错误率这些指标做闭环优化,而不是上线了就不管。

一句话总结:垃圾进垃圾出 —— 解析和分块决定系统上限。做 PDF RAG 的重点不是把流程跑通,是从"能跑"做到"可靠"的架构意识。


一、四环节流水线总览(必背框架) ​

速记主线:判类型 → 搭骨架 → 切语义 → 封工具

环节干什么一句话核心
① 解析层识别文件类型,选对抽取方式先判类型再动手
② 结构还原字体坐标推层级,构建骨架让文档有结构
③ 智能分块语义切片 + 元数据 + 上下文注入块要独立可理解
④ Agent 工具化封工具动态调用 + 引用追溯 + 指标闭环能力可调用、答案可追溯

二、逐环节要点(被追问时展开) ​

① 解析层:先判断 PDF 类型 ​

开口说:

PDF 是排版格式不是内容格式,第一步永远是判断类型,不同类型的处理路径完全不同。

PDF 类型处理方式关键细节
原生文本 PDFpdfplumber 等工具提取保留坐标 —— 结构还原的原料
扫描件 PDFTesseract / AWS Textract OCROCR 有错误率,后面要有指标兜着
图文混排 PDF多模态模型理解视觉信息(如 Claude PDF)避免信息割裂 —— 表格被拍成乱序文字

陷阱提示:不判类型直接抽文本,扫描件抽出来是空的,图文混排抽出来是碎的 —— 这是最常见的"能跑但不可靠"。

② 结构还原:构建骨架 ​

开口说:

抽出来的文本是一维字符串,要还原成有骨架的文档,靠的就是解析层留下的字体和坐标。

  • 字体大小 / 坐标位置 → 推断标题层级(H1/H2/H3)和表格行列;
  • 剔除页眉页脚 —— 否则每块都混重复噪声,污染向量;
  • 标记元数据:章节、页码;
  • 价值锚点:条款追溯 —— 合同场景能定位到"第 3.2 条"、财报能定位到页码,可信度完全不同。

③ 智能分块:语义切片 + 上下文注入 ​

开口说:

分块不按字数按语义 —— 章节是天然的语义单元,表格必须整体绑定,图和它的说明文字绑在一起。切完每块还要"自我介绍"。

  • 语义单元切块:章节 / 表格 / 图文绑定,表格拆两半等于信息作废;
  • 每块携带元数据:文档 ID、章节、表格 ID;
  • 补充上下文说明:如"此片段来自第三章风险因素" —— 让块脱离文档也独立可理解;
  • 不做的后果:检索命中了块,但模型只见树木不见森林,答非所问。

④ Agent 工具化:动态调用 + 可追溯 ​

开口说:

最后把整套能力封装成工具交给 Agent 按需调用,而不是一次性把所有内容灌进上下文。

  • 工具集:search_pdf(检索)/ read_page(读整页)/ analyze_chart(分析图表);
  • 动态调用:对比财报 → 直接抽表格,不做全文检索;
  • 引用标注:回答带页码、原文 —— 可追溯才可信;
  • 指标闭环:检索准确率、OCR 错误率等指标持续优化,不是上线即终点。

三、关键提醒(拔高收尾) ​

开口说:

这套东西的核心认知就一句:垃圾进垃圾出 —— 解析与分块决定系统上限。模型再强,喂进去的是碎的、乱的、缺上下文的内容,也救不回来。

面试差异点:别人背流程(抽文本/切块/存向量),你讲"从能跑到可靠"的架构意识 —— 类型判断漏了会怎样、表格切开会怎样、没有引用追溯会怎样 —— 每个环节都有失败模式和解法,这才叫落地能力。


四、避坑提醒 ​

  • ❌ 别只答"用 LangChain 切块存向量" → ✅ 先问/先讲文件类型判断,这是专业度分水岭。
  • ❌ 别把 OCR 说成万能 → ✅ 主动提 OCR 错误率及指标监控(诚实 + 有工程意识)。
  • ❌ 别说"分块大小 512 token"这种死参数 → ✅ 讲语义单元优先,表格/图文绑定的原则。
  • ❌ 别编具体准确率数字 → ✅ 如实说"以评测集和监控数据为准,具体值暂未带"。

五、面试官在考什么 ​

维度你的证据
落地能力知道扫描件/表格这些真实坑,每种都有对应解法
架构意识"从能跑到可靠",有失败模式分析,不是流程背诵
闭环思维引用追溯 + 指标监控 + 持续优化(呼应第 10 篇验收闭环)

六、追问预案(Q&A 演练) ​

Q1:怎么判断一个 PDF 是原生文本还是扫描件?

抽一页看有没有可提取的文本层:有文本层 → 原生;文本层为空或极少而页面是整页图片 → 扫描件;两者混合 → 按页判断,分页路由到不同处理管道。

Q2:表格抽取用什么方案?

分层:简单表格 pdfplumber 按坐标还原行列;复杂跨页表格用表格识别模型或多模态模型;抽完做结构校验(行列数合理性),OCR/抽取结果进错误率监控。

Q3:上下文注入会不会浪费 token?

会有少量开销,但换来的是检索块的独立可理解性 —— 否则命中了也答不好,返工更贵。可以只注入短标注(章节路径),不注入大段原文,控制成本。

Q4:检索准确率怎么测?

建评测集:标注"问题 → 应命中的块/页码",跑检索算命中率;配合线上信号(引用点击、用户反馈)闭环,发现 badcase 回流优化分块和解析策略。

Q5:为什么不直接把整个 PDF 丢给长上下文模型?

三个原因:成本(每轮都付全量 token)、时效(大文档延迟高)、可追溯(全文塞入答出内容无引用锚点)。长上下文和多模态是解析层的补充(用于理解图文混排),不是替代检索架构。


全篇串联(考前 10 秒扫这个) ​

PDF RAG ≠ 抽文本/切块/存向量(立判断)
→ ① 判类型:原生提文本保坐标 / 扫描走 OCR / 混排上多模态
→ ② 搭骨架:字体坐标推层级 · 剔页眉页脚 · 标元数据(条款追溯)
→ ③ 切语义:语义单元绑定 · 块带元数据 · 上下文注入(防只见树木)
→ ④ 封工具:search/read/analyze 按需调 · 引用标注 · 指标闭环
→ 垃圾进垃圾出:解析与分块决定上限 · 从能跑到可靠(收尾)

关联笔记:08蔚来Agent面试题-LangGraph+RAG三轮技术面(RAG 基础问答)、10Agent长任务失控治理-任务管控三层体系与执行闭环(指标闭环验收呼应)