**论文**:OCR-Memory: Optical Context Retrieval for Long-Horizon Agent Memory
**作者**:Jinze Li, Yang Zhang, Xin Yang, et al. (港大、北德克萨斯大学、筑波大学、延世大学)
**arXiv**:2604.26622v1 | 2026年4月29日
**核心问题**:Agent做长程任务时"转头就忘",文本上下文不够用,摘要又丢细节。如果把记忆"拍成照片"呢?
---
## 从一个具体场景开始
想象你在让AI Agent帮你订机票。它需要打开浏览器、搜索航班、比价、填表单、输信用卡——十几步操作。做到第7步时,它突然忘了第2步搜到了哪个航班,因为上下文窗口满了,早期的推理痕迹已经被挤出了窗口。
传统解决方案有三种:
**方案一:全塞进提示词**
Token贵得离谱,上下文窗口有上限,长历史根本塞不下。
**方案二:文本摘要压缩**
用LLM自己把历史总结成精炼的文本。问题是——摘要会丢掉细节。Agent在第7步需要的可能是第2步某个航班的"具体起飞时间",而摘要只保留了"搜到了几个选项"。
**方案三:RAG检索**
把历史存在外部数据库,用时检索相关片段。但检索依赖语义相似度,容易返回"话题相关但逻辑无关"的内容。而且检索回来的文本片段是生成的,有幻觉风险。
港大和腾讯系研究团队提出的OCR-Memory走了第四条路:**把Agent的完整交互历史"拍成照片"存起来,需要时"看图定位",再从外部日志中确定性取原文**。
费曼会怎么审视这个方案?让我从第一性原理拆解。
---
## 一、核心洞察:视觉模态是"高密度无损介质"
论文的出发点来自一个被很多人忽略的事实:**视觉token的信息密度远高于文本token**。
DeepSeek-OCR(2025)的研究表明,一张包含密集文字的文档图片,可以被编码成极少量的视觉token,同时完整保留原文的全部信息。换句话说,一页A4纸的文本(可能几千个token),拍成照片后变成几百个视觉token——信息没有丢失,只是换了一种表示。
OCR-Memory把这个洞察搬到了Agent记忆上:
> 与其让LLM用有限的文本上下文去"读"历史,不如让LLM用极少的视觉token去"看"历史照片,然后只取它需要的部分。
这本质上是一个**资源重分配**的决策:
- 文本上下文 = 稀缺资源(LLM推理的瓶颈)
- 磁盘存储 + 视觉编码器 = 相对廉价资源
- OCR-Memory把成本从A转移到B
费曼会问:"这个转移是真的聪明,还是只是绕过了问题的表面?"
答案是:它确实绕过了文本上下文瓶颈,但代价是引入了新的瓶颈——视觉编码器的计算开销和磁盘占用。论文的实验数据显示,磁盘存储从18KB涨到1.47MB(约80倍),检索延迟从0.3秒涨到1.7秒(约5.7倍)。
这不是免费的午餐,是**用存储和延迟换上下文容量**。
---
## 二、架构拆解:Locate-and-Transcribe
OCR-Memory的核心机制可以概括成一句话:**看图选索引,按索引取原文**。
### 2.1 存储:把轨迹渲染成带锚点的图像
Agent的每一步交互(用户输入、推理痕迹、工具调用、环境反馈)被渲染成一张图片。关键设计是**Set-of-Mark (SoM)**——每个文本段落被一个红色边界框圈起来,并标注唯一的数字索引(1, 2, 3...)。
这就像一个带标签的储物柜:你把东西放进去,每个格子有个编号。需要时不用描述"那个蓝色的东西",直接说"3号格子"。
存储结构:
```
Memory M = {m_i}
m_i = (I_i, {s_{i,k}}, π_i)
```
- I_i:渲染后的带标记图像
- s_{i,k}:对应的原文段落(存在外部日志中)
- π_i:元数据(时间戳、episode ID等)
### 2.2 检索:视觉定位 + 确定性转录
当Agent需要历史信息时,OCR-Memory模块做两件事:
**第一步:Locate(定位)**
- 把查询q和所有存储的图像一起喂给视觉模型(DeepSeek-OCR 3B)
- 模型输出一个二元向量:对每个图像中的每个段落,预测"相关(1)"还是"不相关(0)"
- 模型不做自由文本生成,只做**索引选择**
**第二步:Transcribe(转录)**
- 根据选中的索引,从外部日志中**确定性取原文**
- 零生成、零幻觉——取出来的就是当时存进去的字面文本
这里有个精妙的分离:
- **视觉模型负责"找"**——它理解查询和图像内容的相关性
- **外部数据库负责"给"**——它提供原文,不生成、不编造
费曼会怎么评价这个分离?
> "他们把'理解需要什么'和'产出什么'分开了。视觉模型只需要判断'这格子里的东西对回答问题有没有用',不需要复述内容。而真正的内容从数据库里按编号取。这避免了LLM最常见的毛病——说着说着就开始编。"
论文的数据显示,这种分离带来了**100%的检索保真度**(vs 文本生成检索的84.3%)。原因很简单:它不生成文本,只选索引。
### 2.3 推理打分:从二元标签到概率校准
模型输出的是离散的0/1标签,但如果直接用贪心解码(只取预测为1的),可能漏掉一些"实际上是相关的但模型不太确定"的段落。
论文的解决方案是:**从token logits计算概率,然后用召回导向的选择策略**。
p_{i,k} = softmax(z_{i,k}(1), z_{i,k}(0))
选择规则:
```
S_i(q) = {(i,k) | p_{i,k} >= τ} ∪ TopK({p_{i,k}}, K)
```
这个混合策略的意思是:
- 先把所有高置信度(>τ)的段落收进来
- 如果不够K个,再从概率最高的里面补到K个
论文管这叫"宁可多取也不要漏"——**召回导向**,因为Agent任务中漏掉关键证据的代价远高于多取几个无关段落的代价。
---
## 三、工程亮点:模拟人类记忆的多分辨率机制
OCR-Memory最有趣的设计是**Age-Aware Adaptive Resolution**——模拟人类记忆"清晰到模糊"的自然衰减。
### 3.1 光学遗忘
人类记忆的特点是:刚发生的事记得很清晰,久远的事只记得个大概。OCR-Memory复制了这个模式:
- **最近5步**:高分辨率(1024×1024)存储,细节完整
- **更早的历史**:逐步降采样到低分辨率(512×512)"缩略图"
降采样后的图像,文字可能模糊到无法逐字阅读,但**语义轮廓还在**——你能看出这是一段"航班搜索结果"还是一段"信用卡输入表单",即使看不清具体航班号。
### 3.2 主动回忆上采样
当检索模块在一张低分辨率图像中发现了一个相关段落(比如"3号格子可能有关"),系统会立即触发**Active Recall Upsampling**:
1. 从外部日志中重新渲染该段落的原始高清图像
2. 替换掉低分辨率缩略图
3. 用高清版做精细检索
这就像你看到一个模糊的照片,隐约觉得里面的人很眼熟,然后你翻出原始高清版确认——"对,就是他。"
论文没有明确说这个机制是"真正的遗忘"还是"假装遗忘"。严格来说,它不是遗忘——原始日志始终存在,随时可以重建高清版。它更像是一种**分层缓存策略**:热数据高清,冷数据压缩。
费曼会怎么说?
> "他们把它包装成'模拟人类记忆',听起来很性感。但实际上更像是一个缓存系统——最近访问的放在L1缓存(高清),老的放到L2(缩略图),命中了再调回来。这不是在模仿海马体,这是在模仿计算机的内存层级管理。"
这话不是批评——计算机内存层级管理是经过验证的高效策略。只是说,**类比是人类记忆≠真的是人类记忆**。
---
## 四、训练策略:从问答到检索的范式转换
OCR-Memory基于DeepSeek-OCR (3B),但预训练模型擅长的是"看图转文字"(OCR),不是"看图选段落"(检索)。所以需要一个专门的微调阶段。
### 4.1 用HotpotQA做检索训练
论文把HotpotQA数据集重新标注用于训练:
- 丢弃文本答案
- 保留"支持段落"的索引标注
- 把10个段落渲染成带SoM标记的图像
- 训练目标:让模型输出二元向量 y ∈ {0,1}^K,标记哪些段落是支持查询的
### 4.2 加权BCE损失:偏向召回
检索任务的正负样本极不平衡——10个段落里可能只有2个是相关的。论文用加权二元交叉熵:
L_BCE = -Σ [w+ · y_k · log(p_k) + w- · (1-y_k) · log(1-p_k)]
其中 w+ = 2.0, w- = 1.0——**漏掉相关段落的惩罚是误取无关段落的2倍**。
这符合Agent任务的本质:多给几个无关段落,Agent可以自己筛;但漏掉关键段落,任务就完不成了。
### 4.3 分辨率课程训练
为了让模型能适应推理时的低分辨率记忆,训练时随机采样分辨率层级:
l ~ Categorical(π=[0.3, 0.7]) over {1024×1024, 512×512}
30%概率用高清,70%概率用低清。这让模型学会"即使看不清字,也能靠布局和大致轮廓判断相关性"。
### 4.4 冻结编码器 + LoRA微调
- Vision Encoder 冻结:保持光学识别能力不变
- Language Decoder 用LoRA微调:学习"查询→视觉锚点"的映射
这避免了破坏预训练模型的视觉理解能力,同时让模型学会新的检索指令。
---
## 五、实验结果:数字会说话
### 5.1 主实验(Mind2Web + AppWorld)
**Mind2Web**(网页导航):
- Element Accuracy: OCR-Memory 53.8% vs AWM 49.1%
- Step Success Rate: 46.1%(SoTA)
- Task Success Rate: 4.8%(SoTA)
**AppWorld**(API交互):
- Average Success: 58.1%(SoTA)
- Hard Tasks: 30.8% vs Retrieval baseline 21.4%,AWM 27.2%
Hard任务上的优势最明显——因为Hard任务需要更长程的历史依赖,而OCR-Memory保留了完整历史。
### 5.2 消融实验
**Set-of-Mark机制**:
- 去掉SoM、让模型自由生成文本:幻觉率上升,推理延迟增加3倍(因为生成长序列比输出0/1慢得多)
- 去掉SoM、让模型预测边界框:速度快但精度不够
- SoM提供了"精度和速度的最佳平衡"
**多分辨率策略**:
- 全低清:Step SR 下降6.4%,token最少
- 全高清:性能与OCR-Memory相当,但token成本 prohibitive
- 动态分辨率:**用接近低清的token成本,达到接近高清的性能**
### 5.3 上下文限制下的鲁棒性
在严格token预算下(1024~8192),OCR-Memory始终优于文本RAG。尤其极端情况下(1024 token),文本RAG严重退化,而OCR-Memory仍保持可用。
这是因为视觉token的信息密度:同样的token预算下,"看一张图"能涵盖的历史信息量远大于"读一段文本"。
### 5.4 Needle-in-a-Haystack(大海捞针)
- 4k上下文:检索准确率98.5%
- 32k上下文:检索准确率94.1%
- 压缩比:始终维持10x以上
这说明视觉编码确实能把超长文本压缩成紧凑的视觉序列,而不丢失语义。
### 5.5 资源权衡
| 资源 | 文本RAG | OCR-Memory |
|------|---------|------------|
| 推理上下文token/步 | 3,980 | 596 (6.7x减少) |
| 磁盘存储/episode | 18KB | 1.47MB (80x增加) |
| 检索延迟 | 0.3s | 1.7s (5.7x增加) |
OCR-Memory不是"更便宜",而是**把成本从最贵的资源(推理上下文)转移到相对便宜的资源(磁盘和延迟)**。这在云端部署时很有意义——存储和延迟的成本远低于LLM API调用。
---
## 六、费曼式审视:货物崇拜检测
### 6.1 "视觉记忆"是不是类比过头了?
论文多次提到"模拟人类记忆"、"vivid-to-fuzzy property"。但诚实地看:
- 人类记忆是**有损的**——你真的忘了,信息不在了
- OCR-Memory的"遗忘"是**无损压缩**——原始日志始终存在,随时可以重建
所以这个机制更像**分层存储系统**(L1/L2缓存),而不是海马体的记忆巩固和遗忘。
类比是个好用的直觉工具,但**命名不等于理解**。知道这个区别,才能真正评估系统的边界。
### 6.2 "100%检索保真度"的真相
这个数字听起来像魔法。费曼会立刻追问:"他们怎么测的?"
答案是:保真度定义为"选中的段落取出的原文是否和存储的一致"。因为取原文是确定性的数据库查询(按索引取),所以必然是100%。
但这不是说"每次检索都完美"。它说的是:"**一旦选中了一个段落,取出来的肯定是原文,不会编**。
漏检(该选的没选)、误选(不该选的选了)仍然可能发生。100%保真度不等于100%召回率。
### 6.3 训练开销被轻描淡写了吗?
论文在Limitations里承认:OCR-Memory需要微调一个专门的视觉检索模型,有额外的训练开销。
但主文中对这个开销的具体规模语焉不详。DeepSeek-OCR 3B的微调需要多少GPU小时?训练数据从哪里来(HotpotQA的重新标注是自动化的还是需要人工)?这些细节缺失了。
对于想部署这个方案的团队来说,**"需要专门训练"可能是个不小的门槛**。
### 6.4 通用性边界
论文在Mind2Web(网页导航)和AppWorld(API交互)上测试。这两种场景的共同点是:
- 交互历史有明确的结构化文本(HTML元素、API调用记录)
- 渲染成图像后,空间布局携带语义信息
但如果Agent的场景是:
- 纯对话(没有UI元素可以渲染)
- 物理世界交互(机器人操作,没有屏幕可截图)
- 音频/视频流(非文本也非视觉UI)
OCR-Memory的假设还成立吗?视觉编码的优势可能不再明显。
---
## 七、真正的突破在哪?
抛开包装性的类比,OCR-Memory的真正贡献是:
**1. 分离"定位"和"生成"**
这是整个系统最精妙的设计。让视觉模型做它擅长的事(空间定位和相关性判断),让数据库做它擅长的事(确定性查询)。两者都不需要做自由文本生成,所以都不产生幻觉。
这比端到端的文本生成检索可靠得多。
**2. 用视觉token的密度优势绕过文本上下文瓶颈**
这不是"Agent学会了看图",而是"Agent学会了用更紧凑的编码方式访问历史"。视觉在这里不是目的,是手段——一种信息密度更高的编码手段。
**3. 资源重分配的清醒认识**
论文没有假装OCR-Memory是"免费更好",而是明确展示了资源权衡表。磁盘和延迟换上下文容量的交易,在不同部署场景下价值不同。这种诚实的呈现比一味吹嘘更有说服力。
---
## 八、结语:到底解决了什么,没解决什么
OCR-Memory解决的是:**在上下文窗口有限的情况下,如何让Agent保留更多、更准确的长程历史信息**。
它没解决的是:
- Agent的推理能力本身(只是给推理提供更好的弹药)
- 多模态记忆(音频、视频、物理感知)
- 真正的"遗忘"和"巩固"(只是压缩缓存)
- 训练成本和部署复杂度
费曼会说:
> "他们做了一件聪明的事——不是让Agent'记住更多',而是换了一种更紧凑的方式'看到更多'。这就像你不需要把整本书背下来,只需要知道'答案在第37页第3段'。问题是:你还得确保第37页真的在你手里,而且你能快速翻到那一页。"
视觉记忆不是魔法。它是一种**聪明的工程妥协**——在特定场景下(有结构化UI的Agent任务),用视觉编码的高密度特性,把记忆成本从最贵的资源转移到相对便宜的资源。
知道它能做什么、不能做什么、代价是什么,才算真正理解了这个方案。
---
## 参考论文
Li, J., Zhang, Y., Yang, X., et al. (2026). OCR-Memory: Optical Context Retrieval for Long-Horizon Agent Memory. arXiv:2604.26622v1 [cs.CL]. https://arxiv.org/abs/2604.26622
#论文解读 #Agent记忆 #视觉检索 #LocateAndTranscribe #OCRMemory #费曼视角 #小凯
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
领取 2000万 Tokens
通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力