ChatGPT 不会跨文件比较:原因 + 对症修复

传了 3 个文件想做对比,ChatGPT 只读了一个?点名每个文件、强制逐文件出表格。已按 GPT-5.5、2026 年 6 月核对。

最快修法: 在同一条 prompt 里,用反引号点名每个文件名,并要求输出一张表格——每个文件一行,每个单元格都附上引文和页码。这一个改动就能逼着 ChatGPT 的检索把所有文件都拉进来,而不是只用打分最高的那一份作答。完整 prompt 见下方 Step 2。

ChatGPT 的多文件处理走的是”按问题逐次检索”——不是”把所有文件读一遍再综合”。每次提问,检索会给所有附件的每个 chunk 打分,只有得分最高的那几个 chunk 进入模型的 context。如果三个文件内容类似,最相关的那个会把另两个”挤掉”;如果你没显式说”对比”,模型默认只用挑出来那一份作答。跨文件综合失败不是模型不愿意,而是另外两个文件的内容根本没进它的 context。修法是用点名 + 结构化对比 prompt,强制每个文件都进检索。

截至 2026 年 6 月,这套机制对所有上传方式都适用——拖进对话框的文件、Project 文件、Custom GPT Knowledge 走的是同一套”检索 + 排序”逻辑,GPT-5.5 Instant 和 Thinking 都一样。

常见原因

按命中率从高到低:

1. 检索给一个文件打高分,其他都丢了

最常见。三个 Q1/Q2/Q3 财报,你问”营收趋势”——检索给最相关的那一份(比如最近的 Q3)打高分,另两个 chunk 都没进 context。模型只看了 Q3 就回答”营收增长”。

如何判断:让它”列出本次回答引用的所有文件名”。只有一个 = 检索只命中了一份。

2. Prompt 没传达”跨文件推理”信号

“分析这几份报告” → 模型当作”分析(这堆)报告”= 一份代表。“对比这三份报告 X 项” → 触发跨文件检索路径。

如何判断:你的 prompt 里没有”对比 / compare / across / each of”这类跨引用词 = 没传信号。

3. 文件名相似 / 内容高度重叠

report.pdfreport-v2.pdfreport-final.pdf——检索按相似度,三个争抢同一个查询,赢家通吃。

如何判断:让它单独问每个文件”这个文件主要讲什么”,输出几乎一样 = 内容重叠。

4. Project 文件太多稀释检索

Project 里塞满文件,每次提问也只拉少数几个 chunk,你想要的那三份未必都被选中。截至 2026 年 6 月,每个 Project 的文件上限是:Free 5 个、Go / Plus / Edu 25 个、Pro / Business / Enterprise 40 个。就算远没到上限,一个 Project 里挂 20+ 文件也会严重稀释检索。

如何判断:在 Project 里跑同一条 prompt vs 普通 chat 里只传那三份文件,覆盖明显不同 = 稀释。

5. 文件大小差异让小文件被淹没

500 页 PDF + 5 页 PDF 一起检索,大文件 chunk 多 / 平均分高,小文件 chunk 经常一个都进不去。

如何判断:单独问小文件能正常引用,加上大文件后小文件就消失 = 大小不平衡。

6. 上下文窗口耗在一份文件上

如果你显式说”先读 a.pdf 全文” 模型可能把整个 a.pdf 灌进 context,window 满了,b.pdf 和 c.pdf 自然进不去。

如何判断:第一份文件被完整引用、其他完全没出现 = 窗口被占满。

动手前先确认

  • 确认问题是在 Project、Custom GPT 还是普通对话里出现;三者多文件处理略有差异。
  • 复现前把当前对话复制一份,避免清掉历史影响下次诊断。
  • 核对限额。截至 2026 年 6 月,网页端单条消息最多附 20 个文件(2026 年 2 月从 10 个上调),每个文件 512 MB,外加每 3 小时 80 次上传的滚动上限。如果你单条消息超了附件数,有些文件会悄悄没传上去。
  • 确认订阅。Free / Go / Plus / Business / Enterprise 在每个 Project 的文件上限、以及模型选择器能选哪个模型上有差异。

需要收集的信息

  • 文件数量、每个的类型 + 大小 + 页数 / 行数;文件名是否有辨识度。
  • 上传方式:拖到对话框、Project 文件、还是 Custom GPT Knowledge。
  • 完整 prompt 文案 + 回答截图;具体哪些文件被引用、哪些被忽略。
  • 当前模型(GPT-5.5 Instant 还是 GPT-5.5 Thinking)+ 是否在 Project / Custom GPT 里。

最短修复路径

按收益从高到低,前 2 步通常修 70% 问题。

Step 1:先让它确认”它看到哪些文件”

每次开始多文件任务前:

List every file currently available to you in this conversation,
with filename and a one-line description of each.

输出和你期望对得上才继续。漏掉的文件先解决可见性(重传 / 检查 Project Files)。

Step 2:点名 + 结构化对比 prompt

不要”对比这些报告”。换:

Compare the following three files on Q1 revenue and YoY growth:
- `q1_2024.pdf`
- `q1_2025.pdf`
- `q1_2026.pdf`

Output as a 4-column table:
| File | Q1 revenue | YoY growth | Source quote + page |

Cite every cell with a direct quote and page number.
If you cannot find data for a file, write "not found in <filename>"
instead of inferring.

效果差异极大。点名文件 → 强制检索去拉每一份;表格结构 → 模型必须为每文件填一行。

Step 3:并集 / 排序 / 差异分别有 prompt 模板

并集(跨文件提及):

Across `a.pdf`, `b.pdf`, `c.pdf`, list EVERY mention of "customer
churn." For each mention give: source filename, page, exact quote.

排序(哪个最大):

Among `a.pdf`, `b.pdf`, `c.pdf`, which has the highest reported Q3
revenue? Show all three numbers + their source page, then state
the ranking.

差异(不一致点):

For `a.pdf` and `b.pdf`, list every fact about "product launch date"
in each. Highlight where they disagree.

Step 4:5+ 文件先逐个总结再比较

文件超过 4 个时不要一次比所有。两步走:

  1. 单独让它”总结每个文件 200 字”,输出 5 段独立总结
  2. 把 5 段总结直接贴回(不用文件了):“基于以下 5 段总结,对比 X”

模型在两段纯文本之间做综合远比跨文件检索准。

Step 5:文件名预先重命名

防止”文件名相似导致检索失效”:

差:report.pdf, report (1).pdf, report final.pdf
好:q1_2024_revenue.pdf, q2_2024_revenue.pdf, q3_2024_revenue.pdf

每个名字带语义关键词,检索能区分。Project / Custom GPT 里重命名后重传。

Step 6:跨大量小文件用 analysis tool(Python)强制读全部

如果是 20 个 CSV 要对比,让 Python 直接读。ChatGPT 内置的 Python 沙箱现在叫 analysis tool(就是以前的”Advanced Data Analysis” / “Code Interpreter”);在 prompt 里点名它,能让 ChatGPT 真的去跑代码而不是凭印象猜:

Use the analysis tool. Load all CSV files in the workspace into a
dict mapping filename to dataframe. Print the file list. Then compute:
- Per-file row count
- Per-file column union
- For column "revenue", aggregate sum + mean per file
Output as a Markdown table.

Python 会顺序读取每个文件——不走检索抽样,所以跨文件覆盖完整。但这只对 Python 能解析的表格 / 文本格式有效(CSV、XLSX、JSON、TXT);扫描成图片的 PDF 仍要走上面的检索路径。

怎么确认已经修好

  • 开新对话上传同样文件用 Step 2 的点名 prompt 重做,输出表里每文件都填了 = 真修好。
  • 让它把每个文件的 quote 给你,去原 PDF Ctrl+F 找——三个都找得到 + 页码对 = 真的全读了。
  • 让同事用相同 prompt 在他们账号跑一次,覆盖一致 = 流程稳定。

如果还是没修好

  • 把文件切到最小:每文件保留 1 页,只留对比维度那一项,看最小用例能不能跑通。
  • 换格式:PDF 转 Markdown、XLSX 转 CSV,排除大文件挤压小文件的 chunk 分配问题。
  • 在模型选择器里换模型:选 GPT-5.5 Thinking,别用 Instant。Thinking 会走跨文件综合需要的多步”检索 + 调和”路径(GPT-5.5 Thinking 上下文窗口 196K,Instant 只有 128K,能塞进更多 chunk)。Free 用户可能要等当天的 Thinking 额度。
  • 换方法:把文件转成 Custom GPT Knowledge(命名良好的 5-10 份)。整理好、命名清晰的 knowledge,检索质量比临时上传稳得多。

预防建议

  • 文件名永远带语义关键词,绝对不要 doc1.pdf / report.pdf 这种 generic 名。
  • 多文件提问永远点名所有文件 + 给输出表结构。
  • 跨 5+ 文件的对比走”先各自总结、后比较总结”的两步法,不要一次性问。
  • 大量数据文件用 Code Interpreter 强制顺序读,跨过检索抽样。
  • 同类型反复对比(财报 / 合同条款)做 Custom GPT,把对比维度写进 Instructions。

常见问题

为什么 ChatGPT 只读我上传的第一个(或最后一个)文件? 它读的不是”第一个”或”最后一个”——而是针对你这个具体问题、chunk 打分最高的那个文件。像”分析这些”这种泛泛的 prompt,会让某一个文件赢下相关度排序,其余的根本没进 context。点名每个文件、要求每个文件一行(Step 2),它们就都会被拉进来。

2026 年 6 月一次能附多少个文件? 网页端单条消息最多 20 个(2026 年 2 月从 10 个上调),每个文件 512 MB,每 3 小时滚动上限 80 次上传。每个 Project 的文件上限是另一回事:Free 5、Go / Plus / Edu 25、Pro / Business / Enterprise 40。要对比的文件超过单条上限,就分批,或先各自总结(Step 4)。

让它”仔细读完所有文件”有用吗? 没用,还可能帮倒忙。让它把整个文件从头读到尾,可能把 context 窗口塞满一个文件,把其他文件挤出去(原因 6)。应该用结构去逼它——一张点名文件的对比表,这样每个文件只需要几个被引用的 chunk。

对比文件应该用 Project、Custom GPT 还是普通对话? 一次性对比 2-4 个文件,普通对话里把所有文件都附上,检索最干净。需要反复对比的文件,做一个 Custom GPT:放 5-10 份命名良好的 Knowledge 文件,把对比维度写进 Instructions,最稳。别把 20+ 文件全堆进一个 Project——检索会稀释(原因 4)。

用了表格 prompt 它还是只挑一个文件,怎么办? 把选择器切到 GPT-5.5 Thinking(196K 上下文 + 多步推理,跨文件调和比 Instant 的 128K 强),把每个文件压到只剩对比维度那一项,或者表格类文件走 analysis tool 让 Python 把每个文件完整读一遍(Step 6)。

相关阅读

标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #多文件