自动记忆提取
定义
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]] — 嵌入向量数据库