你传进去一份 60 页的合同,问“违约金怎么约定的”,它答得很具体,连原句都抄了出来。你接着问“附件三里那个付款周期是多久”,它回:“文件中未提及。”
你翻到附件三,白纸黑字写着 90 天。
这时通常会得出两个结论:它没读,或者它在撒谎。两个都不太准。更接近实情的是:它读到的,很可能不是你以为它读到的那份东西。
它手里没有“文件”,只有这一次对话里的文字
模型只会做一件事:看一段文字,接着往下写。它没有“打开文件”这个动作,也没有“翻到第 41 页”这个动作。上传和解析都是模型外面那层产品替它做的——这也是同一款模型换到别的产品就像换了个人 它其实不会上网 的原因之一。
所以“传一个文件”实际发生的事比你以为的多几步:
关键在于最后两步。上下文 就是模型这一次能读到的全部文字:你这次的问题、文件内容、它前几轮说过的话,全算在里面 同一句问题,为什么答案时好时坏。文件不是存在某个书架上等它去翻,而是被摆进这摞纸里。它答得出来,是因为那几行字这次真的在纸上;答不出来,往往是那几行字这次没被摆上来。
这摞纸有多厚,是有限的
模型数长度用的是 token,可以粗略理解成“词片”,英文大约 4 个字符算 1 个,中文大致一个汉字算一到两个(各家算法不同,只作估算)。上下文窗口 就是一次能装多少 token 的上限,装满了就塞不进去。
这个上限不是固定数字,同一家公司不同档位也能差好几倍:Anthropic 的开发者文档里,较新的 Claude 模型是 100 万 token,较早的只有 20 万;它还规定一次请求最多带 600 张图或 PDF 页,20 万 token 的模型只给 100 页4。
所以要建立的第一个直觉是:“传进去了”不等于“整份都在它眼前”。 六十页的 PDF 多数产品装得下,几百页的扫描件、一整个文件夹的报表就不一定了。装不下,就进入下一步。
书太厚的时候,是别人替你挑了几页
装不下时,产品一般做两件事,业内叫 切片 和 检索:先把文件切成一段一段存起来;你提问时,拿你的问题去和这些片段比对,挑出“最像”的若干段,拼进这一轮的上下文。微软给开发者的文档就是这样描述这套流程的3。
这里有个决定成败的细节:挑片段的标准是“和你这句话像不像”,不是“这段重不重要”。 上面那个例子里,附件三写的是“结算周期为 90 天”,你问的是“付款周期”。在人看来是一回事,在按字面相似度排序的检索里未必靠得近。那一段可能压根没被挑中。于是模型的处境是:手里只有几页纸,而答案不在其中。它不是不知道,是没看见。
还有一处必须说清的不确定:各家产品怎么切、挑几段、规则会不会变,通常不公开,界面上也看不到“这次递了哪几段”。所以对一份长文件,“它读过全文”是不能默认的假设。
就算挑对了,也可能被跳过
假设含答案的那段被挑中了,问题就完了吗?没有。
2023 年的一项研究(后发表于 TACL)给模型 20 篇文档,其中一篇含答案,然后把这篇文章在序列里的位置前后挪动。结果是明显的 U 型曲线:答案排在第 1 位时准确率约 76%,挪到中间降到约 54%,排到最后回升到约 63%12。更值得注意的是最低点——把答案埋在中间时,准确率甚至低于完全不给任何文档的 56.1%。也就是说,塞给它一堆材料,有时反而帮了倒忙。
同一项研究还发现:上下文窗口更长的版本,在材料都装得下时,位置效应几乎一样,并没有更会“用”上下文12。
三个可以直接用的推论
“文件里没有提到”不能当结论。 它没看到,和文件里没有,说出来是同一句话。缺的是材料不是判断,它自己区分不了。遇到这种回答,下一步是换问法或把范围指死,不是跟它争论。
换个问法就是换一批纸。 同一份文件问三遍得到三个答案不奇怪,每次挑中的片段可能不同。哪个对,只能回原文核对——这也是上一篇那条顺序的直接应用:处理你给的材料属于“对错在原文里”那一类,抽查成本很低。
对话越长,纸越挤。 聊了半小时再传文件,前面内容占掉大量位置,早期对话可能被截断或摘要掉。它“忘了刚才说的”,是结构使然,不是态度敷衍。
怎么问才不漏
- 用文件里的词问。 想知道付款周期,就把“结算”“账期”一起用上。相似度那一步靠字面起作用,你的转述越接近原文越容易被挑中。
- 把范围指死。“在第三章第二节里”“在附录二的表格里”比“在文件里”有效得多,它省掉了替你猜位置这一步。
- 先要原文,再要结论。 让它把依据的原句抄出来,附上章节或页码。抄不出来,就只有两种可能:没读到,或者记错了。这比通读它的答案省事得多。
- 长文件分段处理。 一次一章,先逐节摘出原文要点,再基于摘要提问。每轮纸薄一点,比一次塞满可靠。
- 需要通读全篇的任务,别指望一次问答。“找出所有对我方不利的条款”要的是全文覆盖,而这正是这套流程最不擅长的。改成给它一份清单逐节跑,或自己先按关键词搜出几处,再局部提问。
这个比喻在哪里会推过头
把文件想成“递过去的几页纸”,容易让人以为它永远只看得到片段。不对:装得下的时候,它确实整份读了进去,漏掉是因为注意力分配,不是没给;装不下时才是真只给了片段。
另外要把两件事分开:没读到 和 读到了却答错。前者换问法、指范围、换切分能救;后者是理解偏了或写歪了,只能靠追问和拿原文核对。同样一句错答案,原因不同,处理办法也不同。