AI Pulse

ChatGPT不读你的长PDF,只搜索,且从不告诉你

核心警告

PSA(公共公告,Public Service Announcement):超过一定长度后,ChatGPT 不会读取你的 PDF,而是搜索它——并且从不告诉你实际发生的是哪一种。

上传短文件时,ChatGPT 会完整读取全部内容。上传长文件——合同、论文、200 页的报告——大部分内容会进入搜索索引(search index)而不是被读取。之后,每个回答都基于与你问题中词语相匹配的文本块(chunks)来构建。

界面上没有任何提示告诉你实际发生的是哪种情况。无论哪一种,回答读起来都一样自信。

我的发现经过

我是在要求它总结一份很长协议时意识到这一点的。总结看起来干净利落,却漏掉了我真正需要的那一条款——它位于文件末尾——因为“总结一下”这个指令里没有任何线索把搜索引向那里。当我按条款名称问到那一条时,它立刻找到了。

有效做法

1. 按名称或页码询问具体章节,而不是问整个文件。“第9条关于终止合同说了什么”会把正确的文本块拉出来;“总结一下”只会拉取它碰巧排在前面的内容。

2. 要真正总结长文件,逐节进行。“总结第1到20页”,然后继续下一段。消息会更多,但每个部分确实都会被读到。

3. 追问它没看到什么:“回答这个问题时,你没有用到这个文件的哪些部分?”它通常会诚实地告诉你。

4. 需要完整读取时,上传前先拆分长文件。几个较短的文件被完整读取的程度,远远超过一个长文件。

一句话总结

短文件是“读”的,长文件是“搜”的。提出搜索能回答的问题。

披露

我开发了 AI Toolbox——一个为 ChatGPT 添加搜索、文件夹和导出功能的 Chrome 扩展。它的搜索作用于你的聊天记录,而非上传的文件,所以上述情况完全是 ChatGPT 的原生行为。

讨论精选

你曾经信任 ChatGPT 总结过的最长文件是什么?帖子下共有 26 条讨论,以下是高票评论:

+35 u/traumfisch:PDF 从一开始就不是给模型的好格式。尽量用 .md 或纯文本文档。

+8 u/Only_Voice569:上下文限制(context limit)决定了 LLM(大语言模型,Large Language Model)在每次用户请求中能容纳和输出的内容有限,除非你使用 Codex,并让一个更轻量的模型持续读取来查找信息,或者记录每一页有什么内容以便更容易定位。

+7 u/Ancient_Fault_2457:这不完全对。把设置调到最高档,告诉它逐字读取 PDF 的每一个词。如果它必须分段(它肯定会),就重申它需要读取每一段的每一个词,并告诉它之后你会和它一起逐段手动检查。用类似这样的提示词,我成功让它读取了我正在写的一本两万字书。我在另一本随机书籍上也试了,结果它能足够准确地从书中任意位置提取出正确的页码或引用。关键在于你运行的模型以及你如何设计提示词。

+5 u/Iwillnotstopthinking:有意思的是,早期模型反而能完整读取 PDF——或者说谎撒得更好。

+3 u/nywse:问一下:让它把 .pdf 翻译成另一种语言,会迫使它读取吗?

+3 u/cariboubuns:我一直在用 Astra 的超高(extra high)设置来审查工程师为旧楼改造项目提供的 200 页 PDF。没有特定提示词,它不仅能总结,还能找出分析中的不一致之处,给出页码,并且准确引用原文(到目前为止没有失误)。

+2 u/AYA_7887:让它产出产物(artifact),而不是声称(claim)。“引用确切的终止条款,并给出页码”这样的要求,不能像总结那样掩盖检索遗漏。所以在长文件上,我首先要求逐字引用,其次才相信总结。合同也是我唯一不能像运行代码那样自己核对答案的情况,所以我会用第二个 AI 问同样的问题,然后对照两个回答。一个问题一个标签页地粘贴很快就烦了,这就是我建 WhileAI 的原因——它会把提示词输入到我登录的其他 AI 中,并告诉我每个 AI 何时作答。这是我自建的,请自行斟酌。

+2 u/Ok_Improvement6001:同样的现象也出现在角色扮演应用中。一旦聊天历史变长,它就记不住完整的角色设定,除非你持续给出具体的引用提示。

+2 u/mamercus-sargeras:没错,它就是这么干的;但人们愿意相信它在解析和理解整个文件。

+2 u/sqewd:告诉它“他妈的给我去读”(just fucking do it)似乎对我有效……

+1 u/RecordingOk2117:不是所有 PDF 都能塞进百万级 token(M token)的上下文里……我吃亏后才学到:如果你真的想要彻底处理,必须分段分批。或者,如果你只需要特定信息,可以先用一个路由(router,如 Jev)只把相关页面引导给 LLM。

+1 u/VSParagon:这是可辩护且必要的方法,但最大的问题正如你所说——模型对搜索方法不够透明。它还倾向于使用窄搜索(narrow search),一旦找到某个结果就认为搜索完成了。这导致过度自信的问题:它往往不会问“还有没有其他搜索词能调出更多结果?”过去,我在提示词中加入指令,要求它批判性地评估自己的搜索方法、即使早期搜索看似成功也要运行替代搜索,效果显著改善。另一个问题是 OCR(光学字符识别,Optical Character Recognition):当文档或页面足够多时,它就假设 OCR 是完整准确的——或者它自己用 Tesseract 跑免费的 OCR,结果往往很差。

阅读原文
📚 相关主题 ChatGPT实用技巧

订阅 AI Pulse

每天 08:00 · 12:30 · 18:30 · 23:50 更新