DeepSeek开源新模型,提出上下文光学压缩:LLM的新记忆方式
原创 花叔 花叔 2025-10-21 13:37
互动数据
- 阅读:998
- 点赞:28
- 转发:66
- 喜欢:9
- 留言:2
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/