VideoAgent 开发笔记0: 基于 Mem0 的实时视觉问答 Agent

1. 项目目标 (Project Objective)

构建一个能够实时处理视频流输入的智能 Agent。该 Agent 需具备以下能力:

  • 实时感知:理解当前的视觉(视频)信息。
  • 长期记忆:通过检索历史交互和视频内容,结合当前上下文进行连贯问答。

2. 核心架构 (Core Architecture)

2.1 技术栈 (Tech Stack)

  • Captioning Model & Main Inference Model: 豆包 (Doubao) API。
  • Embedding Model: OpenAI text-embedding-3-small
  • Memory Framework: Mem0。

2.2 记忆模块 (Memory Module)

采用 mem0 作为记忆管理框架,负责视频内容的语义化存储。

  • 写入机制:采用固定窗口策略(0-10s, 10-20s...),每 10秒 截取一个视频片段,通过多模态模型转换为文本描述 (Caption),写入记忆库。
  • 存储痛点:mem0 设计了 add (新增), update (更新), delete (删除), noop (无操作) 四种状态。
    • 现状:由于视频 Caption 内容随时间变化大,且带有时间戳信息,导致系统几乎总是触发 add 操作,造成记忆库快速膨胀。

2.3 推理管线 (Inference Pipeline)

当接收到用户 Query 时,构建如下 Context 输入给大模型:

  1. 用户指令 (User Prompt / System Prompt)
  2. 当前视觉信息:最近的 4帧 图像(作为实时视觉感知的锚点)。
  3. 相关记忆 (RAG):根据 Query 从 mem0 中检索出的 Top-3 历史视频 Caption。
  4. 当前问题 (Current Query)。

3. 当前挑战与局限 (Challenges & Limitations)

3.1 上下文覆盖不足 (Context Coverage)

  • 问题:固定的 Top-3 RAG 检索仅能覆盖约 30秒 (3 x 10s) 的历史跨度。
  • 后果:对于需要长跨度信息的“总结性问题”无能为力。单纯增加检索数量 (Top-K) 会导致上下文过长,引起注意力稀疏 (Sparse Attention),反而降低回答性能。

3.2 记忆干扰与噪声 (Memory Interference)

  • 问题:对于仅需“所见即所得”的实时问题(如“现在画面里有什么?”),引入历史记忆反而造成干扰。
  • 后果:模型可能混淆“当前画面”与“记忆中的过时信息”,导致回答错误。

3.3 语义推导与记忆路由失效 (Failure in Reasoning-based Memory Routing)

  • 问题:当前的 RAG 机制仅依赖直接语义相似度,无法处理任何需要逻辑推导才能定位目标记忆的问题(不仅限于时间维度)。
  • 核心缺陷:系统缺失“先分析意图,再制定检索策略”的能力。
  • 案例
    • 隐式时间约束:用户问“刚刚那本书叫什么”,系统无法理解“刚刚”意味着需要检索最新的记录,只能机械地检索与“书”语义最接近的片段(可能是很久以前的《哈利波特》)。
    • 逻辑/因果链条:若问“他做完饭后干了什么?”,系统倾向于检索包含“做饭”画面的记忆,而非“做饭”之后的时间片段。
  • 结论:单纯的 Semantic Search 无法承担复杂的记忆路由 (Memory Routing) 任务。

3.4 混合推理策略失效 (Strategic Failure)

  • 尝试方案:设计两阶段推理 —— 先让模型看最近几帧尝试回答;若无法回答,再请求访问记忆。
  • 失败原因:模型倾向于“偷懒”或自信地产生幻觉 (Hallucination),不愿承认“不知道”并调用记忆工具。Prompt 优化目前尚未奏效。
← 返回文章列表