跳转至

记忆机制

Quote

Memory is the skeleton of identity — without it, agents are Stateless tools.

基本概念

记忆 (Memory) 是 Agent 维持上下文连贯性和积累经验的基础能力。与人类记忆类似,Agent 的记忆机制通常可以分为以下几类:

flowchart TD
    M[记忆系统] --> S[短期记忆]
    M --> L[长期记忆]
    M --> W[工作记忆]
    S --> S1[对话上下文]
    S --> S2[近期观察]
    L --> L1[向量数据库]
    L --> L2[知识图谱]
    L --> L3[文件系统]
    W --> W1[当前任务状态]
    W --> W2[中间推理结果]

短期记忆

短期记忆 (Short-term Memory) 对应 LLM 的上下文窗口 (Context Window),即当前对话或任务中模型能直接访问的信息。

特点:

  • 容量有限,受模型最大上下文长度限制;
  • 访问速度极快,直接参与推理;
  • 任务结束后即丢失。

优化手段:

  • 上下文压缩:使用摘要模型或选择性保留关键信息;
  • 滑动窗口:只保留最近 N 轮对话;
  • 重要性筛选:根据相关性对历史信息排序,只保留高分内容。

长期记忆

长期记忆 (Long-term Memory) 用于存储跨会话、跨任务的持久化信息。

基于向量数据库

最常见的方式是将信息 embedding 后存入向量数据库(如 Chroma、FAISS、Milvus),在需要时通过语义检索召回相关记忆。

flowchart LR
    E[经验/对话] --> Emb[Embedding]
    Emb --> VDB[(向量数据库)]
    Query[当前查询] --> Emb2[Embedding]
    Emb2 --> VDB
    VDB --> R[Top-K 相关记忆]
    R --> C[注入上下文]

基于知识图谱

将提取的实体和关系存储在知识图谱中,适合需要结构化推理的场景。

基于文件系统

Agent 将重要信息直接写入文件(如笔记、日志),在需要时读取。这种方式简单直接,常见于代码 Agent 中。

工作记忆

工作记忆 (Working Memory) 是 Agent 在执行当前任务时的临时存储,包括:

  • 当前任务的目标和约束;
  • 中间推理结果;
  • 已尝试但失败的方案(用于避免重复错误)。

工作记忆通常通过 System Prompt 或特殊的记忆变量来管理。

记忆管理策略

写入策略

  • 即时写入:每次观察后立即存储;
  • 批量写入:定期汇总后批量存储;
  • 选择性写入:根据重要性评分决定是否存储。

检索策略

  • 语义检索:基于向量相似度检索;
  • 关键词检索:基于关键词匹配;
  • 混合检索:结合语义和关键词检索;
  • 时间衰减:近期记忆权重更高。

遗忘策略

  • 基于时间:过期信息自动降权或删除;
  • 基于容量:存储空间不足时淘汰低优先级信息;
  • 基于相关性:与当前任务无关的信息被逐步淘汰。

记忆与幻觉

记忆机制的质量直接影响 Agent 的幻觉率:

  • 检索到不相关的信息会误导模型;
  • 记忆中的错误信息会被模型当作事实放大
  • 需要对检索到的记忆进行验证和过滤