Multimodal Memory Survey · essay
19. Multimodal Memory Survey:多模态记忆论文簇怎么入门
资源:Awesome Multimodal Memory
本地资源清单:
![[papers/19-Awesome-Multimodal-Memory-README.md]]
论文定位与阅读路径
阅读边界
这不是一篇单独论文,而是一个多模态记忆研究清单。它收录的是音频、视频、图像、机器人、3D、VLM、具身智能等方向里和 memory 相关的论文。
所以本篇不按“Abstract/Method/Experiment”拆,而是按研究方向拆。
核心定位
前面大多数 Agent Memory 论文主要是文本记忆。多模态记忆问的是:
如果 Agent 看到的是图片、视频、音频、3D 场景,记忆应该存什么、怎么检索、怎么跨模态使用?
原文结构导读(资源清单版)
这个 README 大体分三块:
| 部分 | 内容 | 你要理解什么 |
|---|---|---|
| Multimodal Context Modeling with Memory | 音频/视频长上下文建模 | 长视频、长音频不能全塞上下文 |
| Multimodal Contextual Memory for Vision and Robotics | 视觉导航、机器人、操作规划 | 具身 Agent 需要记环境 |
| External Multimodal Knowledge/Memory Augmentation | 外部图像/音频/视频/3D知识增强 | 多模态版 RAG/Memory |
你现在不用读完 400 篇。先建立方向地图。
证据链阅读
| 资源类型 | 应该看什么 | 工程问题 |
|---|---|---|
| 长视频/长音频记忆论文 | 是否有分段、压缩、时间戳和跨片段召回 | 解决长上下文放不下的问题 |
| 视觉/机器人记忆论文 | 是否存物体、空间、动作结果和失败原因 | 解决 Agent 在环境里行动后的经验复用 |
| 多模态知识增强论文 | 是否能把图像/视频/音频证据和文本查询对齐 | 解决“找得到证据但答不准”的问题 |
| 数据集/benchmark | 问题是否需要跨时间、跨空间、跨模态推理 | 判断方法是不是真在测 memory,而不是测 caption 能力 |
| 工程系统 | 是否暴露 source pointer、timestamp、region、confidence | 决定回答能不能回到可检查证据 |
这份清单的正确用法不是收藏论文名,而是按任务反推:如果你要做课程视频记忆,先找长视频/长音频;如果你要做截图问答,先看视觉证据定位;如果你要做机器人/桌面操作 Agent,再看空间和动作记忆。
研究背景与问题定义
为什么多模态记忆更难
文本记忆通常是:
代码块收起展开
一句话/一段文字 -> embedding -> 检索多模态记忆可能是:
代码块收起展开
视频片段 + 语音 + 物体轨迹 + 场景地图 + 时间戳 + 用户问题难点多很多:
| 难点 | 解释 |
|---|---|
| 数据量大 | 一小时视频远大于一篇文本 |
| 时间连续 | 视频/音频有时间轴 |
| 空间关系 | 图像和 3D 场景有位置关系 |
| 跨模态对齐 | 文字、声音、画面要对齐 |
| 检索复杂 | 问题可能是“刚才左边那个人做了什么” |
| 记忆压缩 | 不可能保存所有帧 |
方法框架与核心机制
第一类:长视频/长音频上下文记忆
这类方向要解决:
模型看不完整个长视频/长音频,必须把过去内容压缩成记忆。
典型任务:
| 任务 | 例子 |
|---|---|
| 长视频理解 | 一部电影里某角色前后行为 |
| 视频问答 | 问“第 30 分钟出现的物体后来去了哪” |
| 视频摘要 | 把长视频压成段落摘要 |
| 音频识别 | 长会议语音中的主题和人物 |
一个常见流程:
第二类:视觉和机器人记忆
机器人 Agent 不只是聊天,它要在世界里行动。
它需要记:
- 哪些地方去过。
- 物体在哪里。
- 哪个动作成功/失败。
- 当前目标和过去观察的关系。
这类记忆更接近:
代码块收起展开
空间地图 + 物体状态 + 动作经验 + 任务历史比如家务机器人:
代码块收起展开
杯子在厨房第二层柜子。
上次抓这个杯子失败,因为角度太偏。
用户喜欢把咖啡杯放回右侧架子。这已经不是普通文本 RAG 能完整表达的。
第三类:外部多模态知识增强
这是多模态版 RAG:
| 文本 RAG | 多模态 RAG |
|---|---|
| 查文档 | 查图片、视频、音频、3D |
| 文本 embedding | 图文/音文/视频 embedding |
| chunk | frame、clip、region、tracklet |
| 引用段落 | 引用画面/时间戳/区域 |
问题例子:
代码块收起展开
这张图里和用户之前提到的设备是不是同一个?
这段视频中红色车第一次出现在哪里?
这个 3D 场景里可以抓取的物体有哪些?多模态记忆该存什么
| 记忆对象 | 示例字段 |
|---|---|
| 图像记忆 | image_id、caption、objects、regions、embedding |
| 视频记忆 | video_id、start_time、end_time、events、keyframes |
| 音频记忆 | speaker、transcript、emotion、timestamp |
| 机器人记忆 | map、object_pose、action_result、failure_reason |
| 跨模态记忆 | text_summary、visual_evidence、source_pointer |
如果你以后做学习 Agent,最可能先用到:
代码块收起展开
截图记忆 + 课程视频片段记忆 + PDF 图表记忆概念校准
文本记忆像课堂笔记。
多模态记忆像你不仅记笔记,还保存:
- 老师板书照片。
- 讲课录音。
- PPT 截图。
- 实验操作视频。
- 当时你做错的步骤。
当你复习时,不是只搜文字,而是能回到对应画面和声音。
工程映射与实践启发
和 Agent 工程的关系
一个多模态 Personal Knowledge Agent 可以这样设计:
flowchart TD
A[Obsidian 文本] --> D[统一记忆索引]
B[截图/图片] --> E[视觉描述与对象提取]
C[课程视频] --> F[转录 + 关键帧 + 时间戳]
E --> D
F --> D
G[用户问题] --> H[文本+视觉混合检索]
D --> H
H --> I[回答并指向证据]
最小实践路线
不要一开始就做机器人/视频 Agent。可以这样逐步来:
- 文本笔记 RAG。
- PDF 图表 OCR + 文本解释。
- 截图自动 caption + embedding。
- 视频转 transcript + keyframe。
- 问答时返回文本证据 + 图片/时间戳证据。
局限、对比与阅读检查
局限与边界
- 多模态 embedding 质量参差不齐。
- 视频/图片存储和检索成本高。
- 跨模态证据很难解释清楚。
- 隐私风险比文本更高。
- 工程复杂度远超文本 Agent。
阅读检查清单
- 第 19 个资源不是单篇论文,而是论文清单。
- 多模态记忆主要分长上下文、机器人/视觉、外部知识增强三类。
- 多模态记忆要处理时间、空间、跨模态对齐。
- 文本 Agent 做熟后,再扩展图片、PDF、视频会更稳。
- 对你当前阶段,先关注截图/PDF/课程视频记忆最实用。
深度精读:多模态记忆不是“把图片也 embedding 一下”这么简单
1. 多模态记忆的三重难点
文本记忆主要难在语义和上下文。多模态还多了:
| 难点 | 说明 |
|---|---|
| 时间 | 视频/音频是连续流 |
| 空间 | 图像/3D 有位置关系 |
| 对齐 | 文字、声音、画面要对到同一事件 |
比如用户问:
代码块收起展开
刚才视频里老师讲到那个公式时,PPT 左下角的图是什么意思?这需要同时记住时间点、语音转录、PPT 图像和图中区域。
2. 长视频记忆的基本结构
长视频不能逐帧进模型,所以要分层:
代码块收起展开
frame -> clip -> event -> segment summary -> global memory每层解决不同粒度:
| 层 | 存什么 |
|---|---|
| frame | 关键画面 |
| clip | 几秒到几十秒事件 |
| event | 人/物/动作 |
| segment summary | 一段视频讲了什么 |
| global memory | 整体主题和结构 |
这和文本的 chunk/summary 很像,但多了视觉证据。
3. 机器人记忆为什么更复杂
机器人需要行动,所以它要记的不只是“看见了什么”,还要记:
- 物体在哪里。
- 自己在哪里。
- 做过什么动作。
- 动作是否成功。
- 环境是否变化。
这类记忆接近:
代码块收起展开
地图 + 物体状态 + 动作历史 + 失败经验普通文本 RAG 无法自然表示空间关系。
4. 多模态 RAG 的证据链
文本 RAG 的证据通常是一段话。多模态 RAG 的证据可能是:
代码块收起展开
视频 id + 时间戳 + 关键帧 + 框选区域 + 转录文本所以数据结构要更丰富:
代码块收起展开
{
"modality": "video",
"source": "lecture01.mp4",
"time_range": "00:13:20-00:13:45",
"transcript": "...",
"keyframes": ["frame_001.jpg"],
"objects": ["formula", "chart"],
"summary": "老师解释了置信区间公式"
}5. 对你的实际路线
不要一开始做机器人。你最现实的多模态路径是:
- PDF 图表 OCR。
- 截图自动描述。
- 课程视频转录。
- 关键帧提取。
- 文本笔记和图片证据一起检索。
这能直接服务学习。
6. 隐私风险更高
图片和视频可能包含:
- 人脸。
- 学号/姓名。
- 桌面文件。
- 私聊内容。
- 地理位置。
所以多模态记忆默认要更谨慎。不是所有截图都应该进长期记忆。
7. 检索策略
多模态检索通常要混合:
代码块收起展开
text query -> text embedding
image/frame -> vision embedding
speech -> transcript embedding
object tags -> keyword filter
time range -> temporal filter最后 rerank。不要只靠一个 embedding。
8. 这份 awesome list 怎么用
不要从头读。按需求找:
| 你要做什么 | 看哪类 |
|---|---|
| 课程视频问答 | long video understanding / VideoQA |
| PDF 图表理解 | image/document memory |
| 截图知识库 | external image memory |
| 机器人以后再说 | visual navigation / manipulation |
这才是资源清单的正确打开方式。
精读补强:多模态记忆的证据链与工程判断
多模态记忆不能理解成“图片也做 embedding”。关键问题是不同模态的信息如何被切片、对齐、索引和回放。
| 判断点 | 原文证据 | 工程含义 |
|---|---|---|
| 模态切片 | 视频帧、音频段、图片区域如何拆分 | 切片粒度决定召回精度和存储成本 |
| 跨模态对齐 | 文本、图像、时间戳如何关联 | 没有对齐就无法解释检索结果 |
| 记忆表示 | caption、object、event、embedding | 单一向量不足以承载复杂证据 |
| 回放方式 | 回答时引用哪种原始证据 | 需要能回跳图片、帧、音频段或截图 |
对个人知识 Agent 来说,第一阶段不要追求全模态模型。更现实的路线是:图片/截图先生成文字描述和对象标签,视频先转 transcript + keyframe,再统一进入文本主索引。
落地检查:任何多模态记忆都必须回答三个问题:原始证据在哪里、文本描述是谁生成的、描述和原始证据如何互相校验。否则模型一旦把图片描述错了,后续检索会把错误当事实不断复用。
最小实现也要保留 raw_uri、caption_model、timestamp/frame_id 和 verification_status,否则后续很难追责。
论文精读主线:问题-方法-验证-局限-启发
1. 核心结论
多模态记忆综述提醒我们:图片、视频、音频和机器人状态的记忆不只是把它们 embedding 一下,而是要处理时间、空间、跨模态对齐和隐私。
本篇的阅读重心是:多模态记忆必须处理时间、空间、跨模态对齐和隐私,而不是只做 embedding。读完后要能说清它改变的是 runtime、存储、检索、更新还是评测层;否则只是记住了论文名。
2. 问题背景
文本记忆只需要处理语言片段,多模态记忆还要处理帧序列、视觉实体、空间位置、动作轨迹和不同模态之间的证据对齐。长视频和机器人场景中,关键信息可能分散在时间和空间上。
把问题具体化为失败样例:系统回答“截图里哪里出错”却只召回文字摘要,无法定位原图区域、时间戳或证据帧。用这个样例反推论文动机,比泛泛说“上下文不够”或“记忆不准”更有判断力。
3. 核心方法
综述通常把方向分为长视频/长音频记忆、视觉与机器人记忆、外部多模态知识增强。核心流程是感知、片段化、实体/事件抽取、跨模态索引、检索和证据回放。
flowchart TD
V[视频/图片/音频] --> P[感知与切片]
P --> E[实体/事件/时间轴抽取]
E --> I[跨模态索引]
Q[查询] --> R[多模态检索]
I --> R
R --> G[证据回放 + 回答]
方法部分按数据流读:媒体先切片并抽取转录、实体、位置和时间,再建立跨模态索引,回答时返回可回放证据。每一步都要能标出输入、输出、控制点和失败后该记录的日志。
4. 技术细节
多模态 memory item 要有 modality、timestamp、bbox、transcript、embedding、sourceFile、privacyLevel。没有时间戳和定位信息,检索出来也难以验证。
代码块收起展开
final class MultimodalMemoryStore {
private final MediaSegmenter segmenter; // 把长视频/音频切成可索引片段并保留时间范围
private final EntityEventExtractor extractor; // 抽取视觉实体、动作、场景和文字转录
private final CrossModalIndexer indexer; // 建立文本、图像、音频向量和元数据索引
private final EvidencePlayer evidencePlayer; // 返回原始片段位置,支持用户复核
MemoryResult handle(MemoryInput input) {
// 1. 把长视频/音频切成可索引片段并保留时间范围
// 2. 抽取视觉实体、动作、场景和文字转录
// 3. 建立文本、图像、音频向量和元数据索引
// 4. 返回原始片段位置,支持用户复核
// 输出中保留 traceId、sourceIds、decisionReason,方便复盘和回滚。
return MemoryResult.withTrace(input.traceId());
}
}字段检查重点是 modality、sourcePath、timeRange、bbox、transcript、privacyLevel 决定可验证性。这些字段不是装饰,它们决定后续能否检索、审计、回滚、限权和做离线评测。
5. 实验验证
评测不能只看回答文字,还要看证据定位是否准确,例如时间戳、画面区域、对应字幕。多模态 QA、长视频检索、机器人任务回放都要区分检索错和生成错。
实验阅读重点:多模态评测要看证据定位,不只看回答文本;时间戳、bbox、原文件引用都要能复核。如果论文没有直接给出这层证据,复现时就要自己补机制级指标。
6. 局限与启发
成本和隐私都更高。启发是你当前 Obsidian Agent 可以先不做多模态核心,但要为图片/PDF/截图保留 source 和定位字段,未来扩展时不会重构。
迁移到你的项目时,结论是:现阶段先为 PDF、截图和图片保留来源定位字段;多模态检索可以晚做,但 schema 不能缺。先把边界做对,再追求更复杂的模型或更大的记忆规模。
7. 关键术语表
| 术语 | 在论文里的意思 | 工程落地时要看什么 |
|---|---|---|
| Cross-modal retrieval | 跨模态检索 | 文本查图像/视频,图像查文本 |
| Temporal grounding | 时间定位 | 返回视频/音频的具体时间段 |
| Spatial grounding | 空间定位 | 返回图像区域或对象位置 |
| Multimodal evidence | 多模态证据 | 原图、帧、字幕、OCR、音频片段 |
8. 复现难点
把图片 embedding 一下只是最低层。长视频需要切片策略,机器人记忆需要状态和动作,隐私材料需要本地处理和权限标记。证据不能回放就很难信任。
复现入口应从失败集开始:用带截图和 PDF 页码的问题测试:系统必须返回原始文件、页码/区域和文本解释。只有先证明旧方案会坏,才知道新机制是否真的解决了问题。
9. 代码框架建议
设计 MediaMemory(id,modality,source_path,start_time,end_time,bbox,transcript,embedding,privacy_level)。检索结果必须能跳回原始文件和时间/区域。
代码验收门槛:没有可回放证据的多模态回答只算猜测;不能进入高置信记忆。这条门槛应写进测试或 trace 字段里,避免实现只停留在 demo。
10. 相关论文对比
它和文本 RAG 的差别在证据形态。MemOS 的 governance 在多模态更重要;CoALA 可把视觉经历放 episodic memory,把稳定视觉知识放 semantic memory。
横向比较时抓这个角度:多模态记忆把 MemOS 的权限、MemLong 的切片、HippoRAG 的结构检索都推到更高要求。比较对象不是谁“更先进”,而是谁负责哪一层失败。
11. 批判性思考
多模态记忆很诱人,但不应成为第一阶段主线。没有清晰任务和证据定位,它只会增加成本。先把文本/PDF/笔记记忆做好,再扩展图片和视频。
批判边界:多模态成本高且隐私敏感;没有明确任务收益时,不应成为第一阶段主线。这不是否定论文,而是把论文结论放回真实系统的成本、权限和恢复约束里。