花叔专栏 / AI工具实测
DeepSeek开源新模型,提出上下文光学压缩:LLM的新记忆方式
DeepSeek昨晚开源了一个OCR模型。
几小时后,Andrej Karpathy在X上发了一条长推,说这篇论文"很有意思",然后开始讨论一个激进的想法:
能不能让所有LLM的输入都变成images,包括纯文本?
马斯克也跟了一条:
长期来看,AI模型99%以上的输入和输出都会是photons。我读完论文,发现他们讨论的是同一件事。
DeepSeek-OCR表面上是个OCR模型,实际上在探索一个更大的问题:
1000个字的文档,最少需要多少个vision tokens才能让LLM理解?
论文给的答案是:100个。
压缩比10倍,准确率97%。
这不只是OCR的问题,而是在挑战一个基本假设:一张图真的值一千个字吗?
今天就跟你聊聊这个。
一、论文在探索什么?
DeepSeek-OCR的论文一开始就问了一个很关键的问题:
"For a document containing 1000 words, how many vision tokens are at least needed for decoding?"
1000个字的文档,最少需要多少vision tokens才能解码?
这个问题看似简单,但它在挑战一个基本假设:一张图真的值一千个字吗?
传统想法:
- 1000个字 = 1000个text tokens
- 一张包含这1000个字的图片,也需要差不多1000个vision tokens
DeepSeek的实验结果:
- 1000个字 ≈ 100个vision tokens
- 压缩比10倍,准确率97%
这就有意思了。
如果vision tokens真的这么高效,那为什么我们还要用text tokens?
能不能把所有文本都渲染成图片,然后用vision tokens输入LLM?
这就是Andrej Karpathy看完论文后,立刻想到的问题。
二、量化的答案:压缩边界在哪?
论文做了一个很系统的实验,用Fox benchmark测试不同压缩比下的准确率。
结果很清楚:
| 文档字数 | Vision Tokens | 压缩比 | 准确率 |
|---|---|---|---|
| 600-700字 | 100 tokens | 6.7× | 98.5% |
| 700-800字 | 100 tokens | 7.5× | 97.3% |
| 900-1000字 | 100 tokens | 9.7× | 96.8% |
| 1000-1100字 | 100 tokens | 10.6× | 91.5% |
| 1200-1300字 | 100 tokens | 12.6× | 87.1% |
看到趋势了吗?
10倍压缩以内,准确率97%+,几乎无损。
超过10倍,准确率开始下降,但12倍压缩还有87%。
如果用64个tokens(Tiny模式):
- 1000字文档,压缩比15倍,准确率85%
- 1200字文档,压缩比20倍,准确率59%
核心发现:压缩比和准确率的关系不是线性的,而是有一个"甜蜜点"——10倍左右。
论文特别提到:实际准确率比测试结果还要高,因为测试时格式对不上(formatting differences)。
这是首次有人系统地量化vision-text compression的边界。
三、怎么做到的?DeepEncoder架构
能做到10倍压缩,靠的是一个叫DeepEncoder的新架构。
现有的VLM encoder都有问题:
- Vary(双塔):需要两次预处理,部署复杂
- InternVL2(tile-based):图片会被切成很多小块,vision tokens太多(>15个/页)
- Qwen2-VL(adaptive):activation memory太大,大图会爆显存
DeepEncoder的设计很巧妙:
输入1024×1024图片
↓
SAM (80M, window attention) → 4096个patch tokens
↓
16× Conv Compressor → 压缩到256个tokens
↓
CLIP (300M, global attention) → 输出256个vision tokens
核心技巧:串联window attention和global attention,中间用16×压缩桥接。
为什么这样设计?
- 前半部分(SAM):用window attention处理海量tokens(4096个),但因为是局部attention,activation memory可控
- 中间压缩:16倍降采样,从4096→256
- 后半部分(CLIP):用global attention处理少量tokens(256个),虽然密集但tokens少所以可控
结果:
- ✅ 支持高分辨率(1024×1024)
- ✅ Vision tokens少(256个)
- ✅ Activation memory低(不会爆显存)
而且通过调整输入分辨率,可以得到不同数量的vision tokens:
- 512×512 → 64 tokens
- 640×640 → 100 tokens
- 1024×1024 → 256 tokens
- 1280×1280 → 400 tokens
这让他们能系统地测试:用N个vision tokens,能压缩多少text tokens?
四、最激进的idea:模拟人类遗忘
论文里有一张图(Figure 13),我觉得是整篇论文最有想象力的部分。
他们画了一个类比:
人类记忆的时间衰退:
- 刚发生 → Crystal Clear(水晶般清晰)
- 1小时 → Very Clear
- 1天 → Clear
- 1周 → Blurry(模糊)
- 1月 → Very Blurry
- 1年 → Almost Gone(几乎消失)
视觉的空间衰退:
- 10cm → Crystal Clear
- 50cm → Very Clear
- 1m → Clear
- 3m → Blurry
- 10m → Very Blurry
- 20m → Almost Gone
DeepSeek-OCR的分辨率模式:
- Text token → Crystal Clear
- Gundam → Very Clear
- Large → Clear
- Base → Blurry
- Small → Very Blurry
- Tiny → Almost Gone
看到了吗?三条曲线的衰退规律一模一样。
论文提出的想法:
能不能用降低分辨率的方式,模拟人类的记忆遗忘?
具体怎么做?
假设你有一个AI agent,有100轮对话历史:
- 最近5轮:保持text tokens(高清)
- 6-20轮:渲染成Large模式图片(400 tokens/轮)
- 21-50轮:渲染成Base模式(256 tokens/轮)
- 51-100轮:渲染成Small模式(100 tokens/轮)
- 100轮以上:渲染成Tiny模式(64 tokens/轮)
效果:
- Context window从100,000 tokens压缩到10,000 tokens(10倍)
- 旧对话越来越"模糊",但关键信息还在
- 重要的旧对话可以"恢复"到高分辨率
这就是论文说的"memory forgetting mechanisms in LLMs"。
用物理的方式(降低分辨率)模拟生物的记忆(遗忘曲线)。
五、这给我们什么启发?
理解了技术思路,再看应用场景,你会发现这不只是"功能列表"。
它展示的是一个新思维:用压缩比和准确率的trade-off,匹配不同场景。
1. 高精度场景:Large/Base模式
学术论文、合同文档、技术手册——这些场景容错率低,必须保证准确。
用Large模式(400 tokens)或Base模式(256 tokens),压缩比不高(5-7倍),但准确率接近100%。
这时候,vision tokens不是为了省token,而是为了保留文档的结构化信息(标题、列表、表格、图表)。
传统OCR只能给你纯文本,但DeepSeek-OCR能输出Markdown,保留语义结构。
2. 效率优先场景:Small/Tiny模式
快递单扫描、票据识别、移动端OCR——这些场景对速度和成本敏感。
用Small模式(100 tokens)甚至Tiny模式(64 tokens),压缩比10-20倍,准确率85-95%。
虽然不是100%准确,但对于"扫一眼快递单看个大概"的场景,完全够用。
而且,64个vision tokens意味着显存占用极低,可以跑在移动设备上。
3. 超长文档场景:Gundam模式
这个名字很中二,但思路很务实。
如果你有一个100页的PDF,传统做法是分页处理,然后拼接结果。但这样会丢失跨页的上下文信息。
Gundam模式是动态分辨率:n×640×640 + 1×1024×1024。
根据文档长度,自动调整vision tokens数量,既能处理超长文档,又不会爆显存。
4. 压缩思维的本质
看完这些场景,你会发现:
DeepSeek-OCR不是在做"更好的OCR",而是在探索**"用多少视觉信息,能让LLM理解到什么程度"**。
这就像压缩算法——不是无损压缩,而是有损压缩。
关键是找到那个"甜蜜点":压缩到什么程度,信息损失还在可接受范围内?
对于文档OCR,10倍压缩是个甜蜜点(准确率97%)。
对于不同场景,甜蜜点不一样。所以DeepSeek-OCR提供了5种模式,让你自己选。
六、DeepSeek真是开源之神
DeepSeek-OCR和他们之前的所有项目一样,用的是MIT协议,完全开源。
开源,意味着这个技术思路可以被验证、改进、集成到更大的系统里。
如果你认同Andrej Karpathy说的那个方向——未来LLM的输入应该都是images——那DeepSeek-OCR就是第一个可以拿来用的工具。
你可以:
- 用它做实验,验证vision tokens是不是真的比text tokens更高效
- 基于它改进encoder,探索更好的压缩算法
- 把它集成到自己的多模态系统里,测试真实场景的效果
这比闭源的API强太多了。
API只能告诉你"输入图片,输出文字",但底层怎么做的、为什么这么做、能不能改进——你都不知道。
开源才能推动这个领域往前走。
而且,DeepSeek一直在这么做。去年的DeepSeek-Coder、今年的DeepSeek-V3,都是完全开源的。
这次的DeepSeek-OCR也一样。
这对整个AI社区来说,是真正的贡献。
七、回到最初的问题
文章开头,我们提到Andrej Karpathy的那个激进想法:
"能不能让所有LLM的输入都变成images?"
和马斯克的观点:
"长期来看,AI模型99%以上的输入和输出都会是photons。"
现在,读完DeepSeek-OCR的技术细节,你应该明白了:
这不是科幻,而是正在发生的技术路径。
DeepSeek-OCR证明了:
- 1000个字的文档,可以压缩到100个vision tokens(10倍压缩,97%准确率)
- 通过降低分辨率,可以模拟人类的记忆遗忘
- Vision tokens比text tokens更适合做上下文压缩
如果这个方向成立,那未来的LLM可能长这样:
- 输入层:全是vision encoder,文本也渲染成图片
- 压缩层:根据重要性动态调整分辨率
- 理解层:LLM在"模糊"和"清晰"之间做trade-off
一张图到底值多少个字?
DeepSeek-OCR的答案是:取决于你需要什么精度。
10倍压缩够了,就用100个tokens。想要更清晰,就用400个tokens。想要省资源,64个tokens也能用。
这就是"上下文光学压缩"的本质。
DeepSeek-OCR刚发布,还有很多问题需要验证:中文支持、复杂布局、长文档处理...
但我觉得,它的思路值得关注。
不是做"更好的OCR",而是探索"LLM需要什么样的视觉信息"。
如果你对这个方向感兴趣,可以去GitHub看看代码:
https://github.com/deepseek-ai/DeepSeek-OCR
MIT协议,开源免费,拿去用就是了。
实际效果展示
这是DeepSeek-OCR官方提供的几个实际案例:
从这些示例可以看出,DeepSeek-OCR能处理多种类型的文档:复杂布局、图文混排、表格、手写文字等。
参考资料:
- DeepSeek-OCR GitHub: https://github.com/deepseek-ai/DeepSeek-OCR
- Hacker News讨论: https://news.ycombinator.com/item?id=45640594
- GOT-OCR2.0论文: https://arxiv.org/abs/2409.01704
- Vary项目: https://varybase.github.io/
这篇读完了,下次实践再见。
花叔 Alchain
AI Native Coder · 独立开发者 · 作者
《一本书玩转DeepSeek》作者,小猫补光灯、女娲Skill生态创作者。不会写代码,用AI做产品,分享独立开发、AI工具与内容创作的实践。
本文收录自微信公众号。在原平台阅读 ↗