夜雨聆风学习资料网

ARTICLE · 1336517

RAG 遇到 PDF,怎样让回答有据可查?

RAG 遇到 PDF,怎样让回答有据可查?

RAG 遇到 PDF,怎样让回答有据可查?

假设你把一份年报交给 AI,问它:“2025 年海外业务收入是多少?有没有剔除汇率变动的影响?”
它找到了 128.4,却回答成了128.4 亿元。翻回原文才发现,第 18 页的表头写着“单位为百万元”,数字在第 19 页的续表里,汇率口径则藏在表下的脚注中。
这是一份虚构年报,但它展示了 PDF 问答里很实际的问题。RAG(检索增强生成)可以找到一个相关数字,回答却要同时依赖表头、单元格和脚注。只要其中一项在解析或检索时丢了,模型拿到的就是一份不完整的证据。

01 按页选择解析方式

同一份 PDF 里,正文可能有可用的文本层,签章附件可能是扫描件,表格又可能是嵌在页面里的一张图。按页判断,必要时细到页面区域,才能让不同内容走合适的解析路径。
原生文本页直接提取文字和位置。遇到双栏、侧栏或脚注时,结合版面识别恢复阅读顺序。
扫描页或图片区域用 OCR 识别文字。混合页可以保留可用的原生文字,只对其他区域做识别,再把结果按版面合并。
复杂表格保留原始区域,用专门的表格解析器恢复行列和单元格。Docling 技术报告
图表和流程图保留原图,用视觉模型读取图例、坐标轴或节点关系。遇到需要精确读数的问题,再核对数据标签或对应的数据表。
解析时就给内容块绑定文档版本、PDF 中的页序和页内坐标。封面和目录可能让阅读器中的第 19 页与页面上印着的“第 15 页”指向同一页。两种页码都保留,前端可以准确跳转,读者也认得出原文的页码。

02 还原标题、表格和脚注的关系

原始版面提供了很多文字之外的线索。标题告诉我们一段话属于哪个章节,列名告诉我们数字对应哪一年,脚注则可能改变某个指标的统计口径。解析后要把这些关系保存下来。
普通段落可以挂在章节标题下面,合同正文按“章—条—款”组织。重复页眉页脚可以从正文索引中滤掉,解释业务含义的脚注要和它所说明的段落或表格一起保留。图也要关联图号、图注和原图位置。
对跨页表格,可以用表号、续表标记和列结构判断前后两页是否属于同一张表。以开头的年报为例,第 19 页的 128.4 要关联“海外业务”这一行、“2025 年”这一列,以及第 18 页的单位。只有续表关系得到确认,才把上一页的表头关联到下一页。每个单元格仍保留自己的原页位置,便于逐项核验。

03 用页级索引定位,用片段索引取证

页级索引适合先找到值得读的页面。对于图文混排较多的资料,可以为页面图像建立视觉索引,让文字问题也能找到相关图表所在的页。ColPali 就是一种实现,它用多个向量表示一页的视觉内容,再计算页面与查询的相关性。
片段索引进一步定位到一段正文、一项条款或一组表格行。切片时沿用文档结构。短段落跟着标题走,长条款按款拆分,长表按行组拆分,每组带上列名、单位和相关脚注。图表可用图注或摘要参与检索,命中后再读取原图。
每个片段带上文档 ID、版本、章节路径、页码及相关图表编号。检索文本可以补上“分部经营情况 · 表 3 · 海外业务”这样的上下文,方便关键词匹配表号和条款编号,也方便语义检索找到不同说法下的同一概念。补写的说明与可引用的原文分开保存。命中一个小片段后,系统可以沿着这些关联补读父章节、相邻页或表头。

04 让 Agent 按问题读取原文

可以把查找和读文档拆成几种工具,由 Agent 根据缺少的证据决定下一步。
search_pdf
搜索候选页和片段,返回位置与证据标识。
read_page
读取指定页或区域,补齐前后文和脚注。
extract_table
读取指定表格或单元格,同时带回行名、列名和单位。
analyze_chart
查看原图、图例和坐标轴。
quote_source
根据本次读取的证据标识,生成可跳回原页的引用。
查制度条款时,一次检索就可能找到完整依据。查年报里的这个数字时,Agent 可以先找到第 19 页的续表,再读第 18 页核对单位,最后读第 19 页脚注确认汇率口径。若问题涉及两年数据,还要分别核对两列的单位和口径,然后再计算差值。

05 引用要能核验,评测要能定位故障

回到开头的例子,假设脚注写的是“按当期汇率折算,未作恒定汇率调整”,回答可以写成这样。

2025 年海外业务收入为 128.4 百万元,金额见《2025 年报》第 19 页表 3 续表,单位见第 18 页表 3 表头。该数据按当期汇率折算,未剔除汇率变动影响,见第 19 页表下注 2。

在产品里,系统可以用实际读取的证据标识生成链接,固定到对应文档版本、页面和区域。金额、单位、汇率口径分别对应自己的依据。只查到金额和单位时,可以先回答金额,并说明本次未找到足以确认汇率口径的依据。
用一批标过原文证据的问题做评测,同一道题可以从三个地方查起。
查解析。看文字、阅读顺序和表格行列有没有还原,检查 128.4 是否落在正确的年份列,单位和脚注是否绑对位置。
查检索。看前 K 条结果找回了多少标注证据,也单独统计多证据问题的找齐率。本例只有续表命中时,金额可能碰巧答对,汇率口径仍缺依据。
查回答。分别检查数值、年份、单位或图表结论是否准确,引用是否跳到正确位置,原文是否支持它旁边的主张。再用证据不足的题目检查系统会怎样作答。

06 一万份合同里的违约条款怎么统计

如果用户问“哪三类违约情形出现在最多的合同里”,需要先确定统计口径。假设按有效版本的合同数统计,同一份合同多次提到“逾期付款”,在这个类别里也只计一次。
入库时抽取违约情形,保存合同 ID、版本、条款号、标准类别及原页位置。查询时,Agent 先限定合同范围,再对符合范围的结构化记录按类别统计不同合同的数量。最后返回前三类、各自涉及的合同数,以及能跳回原页的代表条款。
向量检索可以帮忙找到“逾期未付”“未按期支付”等相近表述,也可以为结果挑选例证。排名所用的计数则依赖整个统计范围内的抽取覆盖率和分类质量。若有合同尚未解析,应同时显示已纳入统计的合同数,让读者知道这份排名覆盖了多大范围。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料