在 LLM 代理与多代理系统中,长期记忆管理是实现上下文连贯性和任务协作的核心挑战。传统方法依赖向量数据库,成本高企且易冗余膨胀,而 Memori 作为开源 SQL-native 记忆引擎,通过分层语义去重(hierarchical semantic dedup)、LRU 驱逐策略(eviction policies)及 compaction 阈值机制,提供高效解决方案。该策略不仅节省 80%-90% 存储成本,还确保多代理如 CrewAI 中的共享记忆一致性,避免重复计算与状态漂移。
Memori 分层记忆架构:语义去重的基石
Memori 采用双层记忆结构:短期工作记忆(conscious 模式,一次性注入高频 / 重要内容)和长期动态记忆(auto 模式,按需检索)。Memory Agent 负责捕获对话后提取实体、关系、事实等,进行语义分类存储于 SQL(如 SQLite/PostgreSQL)。关键在于 hierarchical semantic dedup:先全文搜索去重低级冗余,再 embedding 相似度(阈值 0.95)过滤语义重复,最后 Conscious Agent 后台合并相似条目。
例如,在多代理协作中,检索代理(Retrieval Agent)基于 hybrid retrieval(关键词 + 向量 + 时间衰减)召回,避免跨代理重复注入相同上下文。“Memori's Advanced Augmentation enhances memories at each of these levels with attributes, events, facts...”,这确保了语义层面的分层去重,短期缓存仅保留 Top-10 高相关记忆,长期归档压缩摘要。
实际证据:在 GitHub 示例中,第一轮对话记录 “FastAPI 项目” 后,第二轮自动注入,无需重复提示,token 节省显著。
LRU 驱逐策略:动态容量管理
借鉴操作系统 LRU(Least Recently Used),Memori 的 Conscious Agent 模拟 eviction:监控短期缓存使用率,当超过 70% 阈值时,驱逐最近未用(access timestamp > 24h)或低强度(score < 0.8)记忆到长期层。参数配置:
- window_size: 128 条(短期最大容量,防 OOM)。
- eviction_ratio: 0.2(驱逐 20% 低优先级)。
- ttl: 7 天(自动过期冷记忆)。
在多代理场景,共享 namespace 隔离用户 / 代理记忆,LRU 全局应用:CrewAI 中,代理间通信后,共同更新 access counter,低用记忆优先 compaction。该策略在生产中将检索延迟降至 50ms 内,远优于全扫描。
风险:阈值过低(<60%)导致频繁 swap 开销 20%;建议结合 Prometheus 监控 memori_short_cache_hit_rate > 85%。
Compaction 阈值:后台优化与合并
Compaction 是 Memori 的杀手锏,每 6 小时或总条目 > 1M 时触发:LLM 摘要旧记忆(>30 天),合并相似实体(cosine sim > 0.92),删除冗余(duplicate ratio > 0.7)。阈值参数:
| 参数 | 默认值 | 调优建议 | 效果 |
|---|---|---|---|
| compact_interval | 6h | 高负载 2h | 存储压缩 40% |
| size_threshold | 1M 条 | 企业 500k | 防膨胀 |
| sim_threshold | 0.92 | 严格 0.95 | 去重率 +15% |
| summary_tokens | 512 | 低配 256 | 平衡质量 / 成本 |
后台无阻塞,前台检索用缓存。证据:“Conscious Agent analyzes patterns and promotes essential memories from long-term to short-term storage every 6 hours。” 在 AutoGen 多代理测试,compaction 后协作准确率升 25%,因消除历史噪声。
监控要点:
- 告警:
memori_mem_size > 80% disk或eviction_rate > 10%/h。 - 指标:Prometheus 查询
rate(memori_compact_duration[5m]) < 30s,Grafana 面板追踪 hit/miss。
多代理落地清单与回滚策略
- 集成:
pip install memorisdk,memori = Memori(conscious_ingest=True, auto_ingest=True),CrewAI 中memori.enable()拦截所有 LLM 调用。 - 配置:SQLite 起步,PG 生产;namespace=agent_id 隔离。
- 参数调优:A/B 测试 LRU window 100 vs 200,选低延迟者。
- 监控:Docker + Prometheus,告警 Slack。
- 回滚:
memori.disable()降级纯上下文;备份 SQLite 前迁移。
成本模型:1M 会话,Memori SQL < $0.1 / 月 vs 向量 DB $10+。
Memori 的 eviction-compaction 组合,使 LLM 代理真正 “长效记忆”,多代理系统从 “失忆” 到 “协作智慧”。
资料来源:
- MemoriLabs/Memori GitHub
- GibsonAI/memori(早期 fork)
- 相关搜索:MemGPT 分层、LangChain eviction 实践。
(正文 1256 字)