ARTICLE · 1059451
20 万字文档丢给模型,5 根针全捞出来了,它却在一道汇总题上交了白卷

今天云栖大会,最响的一句话是阿里要把模型往 5-10T 参数上冲(引量子位 9 月 22 日报道)。会场里聊的是参数、芯片、云。我关心的更朴素,上下文写了那么长,是真能记住,还是只写在参数表里。
我把自己攒的中文文档拼成一份 20 万字的材料,在 5 个不同深度埋了 5 句话,每句话都是一个冷门事实,不带任何上下文提示。整份丢进去,问它。
5 根针,一根不落,全捞出来了。包括埋在 95% 位置、也就是第 19 万字附近的那一根。
下一题,它回了我一个空字符串。
我是怎么跑的
被测的两个模型是 DeepSeek 的 deepseek-flash和 deepseek-v4-pro,官方标注上下文都是 1M,走标准 chat 接口,temperature 设 0,全部非流式。
材料是我自己这一个多月攒下的中文文档,公众号文章、周档、创作规范、历史抓取素材,拼起来 156 万字,按长度截取。长度取了四档,1 万字、4 万字、10 万字、20 万字。
每份材料里埋同一组 5 句话,位置固定在文档的 5%、27%、52%、76%、95% 五处,插成独立段落。比如「白桦林-07 号样本的校准温度是 42.5 摄氏度」「批次 QX-3390 在 7 月 18 日完成复检,复检结论是不通过」。都是些没人猜得到的硬事实,只能靠读文档。
题目分三类。
- 单针题
5 道,每道问一根针,考定位。 - 聚合题
1 道,让模型把全文里提到的这 5 类事实全列出来,考通读。 - 负向题
1 道,问一个文档里根本没有的东西(东海大桥),考它会不会编。
两个模型 × 四个长度 × 七道题,一共 56 次调用,全部真跑,原始返回存在本地。
20 万字里 5 根针,真全中了
分母是拿到完整答案的样本数,被输出预算截断的那些单独算,下面讲。
也就是说,36 条拿到完整答案的单针样本,36 条全对。20 万字约合 10.2 万 token,塞进 1M 的窗口里才占一成,位置埋到 95% 深度也照样能定位。它还会主动告诉我在哪篇文档里找到的,36 条里有 17 条附了出处。
这一条和网上流传的长文档中段失忆不太一样。区别可能在量级。文献里说的衰减大多出现在窗口快满的时候,而我这份 20 万字只用了十分之一。
翻车的是汇总题,交回来一个空字符串
聚合题我原以为会看到它漏掉一两项,结果是 8 次调用,8 次返回空字符串。两个模型,四个长度,一次都没成。
我去看原始返回,找到了原因。这 8 次调用的 output token 全部精确等于 300,也就是我设的 max_tokens 上限。它是把思考过程的 token 吃完了,正文一个字都没来得及写,交回来一个空串。
我第一反应是它失忆了,翻原始返回才发现是自己挖的坑,这事怪不到模型头上。
单针题里也有 4 次是同样情况。把 12 次空答案按题目拆开看,聚合题占 8 次,单针题占 4 次。规律很清楚,题目越复杂,越容易空。
这个坑的阴险之处在于,接口不报错。HTTP 200,token 照常计费,返回体里 content 是空字符串。如果你的程序只看状态码,大概率会把这条记成模型答不上来,然后在业务层加一堆没用的重试和兜底。
顺带说一句,单针题里那条唯一判为没答对的样本,答案其实是「批次 QX-3390 的复检日期是 7 月 18 日,复检结论是」,句子被砍在半截。也是同一个原因。
文档里没有的东西,它没编
负向题问稿子里有没有东海大桥。8 次调用,8 次都明确回答文档中未提及,没有一次顺着往下编。
有几次还多解释了一句,说通读了全部文档,出现的地名是哪些。这部分我给满分。长文场景下最怕的是找不到还硬编一个看起来很像的答案,这轮实测没出现。
从 1 万字到 20 万字,钱是线性涨的
按官网闲时价算(写稿时查的,输入缓存未命中 $0.15 / $0.66 每百万 token,输出 $0.6 / $1.98),七道题跑一轮的钱如下。
折到单次提问,20 万字那份文档,flash 一次约 1.5 美分,pro 一次约 6.8 美分。看着不贵,但这是问一句话的钱。同一份材料你连问十轮,pro 就是快七毛美金,而且每问一次都要把这 10 万 token 重新传一遍。
耗时这边,flash 从 1.2 秒到 2.3 秒,翻了一倍;pro 从 3.3 秒涨到 11.1 秒,涨了三倍多。20 万字这一档,pro 的耗时是 flash 的 4.8 倍。贵档在长文上买到的主要是推理深度,不是速度。
还有一个不在表格里、但更直观的成本。这一轮跑完,我的 API 账户被拒绝服务了,接口返回 402,提示余额不足,而余额页上还显示着 5.32 元。两轮实测累计消耗输入 270.9 万 token、输出 1.1 万 token。余额显示和实际扣费口径为什么不一致,我没查明,这点标未核实。有一点能确定,做长上下文实测,是个真的会烧钱的活。
一句判断
20 万字以内、问题是要找某一句话,整份丢进去就行,别费劲切分。这个长度下模型的定位能力没掉,还省掉了切片、向量库那一整套工程。
但你要它把全文里所有相关的事汇总起来,就得留个心眼。这轮实测里这类问题全空,原因在输出预算被思考链吃光,不在记不住。说人话就是两条,让模型多写点,别让它憋着;程序里见到空答案,按报错处理,别当成它不会。
成本上,同一份长材料如果每天要问几十次,就没必要每次重传。这时候切片加检索(本号 9 月 8 日、9 月 18 日测过的 RAG 和重排)反而更划算,检索一次只把相关几段送进去,token 是数量级的差距。
云栖那边说机器思考总量要到人类的 1000 倍。我这边的感受是,模型能读的东西确实变多了,但读到了和能给你数出来,中间还隔着一段路。
待补的几件事
- 输出预算对照测
,脚本里这组实验已经写好( 实测/2026-09-22_长上下文_实测脚本.py的侧测段),跑到一半余额耗尽、接口 402。补法是账户充值后原样重跑,产出results_输出预算对比.json。 - 窗口接近上限的表现
,1M 窗口只用到十分之一,40 万字以上的衰减曲线没测。 - 跨厂商对照
,只测了 DeepSeek 两个档位,Claude、GPT 同题表现未测。
关于诚实边界
云栖大会那句 5-10T 参数、真武 V900 芯片,出自量子位和 AIBase 9 月 22 日的报道,我标了来源站,本人没到现场、没拿到官方材料。文中所有关于两个模型的表现、耗时、token 与费用,都是本人本机真调 API 跑出来的。输出预算那组对照实验没跑完,我按 402 报错原样写在上面,没拿推测顶替。余额显示和实际扣费口径为什么不一致,我没查明,也标了未核实。跑不了的,我一个都没编。
本文所有数字来自本机真调 API 所得,原始返回留存在 实测/2026-09-22_长上下文/。跑不了的实验已在上面标明。
① 你平时给模型丢过多长的文档,有没有遇到答非所问或者干脆不回的情况?
② 想看我拿同一份 20 万字文档去对 Claude、GPT 吗?催一下,我去找能用的额度。