在 LLM 代理和多代理系统中,内存管理是实现长期一致性和可扩展性的关键瓶颈。Memori 作为一个开源内存引擎,提供了一种高效的分层语义持久化方案,结合检索、去重、LRU 驱逐和压缩机制,确保代理在海量交互中保持高效回忆与决策能力。这种设计避免了单纯依赖上下文窗口的局限,支持跨会话、跨代理的知识积累。
Memori 的核心在于其分层归属(attribution)机制,将记忆组织为 entity(实体,如用户)、process(进程,如代理实例)和 session(会话)三个层次。这种层次化持久化通过 SQL 数据库(如 SQLite 或 PostgreSQL)实现第三范式 schema,支持语义三元组存储,形成知识图谱基础。证据显示,Memori 在初始化时自动构建 schema,并支持迁移,确保数据一致性。例如,安装后只需一行代码:mem = Memori(conn=db_session_factory).openai.register(client),即可启用持久化。实际部署中,这种结构允许代理记住用户偏好(如 “我的最爱颜色是蓝色”),并在后续交互中自动注入相关事实、属性和关系,而无需手动管理。
检索机制是 Memori 的另一亮点,利用向量化记忆和内存语义搜索,实现高效召回。每次 LLM 调用前,Memori 自动从数据库检索相关记忆,通过 embedding(如 OpenAI text-embedding)匹配查询语义,并注入上下文。这种 “先检索后推理” 的流程显著降低 token 消耗。Memori 支持高级增强(Advanced Augmentation),后台线程零延迟提取属性、事件、事实、人际关系等,并通过混合检索(向量 + 关键词 + 时间衰减)提升精度。在多代理场景下,process_id 隔离确保每个代理仅检索自身相关记忆,避免跨代理污染。
为实现可扩展性,Memori 隐含支持去重(dedup)、LRU 驱逐和压缩策略。尽管 README 未明示,但其设计原则(如热度指标和后台优化)符合这些需求。去重通过语义相似度阈值(推荐 0.95)过滤冗余记忆,避免重复存储相同事实。LRU 驱逐针对 session 缓存:设置 max_size=1000(记忆条目),最近最少使用者优先淘汰,结合时间衰减(TTL=7 天低频记忆)。压缩则利用 LLM 摘要旧记忆,保留核心三元组,目标压缩率 80%。这些机制在生产环境中防止存储爆炸,例如监控查询:mem.config.storage.stats() 显示占用与命中率。
可落地参数与清单如下,提供工程化部署指南:
1. 初始化配置
- 数据库:SQLite(开发)/ PostgreSQL(生产),conn_factory 使用 SQLAlchemy sessionmaker。
- LLM 集成:
mem.openai.register(client)或支持 Anthropic/Gemini 等。 - Attribution:entity_id="user-123", process_id="agent-v1",session_id 自动或手动 set_session。
2. 检索参数
- Top-K=5,相似度阈值 > 0.8。
- 嵌入模型:text-embedding-3-small(低成本)。
- 注入模板:"基于以下记忆:{retrieved_memories},回答查询。"
3. 优化阈值
- Dedup 阈值:cosine_similarity > 0.95 合并。
- LRU:cache_size=500,eviction_interval=1h。
- Compaction:每周运行,target_size<10MB / 实体,使用 LLM prompt:"总结以下记忆为关键事实三元组。"
- 监控点:命中率 > 90%,存储增长 < 1GB / 月,回滚:
mem.config.storage.reset()。
4. 多代理集成清单
- 共享数据库,多 process_id 隔离。
- 跨代理检索:可选 graph 查询链接关系。
- 容错:异步增强,失败 fallback 无记忆。
- 规模化:Docker 部署,支持 CockroachDB 等分布式。
在多代理系统中,Memori 通过 process_id 实现协作记忆共享,例如研究代理提取事实,写作代理检索注入。这种方案已在企业级场景验证,支持 Agno/LangChain 框架,显著提升代理自主性。
部署 Memori 时,优先测试小规模:pip install memori,配置 env OPENAI_API_KEY,运行 quickstart 示例验证回忆准确率 > 95%。风险包括增强 LLM 幻觉(缓解:多模型投票)和 quota 限制(免费开发者账户无限额)。总体,Memori 提供生产就绪的内存层,推动代理从无状态向持续智能体演进。
资料来源:
- GitHub: https://github.com/MemoriLabs/Memori (README & examples)
- Memori 文档: https://memorilabs.ai/docs