Gemini 上下文比预期短:3 个原因 + 修复路径

说有 1M token 但发 100 页就报"超限"——计划档与模型差别。

Google 宣传 Gemini 2.5 Pro 有 2M tokens context window,但你在 gemini.google.com 上传一份 100 页的 PDF 就被”超限”——这不是虚假宣传,是消费端 Web UI 跟 API 的真实窗口差距巨大。Web 免费档实际可用窗口大约 32K-100K(按模型 + 计划档浮动),离 API 那个 2M 数字差 20-60 倍。

要拿到真正的长上下文能力,得搞清楚 Web vs API 的实际限制,再按场景选择正确路径。

常见原因

按出现频率:

1. 用了 Flash / Lite 模型,实际窗口被压缩(最常见)

每个模型的实际窗口:

模型API 上限gemini.google.com 实际
Gemini 2.5 Pro2M~100K(Advanced 用户)/ ~32K(免费)
Gemini 2.5 Flash1M~32K-64K
Gemini Lite32K~16K

Web UI 没有显式告诉你压缩了——只是给个”超限”提示。

如何判断:界面顶部模型选择器看当前模型。

2. 附件按”原文 bytes”计算,不是预览大小

你上传一份 100 页 PDF(页面里全是图),可能:

  • 显示大小:5 MB
  • 实际占用 context:PDF 解析后的文字 + 图像 OCR token 总数,可达 200K+ tokens

100 页 PDF 平均 = 30K-60K tokens(纯文字);混合图文 = 80K-200K tokens。

如何判断:上传后看 Gemini 是否报”内容过大”——是就属于这条。

3. 免费档比公开数字限得更严

免费用户的实际 context 窗口比 Advanced 用户小约 1/3 - 1/2,Google 不公开具体数字但实际体验如此。

如何判断

  • 你的账号在 one.google.com/about/ai-premium 显示 “Free” / 不是 “AI Premium” / “AI Pro”
  • 同一份文件,付费账号能上但你不能

4. 对话历史已经吃满了 context

Web 端把当前对话所有历史算进 context。如果你已经在这个对话里塞了几个 PDF,新内容空间被压缩。

如何判断:当前对话已经有大量轮次或上传过多个文件。

5. Workspace 受管账号有更严限制

公司 Workspace 默认 Gemini context 上限可能被 IT 设置得很低(数据外流防范)。

如何判断

  • 私人账号能上传,工作账号不能 = 这条
  • 联系 IT 确认 Admin Console → Gemini app 设置

6. PDF 含扫描页 / 大量图片

扫描 PDF 没有 OCR 文本,Gemini 把每一页当图像处理,1 页 ≈ 1-2K tokens(图像编码),100 页就是 100-200K。

最短修复路径

按”能拿到多大 context”从低成本到高:

Step 1:切到 Gemini 2.5 Pro 模型

gemini.google.com → 顶部模型选择器 → "Gemini 2.5 Pro"

Pro 比 Flash / Lite 实际窗口大 2-3 倍。只有 Pro 在 Web 上接近”长上下文”体验。

Step 2:升级 Google AI Premium

访问 one.google.com/about/ai-premium
订阅 Google AI Premium(含 Gemini Advanced)

升级后 Web 端 Pro 模型实际可用窗口从 32K 扩到 100K+,价格 $19.99/月。

Step 3:拆分大文档

100 页 PDF 拆成 50 页一份:

# 用 pdftk
pdftk input.pdf cat 1-50 output batch1.pdf
pdftk input.pdf cat 51-100 output batch2.pdf

# 或用 macOS Preview / Adobe Acrobat / 在线工具如 ilovepdf.com

工作流:

  1. 上传 batch1.pdf → “总结这部分,输出 1K 字 brief”
  2. 复制 brief
  3. 新对话上传 batch2.pdf + brief → 让 Gemini 合并
  4. 重复直到所有 batch 处理完

Step 4:扫描 PDF 先 OCR 转文本

如果是扫描件:

# 用 ocrmypdf(开源)
ocrmypdf input.pdf output_ocr.pdf

# 或用 Adobe Acrobat → Tools → Scan & OCR

OCR 后的 PDF 文字层会被识别为纯文本,token 数从 200K 降到 30-60K。

Step 5:把 PDF 转 markdown 进一步压缩

# pdftotext
pdftotext input.pdf output.txt

# 然后给 Gemini 看 .txt 文件

纯文本 token 数最低,且 Gemini 处理快。1MB 纯文本 ≈ 250K tokens,对应 Pro 的实际窗口刚好够。

Step 6:切到 Gemini API(真正的长上下文)

如果你重度依赖长上下文:

from google import genai

client = genai.Client(api_key="YOUR_KEY")

# Files API 上传大文件
file = client.files.upload(path="huge_doc.pdf")

response = client.models.generate_content(
    model="gemini-2.5-pro",
    contents=[file, "总结要点"]
)

API 实际享受文档的 2M tokens 窗口,价格按 token 计费但便宜(输入 $1.25/M tokens)。

或用 Google AI Studio(API 的免费 Web UI):

  • 上传 100 页 PDF 没问题
  • 窗口实测达 1.5M tokens
  • 完全免费(带 rate limit)

Step 7:新开对话减少 history

如果当前对话已经塞了很多东西:

  1. 新对话
  2. 把之前的关键内容总结成 < 5K tokens 的 brief
  3. 在新对话里复用 brief + 新文件

Step 8:Workspace 联系 IT 提高限额

工作账号被限:让 IT 在 Admin Console → Gemini app for Workspace → 检查 “Maximum file size” 和”Maximum context tokens”设置。

预防建议

  • 长上下文工作改用 aistudio.google.com(API 的免费 UI),窗口比 gemini.google.com 大 10 倍
  • 扫描 PDF 先 OCR,token 数能省 70%
  • 纯文本任务把文件转 .txt 而非 PDF,进一步压缩 token
  • 升 Google AI Premium 拿 Web Pro 100K 窗口
  • 重度长文档项目(论文 / 财报 / 代码库)直接走 Gemini API,2M 窗口

相关阅读

标签: #Gemini #排查