自动记忆提取 (Auto Memory Extraction)

自动记忆提取

定义

AI Agent 在会话结束时自动从对话中提取值得长期记住的信息,分类存入向量数据库,实现跨会话的持久记忆。

核心架构

1
2
3
4
5
对话结束 → on_session_end() → 后台线程
  ├─ P2: 预取已有记忆 → 注入prompt(减少重复提取)
  ├─ P0: 调用LLM提取 → JSON输出(persona/episodic/instruction)
  ├─ P1: 向量去重 → ChromaDB相似度检查
  └─ 存入MemPalace drawers

三类记忆分类

类型说明存储wing示例
persona用户偏好、习惯、身份user喜欢暗色模式
episodic具体事件和行动episodic完成博客主题迁移
instruction工作流程、规则、方案instruction部署前先hugo –minify测试

实施要点

提取模型选择

  • 推荐:GLM-4-Flash — 免费、3-7秒延迟、中文理解好
  • 不推荐GLM-4.7-Flash — 推理模型,28秒延迟
  • 不推荐本地模型 — RAM占用高、15-25秒延迟

去重阈值

  • ChromaDB cosine distance < 0.15(约92%相似度)
  • 范围:同wing内比较
  • 效果:同对话重复提取90%+被拦截

Prompt Cache(P2)

  • 提取前预取user和instruction wing的已有记忆
  • 注入prompt的"已知记忆"区
  • 上限15条、500字符,避免bloat

配置

1
2
3
4
5
6
7
// mempalace.json
{
  "auto_extract": true,
  "extract_model": "glm-4-flash",
  "extract_base_url": "https://open.bigmodel.cn/api/paas/v4",
  "extract_api_key": ""  // 留空则自动从环境变量GLM_API_KEY加载
}

性能指标(实测)

指标
提取延迟3-7秒(后台异步)
Token消耗300-500/次
成本¥0(免费模型)
分类准确率>90%
去重有效率>90%
预估月成本<¥0.5(10次/天)

适用场景

  • 有ChromaDB/MemPalace等向量存储的Agent系统
  • 支持MemoryProvider插件架构(on_session_end钩子)
  • 有免费LLM API可用(智谱GLM-4-Flash、Google Gemini Flash等)

扩展方向

  • 记忆分层(未实施):温/冷/归档,按访问频率衰减。当前20条记忆无需分层,预估到1000+条再评估
  • 知识图谱集成:提取的记忆同步写入KG,支持关系查询
  • 跨Agent共享:多Agent共用同一MemPalace实例

相关概念

  • [[MemPalace]] — 本地向量记忆存储
  • [[Memory Provider]] — Agent记忆插件接口
  • [[ChromaDB]] — 嵌入向量数据库