多模态Agent最容易制造的一种错觉是:它看过图片,所以它记住了图片。
但在很多真实系统里,图片并没有作为“视觉证据”长期存在。它往往先被模型压缩成一段 Caption,再被存进向量库、摘要系统或长期记忆模块里。后续 Agent 回答问题时,真正被检索出来的不是原图,而是一段已经被改写、压缩、筛选过的文字。
问题就在这里:用文字记住图片,不等于记住图片本身。
Caption可以描述一个房间、一张截图、一块色卡、一个角色出现在画面里,但它很容易丢掉更关键的东西:局部布局、相似物体之间的身份差异、精确颜色、小字、纹理,以及视觉状态随时间变化后的当前版本。
为此,罗格斯大学 & 圣母大学Minghao Guo、Qingyue Jiao、Zeru Shi联合普林Mengdi Wang团队、AMD提出《MemEye: A Visual-Centric Evaluation Framework for Multimodal Agent Memory》评估诊断框架,试图回答:多模态Agent的长期记忆,究竟是在记住“文字化后的摘要”,还是在保留并使用真正的视觉证据(visual evidence)?
当前问题:视觉证据经常不是“必需品”
先说一个容易被忽略的现实。
现在很多multimodal memory benchmark看起来包含图片,也要求模型在长对话中回答问题。但这并不一定意味着模型必须依赖原始图片才能回答。
有些问题虽然看起来是视觉问题,但答案可能已经藏在对话文本里;有些图片只需要一句很粗略的caption就能替代;有些多轮记忆任务考察的是“有没有记住文字事实”,而不是“有没有保留视觉细节”。
举个直观例子:
如果问题是:
“用户上次上传的是一张厨房照片还是卧室照片?”
那caption写一句“这是一张厨房照片”就足够了。Agent不需要真的保留图像。
但如果问题变成:
“后来出现在地板旁边的三个柜门样本中,哪一个和之前靠近铜色把手的样本是同一个?”
这就不再是普通caption能轻松解决的问题。模型需要保留局部区域、相似物体、实例身份(instance identity)之间的细微差别。
再进一步,如果问题是:
“最开始化石柜里的标签编号是A,但后来展柜被重新贴了标签。现在有效的编号是多少?”
这不仅需要看清图片,还需要判断哪个视觉状态是最新的、有效的,也就是要处理视觉记忆中的更新、冲突和覆盖。
这类问题在真实Agent场景中非常常见:家装设计会改方案,导航场景会出现新的路况,健康仪表盘会更新数值,游戏状态会不断变化,社交聊天中的人物或物品也可能跨session重新出现。
所以,真正困难的不是“模型能不能看图”,而是:
它能不能在很长的历史中,保留足够细的视觉证据,并在状态变化后选出当前仍然有效的证据?
这正是MemEye的出发点。
核心动机:图转文不能代表真正的视觉记忆
很多系统为了节省成本,会把图片转换成文字描述,再把这些描述存进memory。这个做法叫做caption hack,很实用,也很常见。
但是它有一个天然风险:图像一旦被压缩成文字,很多信息就不可逆地消失了。
比如:
-
小标签、小字、数字、颜色深浅; -
两个相似人物或物体之间的身份差异; -
画面局部区域的位置关系; -
某个物体后来被移动、替换、覆盖的视觉证据; -
多张图片之间的状态更新链条。
这些信息在caption中很容易被省略,因为caption通常会优先描述“看起来重要”的整体语义,而不是保留所有潜在未来问题需要的细节。
这就带来一个benchmark设计上的关键问题:
如果一个benchmark中的问题可以靠caption或对话文本回答,那它就很难证明系统真的具备visual memory。
因此,MemEye的目标不是简单增加更多图片,也不是只看最终准确率,而是建立一个更细的诊断框架,去区分不同失败原因:
-
是不是视觉证据被压缩掉了? -
是不是找到了相关图片,但找错了时间点? -
是不是证据都在,但模型不会整合更新后的状态? -
是不是当前的多模态memory架构只解决了其中一部分问题?
MemEye:两个轴拆开看“视觉”和“记忆”
MemEye最核心的设计,是一个二维评估框架(two-dimensional evaluation framework)。
这个框架把多模态长期记忆拆成两个相互独立但又会交织的维度:
X轴:视觉证据粒度(Visual Evidence Granularity)
Y轴:记忆推理深度(Memory Reasoning Depth)
X轴:模型到底需要记住多细的视觉证据?
X轴衡量的是:回答问题所需的决定性视觉证据有多细。
X1:场景级证据(Scene-level Evidence)
这是最粗粒度的视觉证据,比如场景类型、整体活动、全局语义。
例子:画面是在厨房、街道、漫画场景,还是健康仪表盘?
这类信息通常比较容易被caption保存下来。
X2:区域级证据(Region-level Evidence)
模型需要理解局部区域,而不是只看全局。
例子:房间某个角落的柜子、地板上的样本、路口某个区域的障碍物。
这时,问题已经开始依赖局部布局和区域关系。
X3:实例级证据(Instance-level Evidence)
模型需要在多个相似对象或人物中区分“具体是哪一个”。
例子:三个相似柜门样本中,哪一个和之前出现的是同一个?漫画里两个长得相似的角色,谁在后面再次出现?
这类问题很容易被caption “拍扁”。一句“有三个样本”并不能保留每个样本的身份。
X4:像素级证据(Pixel-level Evidence)
这是最细的视觉证据,包括小字、数字、颜色、纹理、精确数量、OCR-like信息。
例子:仪表盘上的数值、展柜标签编号、衣服上的小图案、品牌Logo的细小差别。
这类信息最容易在文本摘要中丢失,也是最能暴露caption-based memory局限的地方。
Y轴:模型要怎样使用这些记忆?
Y轴衡量的是:在找到视觉证据之后,模型需要进行多复杂的记忆推理。
Y1:原子检索(Atomic Retrieval)
一个证据点就足够回答问题。
例子:只要找到某一轮图片,就能回答当时背景是什么。
这主要测试memory access,也就是能不能取回需要的东西。
Y2:关系关联(Relational Association)
模型需要把多个非冲突的线索串起来。
例子:跨session比较两个事件的先后顺序,或者把一个人物在前后不同画面中的出现联系起来。
这里的信息是累积的,不存在后面推翻前面的情况。
Y3:演化综合(Evolutionary Synthesis)
这是最难的一层。模型需要处理更新、冲突、覆盖和状态变化。
例子:一个物体最开始放在A位置,后来被移到B位置;一个标签最开始是旧编号,后来被换成新编号;一个路线一开始可行,后来因为障碍物变得不可行。
这时,模型不能只找到“相关证据”,还必须判断:
哪一个证据是当前有效的视觉状态(current valid visual state)?
这就是很多retrieval-based memory容易失败的地方。它们可能找到了语义相关的旧图片,却没有意识到旧证据已经被后续视觉信息覆盖。
MemEye数据集:让图片变得不可替代
基于这个二维框架,研究者构建了一个视觉中心的长期记忆benchmark。
MemEye包含:
371个问题
221个sessions
848轮dialogue rounds
438张图片
8个生活场景任务
每个问题都有 multiple-choice(选择题) 和 open-ended(开放回答) 两种镜像形式
这8个任务覆盖四类真实生活场景:
Leisure(休闲娱乐)
Card Playlog(牌局记录):追踪牌局状态、回合变化与历史记录
Cartoon Entertainment(漫画娱乐):记忆漫画角色、情节线索与叙事关系
Domestic(日常生活)
Home Renovation(家装改造):追踪家装状态、设计选择与后续更新
Outdoor Navigation(户外导航):记忆路线、地标位置与空间关系
Professional(专业场景)
Brand Memory(品牌记忆):记住 Logo、品牌视觉元素与视觉身份变化
CrossScene Memory(跨场景记忆):追踪不同场景中的物体状态与更新关系
Personal(个人场景)
Health Care(健康护理):记忆仪表盘、健康数据与状态更新
Social Chat(社交聊天):记住聊天过程中出现的视觉细节与上下文线索
更重要的是,MemEye在构建时做了多层过滤,尽量避免“看起来是视觉问题,实际靠文字就能答”的情况。
具体来说,研究者设置了几类validation gates:
1.去除对话泄漏(Dialogue Leakage)
如果只给问题、选项和文字线索,不给图片,模型也能稳定答对,那么这个问题就会被移除或修改。
因为这种题并不能证明模型需要视觉记忆。
2.去除caption bypass(Caption可绕过)
如果把图片替换成极简caption,比如“这是一张房间照片”“这是一张游戏截图”,模型仍然能答对,那么说明问题对原始图像依赖不够,也会被移除或修改。
3.控制问题本身可回答性(Oracle Answerability)
如果给模型正确的clue rounds和原始图片,它仍然答不出来,那么可能是问题本身不清楚,或者视觉证据不足。这类问题也需要修正。
4.四轮选项旋转(Answer Rotation)
对于multiple-choice问题,正确答案会轮流出现在A/B/C/D,减少模型因为选项位置偏好而看起来“答对”的情况。
这也是MemEye想强调的一点:benchmark不只是堆数据,更重要的是让数据真的测到想测的能力。
实验设置:13种记忆方法 × 4个VLM
MemEye评估了13种记忆方法,覆盖text-only memory和multimodal memory两大类。
Text-based memory:把图片转成caption
这类方法把每张图片替换成dense caption,然后系统只在文字流上做记忆、检索或推理。
代表方法包括:
-
Full Context Text -
Semantic RAG Text -
Reflexion -
Generative Agents -
MemoryOS -
A-Mem -
SimpleMem Text
它们的优势是:文字容易组织、压缩、检索,也更适合记录更新和状态变化。
但它们的风险也很明显:如果caption没写到关键视觉细节,这个信息后面就找不回来了。
Multimodal memory:保留原始图像输入
这类方法直接保留或检索原始视觉输入。
代表方法包括:
-
Full Context Multimodal -
Semantic RAG Multimodal -
MIRIX -
MMA -
M2A -
SimpleMem Multimodal
它们的优势是:细粒度视觉证据仍然存在。
但保留图片本身并不等于会用。系统仍然要在很长历史中找到对的图片,并判断哪个状态最新、哪个证据已经过期。
评估模型
论文中评估了4个VLM backbones:
-
Qwen3-VL-8B-Instruct -
GPT-4.1-nano -
GPT-5.4-mini -
Gemini-2.5-flash-lite
选择题使用exact match(EM)评估,并对四种答案位置旋转取平均;开放回答使用LLM-as-a-Judge作为主指标,并用BLEU-1等作为辅助指标。
主要结果
实验结果最核心的结论可以概括为一句话:
当前多模态memory系统不是“完全不会记”,而是会在不同地方断掉:有时丢视觉细节,有时找错时间点,有时不能合成当前有效状态。
结果一:caption在粗粒度问题上还可以,但在细粒度视觉证据上会掉队
在X1/X2这类场景级、区域级问题上,caption-based memory往往仍然有竞争力。
这并不意外。因为“整体场景是什么”“某个区域大概有什么”通常可以被文字描述覆盖。
但到了X3/X4,也就是实例级和像素级问题,caption的瓶颈就开始明显暴露。原因也很直接:caption很难完整保留未来可能会被问到的所有视觉细节。
比如:
-
三个相似样本的具体身份; -
小标签上的编号; -
某个UI截图里的精确数值; -
一个角色在不同画面中的细微外观差异。
这些信息不一定会出现在caption中。即使caption是由强模型生成的,它也不可能预知未来所有问题需要哪些细节。
这就是MemEye中 Caption-Proof Diagnostic 想测试的点:如果把图像换成caption,性能掉多少?掉得越多,说明这个任务越依赖真正的视觉证据。
结果二:保留原始图像有帮助,但仍然不能自动解决“状态更新”
很多人可能会想:既然caption会丢细节,那只要保留原图不就行了吗?
MemEye的结果说明:不够。
原图确实能帮助模型处理高X的细粒度视觉问题,但在Y3演化综合任务中,关键瓶颈往往不是“图像是否可读”,而是“系统是否知道哪张图现在有效”。
比如一个场景中出现了旧标签,后面又出现了新标签。检索系统可能把旧标签也找出来,而且旧标签和问题语义高度相关。但它已经不是当前有效状态。
这就是论文中反复强调的区别:
找到相关证据(relevant evidence)≠ 找到有效证据(valid evidence)。
Semantic RAG这类方法很容易找出“语义相关”的图像,但如果它没有足够强的时间意识、状态更新机制或recency-aware selection,就可能把过期证据排在前面。
结果三:文本记忆和图像记忆各有优势,但单独使用都不够
MemEye揭示了一个很重要的trade-off:
Text-based memory 更擅长压缩、组织、记录状态变化,但容易丢失细粒度视觉证据;
Image-based memory 更能保留原始视觉细节,但在长历史中容易被相似、过期、冲突的图像干扰;
Retrieval-based memory 能减少全历史输入的噪声,但如果只看语义相似度,容易选到stale evidence(过期证据);
Full-context memory 能看到更多历史,但随着历史变长、话题变多,也更容易被无关信息干扰。
所以,未来更稳健的multimodal memory可能不是单一模块,而是需要同时具备三种能力:
保留视觉证据(preserve visual evidence):不要过早把图像压缩成不可恢复的文字;
记录结构化状态(structured state records):明确什么被更新、什么被覆盖、什么仍然有效;
选择时间有效证据(temporally valid evidence selection):不仅要找相关内容,还要判断哪个证据在当前时间点仍然成立。
为什么MemEye重要
很多benchmark最终只给一个总分,告诉我们哪个模型更强。
但在memory system里,总分往往不够。因为两个系统可能总分接近,但失败原因完全不同:
-
一个系统可能能找到图片,但看不清细节; -
一个系统可能看得清,但检索不到正确图片; -
一个系统可能检索到相关图片,但选了旧状态; -
一个系统可能所有证据都在,却无法整合更新链条。
MemEye的价值就在于,它把失败位置拆开了。
它让工程师可以问更具体的问题:
-
失败发生在X轴吗?也就是视觉证据粒度不够? -
失败发生在Y轴吗?也就是记忆推理深度不够? -
是caption compression的问题? -
是retrieval的问题? -
是temporal authority的问题? -
是视觉保存和状态更新之间的架构trade-off?
这对做Agent memory、multimodal RAG、long-context VLM、personal assistant、medical/health dashboard assistant、GUI agent的研究者都很关键。
因为真实世界里的Agent不会只回答“图片里有什么”。它们需要在长期交互中持续更新一个关于世界的内部状态:用户喜欢什么、家里现在变成什么样、路线是否仍然可行、之前看到的异常是否还存在、哪个版本的信息已经过期。
如果memory system不能区分“旧的相关信息”和“当前有效信息”,它就会在真实应用中犯很危险的错误。
给系统设计的启发:多模态记忆不能只靠caption,也不能只靠向量检索
读完MemEye,我觉得最值得带走的不是某个方法赢了多少分,而是三个设计启发。
启发一:不要过早丢弃原始视觉证据
caption是有用的,但它不应该是唯一记忆形式。
对于高风险或细粒度任务,系统最好保留原始图片、局部crop、视觉embedding、OCR结果、结构化属性等多种形式,而不是只存一句描述。
启发二:记忆系统需要显式处理“状态更新”
长期记忆不是静态资料库。
一个用户偏好可能变了,一个物体位置可能变了,一个健康指标可能更新了,一个旧截图可能被新截图覆盖了。
因此,memory system需要知道:
-
哪些证据是旧的; -
哪些证据是新的; -
哪些证据之间存在冲突; -
哪个状态被后续信息覆盖; -
回答当前问题时应该使用哪个版本。
这比普通semantic retrieval更难。
启发三:未来系统可能需要image memory + text memory + structured memory的组合
一个更理想的架构可能是:
-
用image memory保留视觉细节; -
用text memory保存可压缩的语义摘要; -
用structured memory记录状态变化、时间戳、冲突和覆盖关系; -
用recency-aware或state-aware retrieval选择当前有效证据; -
最后再让VLM基于这些证据回答问题。
也就是说,多模态长期记忆不应该只是“把历史都塞进prompt”,也不应该只是“向量检索最相似的几条”。
它更像是一个会维护状态、判断版本、保留原始证据的记忆系统。
不能只“看过”,而要记得对、找得到、用得上
MemEye想指出的核心问题很简单,但很关键:
对多模态Agent来说,长期记忆不只是存储更多历史,而是要保存正确粒度的视觉证据,并在时间变化中选出当前有效的状态。
如果一个系统只会把图片转成caption,它可能在粗粒度任务上表现不错,但在细节问题上丢失关键证据。
如果一个系统只会保留原始图片,它可能看得更清楚,但仍然可能在长历史中找错图、选旧证据、混淆当前状态。
如果一个系统只看总分,工程师很难知道它到底哪里失败。
MemEye的意义,是提供了一个更细的“视觉记忆体检表”:它不只问Agent答得对不对,还问它为什么答错,错在视觉细节、检索路径,还是状态更新。
随着AI Agent越来越多地进入真实生活场景,多模态长期记忆会变得越来越重要。未来的Agent不应该只是“临时看图”的聊天机器人,而应该能在长期交互中可靠地记住、更新、调用视觉世界中的证据。
这也是MemEye想推动的方向:让业界更清楚地知道,当前系统离真正可靠的multimodal memory还有多远,以及下一步该往哪里改。
论文、数据集与代码
Paper: https://arxiv.org/abs/2605.15128 [1]
Dataset: https://huggingface.co/datasets/MemEyeBench/MemEye [2]
Code: https://github.com/MinghoKwok/MemEye [3]
欢迎大家阅读、交流,也欢迎对multimodal memory、agent memory、long-context VLM、multimodal RAG感兴趣的朋友一起讨论。
引用链接
[1]: https://arxiv.org/abs/2605.15128[2]: https://huggingface.co/datasets/MemEyeBench/MemEye[3]: https://github.com/MinghoKwok/MemEye
未来已来,有缘一起同行!
<本文完结>
-
转载请与本喵联系,私自抓取转载将被起诉

