ChatGPT 的多文件处理走的是”按问题逐次检索”——不是”把所有文件读一遍再综合”。一次提问,检索给每个 chunk 打分,挑前 k 个塞进 context。如果三个文件内容类似,最相关的那个会把另两个”挤掉”;如果你没显式说”对比”,模型默认只用挑出来那一个作答。跨文件综合不是模型不愿意,是它根本没拿到三个文件的内容。修法是用点名 + 结构化对比 prompt 强制三个文件都进检索。
常见原因
按命中率从高到低:
1. 检索给一个文件打高分,其他都丢了
最常见。三个 Q1/Q2/Q3 财报,你问”营收趋势”——检索给最相关的那一份(比如最近的 Q3)打高分,另两个 chunk 都没进 context。模型只看了 Q3 就回答”营收增长”。
如何判断:让它”列出本次回答引用的所有文件名”。只有一个 = 检索只命中了一份。
2. Prompt 没传达”跨文件推理”信号
“分析这几份报告” → 模型当作”分析(这堆)报告”= 一份代表。“对比这三份报告 X 项” → 触发跨文件检索路径。
如何判断:你的 prompt 里没有”对比 / compare / across / each of”这类跨引用词 = 没传信号。
3. 文件名相似 / 内容高度重叠
report.pdf、report-v2.pdf、report-final.pdf——检索按相似度,三个争抢同一个查询,赢家通吃。
如何判断:让它单独问每个文件”这个文件主要讲什么”,输出几乎一样 = 内容重叠。
4. Project 文件太多稀释检索
Project 里挂了 15+ 文件,每次只取 top-3 chunk——你想要的那三份未必都在 top-3。
如何判断:在 Project 里跑同 prompt vs 普通 chat 里只传那三份文件,差异明显 = 稀释。
5. 文件大小差异让小文件被淹没
500 页 PDF + 5 页 PDF 一起检索,大文件 chunk 多 / 平均分高,小文件 chunk 经常一个都进不去。
如何判断:单独问小文件能正常引用,加上大文件后小文件就消失 = 大小不平衡。
6. 上下文窗口耗在一份文件上
如果你显式说”先读 a.pdf 全文” 模型可能把整个 a.pdf 灌进 context,window 满了,b.pdf 和 c.pdf 自然进不去。
如何判断:第一份文件被完整引用、其他完全没出现 = 窗口被占满。
动手前先确认
- 确认问题是在 Projects、Custom GPT 还是普通对话里出现;三者多文件处理略有差异。
- 复现前把当前对话复制一份,避免清掉历史影响下次诊断。
- 确认订阅:Free / Plus / Team / Enterprise 在上下文窗口和单次检索 chunk 数量上有差异。
需要收集的信息
- 文件数量、每个的类型 + 大小 + 页数 / 行数;文件名是否有辨识度。
- 上传方式:拖到对话框、Project Files、Custom GPT Knowledge。
- 完整 prompt 文案 + 回答截图;具体哪些文件被引用、哪些被忽略。
- 当前模型 + 是否在 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 个时不要一次比所有。两步走:
- 单独让它”总结每个文件 200 字”,输出 5 段独立总结
- 把 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:跨大量小文件用 Code Interpreter 强制读全部
如果是 20 个 CSV 要对比,让 Python 读:
Use the analysis tool. Load all CSV files in the workspace into a
dict {filename: 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 走顺序读取,不走检索抽样,跨文件覆盖完整。
怎么确认已经修好
- 开新对话上传同样文件用 Step 2 的点名 prompt 重做,输出表里每文件都填了 = 真修好。
- 让它把每个文件的 quote 给你,去原 PDF Ctrl+F 找——三个都找得到 + 页码对 = 真的全读了。
- 让同事用相同 prompt 在他们账号跑一次,覆盖一致 = 流程稳定。
如果还是没修好
- 把文件切到最小:每文件保留 1 页,只留对比维度那一项,看小用例能不能跑通。
- 换格式:PDF → Markdown,xlsx → csv,排除大文件挤压小文件的 chunk 分配问题。
- 换模型:4o → o3 / GPT-5;reasoning 模型对跨文件综合更稳。
- 换方法:把文件转成 Custom GPT Knowledge(命名良好的 5-10 份),检索质量比临时上传高。
预防建议
- 文件名永远带语义关键词,绝对不要
doc1.pdf/report.pdf这种 generic 名。 - 多文件提问永远点名所有文件 + 给输出表结构。
- 跨 5+ 文件的对比走”先各自总结、后比较总结”的两步法,不要一次性问。
- 大量数据文件用 Code Interpreter 强制顺序读,跨过检索抽样。
- 同类型反复对比(财报 / 合同条款)做 Custom GPT,把对比维度烤进 instructions。
相关阅读
- ChatGPT Project 文件没被引用
- ChatGPT 大文档分析感觉很浅
- ChatGPT 把你的 CSV / Excel 数据看错了
- ChatGPT 项目功能
- ChatGPT 文件分析
- ChatGPT Projects 进阶工作流
标签: #ChatGPT #ChatGPT 文件 #排查 #排查 #多文件