ChatGPT 处理大文档不是从头读到尾——它走 retrieval:把文件切成 chunk(通常 500-1500 token),按你 prompt 的相关度排序,只把 top-k chunk 塞进 context。一个 200 页 PDF 实际进入模型 attention 的可能只有 8-15 chunk。你以为它读了全文,它其实在用恰好被检索到的几块作答。这是设计、不是 bug——但可以通过分章节、点名页码、逐表查询的结构化 prompt 把整篇都”逼”出来。
常见原因
按命中率从高到低:
1. 检索只取 top-k chunk,整篇从未一起进 context
最常见。一次”总结这份报告”只检索 5-10 chunk,每 chunk 几百字——加起来可能就 5-10 页内容进模型。后面 190 页基本没读。
如何判断:让它”逐字引用第 142 页第一段”。引不出 / 引错页 = 那一页根本没被检索到。
2. 大输入触发”highlights”模式
模型识别到 “summarize 200-page report”,默认走概括路径而不是细读路径——平滑掉所有具体数字,只给主题。
如何判断:回答里有大量”该报告涵盖了…、重点关注…、强调了…”这种 meta 描述,没有具体数字 / 名字 / 日期。
3. 部分页抽取失败(图片页、扫描页、复杂版式)
PDF 解析器对纯图像页、双栏混排、表格密集页常常静默失败——文件传上去显示成功,但那几页内容根本没进检索池。
如何判断:让它列出每章的页数对照实际 TOC。某几章它说”内容很少”或”主要是图表” = 那几页抽取失败。
4. 同一问题不同时间答案不同
每轮检索按你 prompt 的具体措辞排 chunk,措辞稍变排序就变。结果是连续两次问同样问题,答案细节不同。
如何判断:用完全相同 prompt 问两次(间隔 5 分钟),具体数字 / 列表项有差异 = 检索抽样的随机性。
5. 文件接近 / 超过格式大小阈值
PDF > 50MB、CSV > 100MB 等触发不同处理路径,有的直接走”轻量”模式(只读元数据 + 头几页)。
如何判断:上传后让它打印 os.path.getsize + len(pdf_pages)。报告页数对得上 = 完整加载;对不上 = 触发了大文件路径。
6. 模型上下文窗口看似够大其实是稀释
GPT-5.5 / 5 有 128K-200K token 上下文,理论能塞下 200 页 PDF,但 attention 是稀释的:lost in the middle 效应让中间章节的信息接近被忽略。
如何判断:开头 + 结尾几章回答准,中间章节细节错 / 缺 = lost in middle。
动手前先确认
- 确认问题是在普通对话、Project,还是 Custom GPT 里出现;Custom GPT Knowledge 走的检索路径和上传文件不同。
- 复现前把当前对话复制一份,避免清掉历史影响下次诊断。
- 确认订阅:Free / Plus / Team / Enterprise 在上下文窗口和模型选择上差异明显。
需要收集的信息
- 文件类型、大小(MB)、总页数 / 行数、章节数。
- 是否扫描件 PDF、是否含中文 / 公式 / 大量图表 / 多栏排版。
- 上传方式:拖入对话框、Project 文件区、Custom GPT Knowledge。
- 完整 prompt 文案 + 回答截图;具体哪几章 / 哪几页内容明显缺。
- 当前模型 + 订阅级别。
最短修复路径
按收益从高到低,前 2 步通常修 70% 问题。
Step 1:先让它列章节标题对照 TOC
不要一上来就”总结全文”。第一轮:
List every section heading in the uploaded document, with page ranges.
Format as a numbered list. Do not summarize content yet.
把输出和 PDF 实际 TOC 对照。漏掉的章节 = 那部分抽取 / 检索失败,单独后续处理。
Step 2:逐章节追问 + 强制 evidence
不要让它一次”总结全文”。一章一问:
Summarize Chapter 3 (pages 47-72). Output:
- 3 concrete facts from this chapter, each with a 1-sentence quote
+ page number
- 2 numerical data points (with units)
- 1 sentence on what this chapter does NOT cover
Do not generalize. If you cannot find 3 facts, return fewer.
每章独立 chunk 检索,模型 attention 集中在小窗口,深度立刻上来。
Step 3:表格 / 数字单独问
数据密集的章节单独抽:
The document contains tables on pages 18, 34, 67, and 102.
For each table:
- Title / caption
- Row count + column count
- Quote the headers verbatim
- Quote the first 3 data rows verbatim
让它逐表处理,不要”总结所有表格”。
Step 4:自己聚合,不要让模型”汇总分章节答案”
收集了 10 章答案后,不要再问”基于以上请总结全文主题”——它会再次做平滑概括。 聚合在你这边做:
- 用 Markdown 表格放每章的关键事实
- 自己看 pattern、找矛盾、写跨章结论
- 需要某项跨章比较时单独问(“chapter 3 say X, chapter 7 say Y, reconcile”)
Step 5:抽取不稳就先切 PDF
如果 Step 1 列出来章节不全,本地切:
# 按章节切(如果 PDF 有书签)
pdftk full.pdf cat 1-46 output chapter1.pdf
pdftk full.pdf cat 47-72 output chapter3.pdf
# 或按页数固定切
qpdf --split-pages=30 full.pdf part-%d.pdf
每段 ≤ 30-50 页传一份,单文件抽取覆盖率显著更高。
Step 6:扫描件 / 图像页先 OCR + 转 Markdown
如果是扫描 PDF 或复杂排版:
# OCR
brew install ocrmypdf
ocrmypdf input.pdf output.pdf --language eng+chi_sim
# 高质量结构化抽取
pip install marker-pdf
marker_single input.pdf ./out --max_pages 300
把生成的 Markdown 上传,比 PDF 检索质量飞跃。
Step 7:重复用的同类报告做成 Custom GPT
每周看的财报 / 季报,做个 Custom GPT:
- Knowledge 里放最新一份 + 历史 3-4 份
- Instructions 把 TOC 烤进去:“This document type always has sections: Executive Summary, Financials, Risk Factors…”
- 每次新报告替换 Knowledge 文件即可,prompt 模板复用
怎么确认已经修好
- 开新对话上传同文件用 Step 2 的逐章 prompt 重做,每章都给出具体数字 + 页码引用 = 真修好。
- 把它给的某个 quote 在 PDF 里 Ctrl+F 找——找到且页码一致 = 真读到。
- 让同事用相同分章 prompt 跑一遍,覆盖一致 = 流程稳定,不是你这次运气。
如果还是没修好
- 把文件切到极小:保留你最关心的那 5-10 页传一份,看深度能不能拉起来。
- 换抽取工具:PDF → Marker Markdown → 直接传 Markdown,跨过 ChatGPT 的 PDF 解析器。
- 换模型:4o → o3 / GPT-5;reasoning 模型对长文跨章综合更稳。
- 准备好原文件 + 分章 prompt + 缺失章节列表,去 help.openai.com 提工单。
预防建议
- 大文档心智模型:把 ChatGPT 当”章节级研究助手”,不是”一键摘要器”。
- 永远先列 TOC 再分章问,不要”总结全文”。
- 每章都强制要求 quote + page,没引证就当没读。
- 反复读的同类报告做 Custom GPT,把 TOC 烤进 instructions。
- 重要决策类总结让 ChatGPT 输出原始事实 + 你自己写结论,不要让它做跨章综合。
相关阅读
- ChatGPT 上传的 PDF 分析不正确
- ChatGPT 文件分析太浅
- ChatGPT 多文件没被一起用
- ChatGPT 项目功能
- ChatGPT 文件分析
- ChatGPT Projects 进阶工作流
标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #大文档