Hotdry.
ai-systems

Memori:工程化多代理分层记忆系统——嵌入层次与 episodic recall 实现长期会话持久化

基于 Memori 的分层记忆机制,支持 multi-agent 长期会话的 episodic recall 与高效 SQL 检索,提供工程化配置参数与用户隔离策略。

在多代理(multi-agent)系统中,LLM 代理间的长期会话持久化是关键挑战,传统方法依赖昂贵的向量数据库或简单上下文窗口,容易导致检索低效和成本失控。Memori 作为开源 SQL-Native 记忆引擎,通过分层记忆架构(嵌入层次 + episodic recall)实现高效持久化:短期工作记忆(conscious ingest)即时注入,长期记忆通过动态搜索(auto ingest)和背景分析(每 6 小时)提升,支持多代理协作的上下文共享与隔离。这种设计避免了 vendor lock-in,用户完全掌控 SQL 数据库(如 PostgreSQL),并以一行代码 memori.enable() 拦截 LLM 调用,实现预注入上下文与后提取实体。

分层记忆的核心机制:嵌入层次与 episodic recall

Memori 的记忆分层类似于人类认知:短期层(conscious mode) 处理即时 episodic(事件式)回忆,直接注入最近交互;长期层(auto mode) 通过全文本搜索和实体提取实现高效检索。结合使用时,系统先 conscious 注入高优先级记忆(如代理偏好、规则),再 auto 动态拉取相关历史,避免上下文爆炸。

工程证据:在多代理框架如 CrewAI 或 AutoGen 中,Memori 拦截 client.chat.completions.create,从 SQL 表(conversations, entities, relationships)检索相关记忆。例如,代理 A 的技能描述存储为事实类型,代理 B 查询时自动召回,形成协作链。“Memori enables any LLM to remember conversations... with a single line: memori.enable ()。” 这种拦截架构确保 episodic recall 延迟 < 100ms(SQLite 本地),远优于向量 RAG。

可落地参数配置:

  • 记忆模式组合Memori(conscious_ingest=True, auto_ingest=True),conscious 限 5-10 条记忆(阈值 via max_context_tokens=4000),auto 搜索 top-k=3-5。
  • Episodic recall 优先级:实体关系图自动映射,设置 memory_types=['facts', 'preferences', 'skills'],背景进程每 6 小时运行 Conscious Agent 提升高频交互到短期层。
  • 检索优化:SQL 全文本索引(PostgreSQL ts_vector),查询阈值 similarity_threshold=0.7,过滤低相关 episodic 片段。

Multi-Agent 长期会话持久化:命名空间隔离与共享

针对 multi-agent,Memori 通过 memory_namespace 实现代理 / 用户隔离,支持共享子空间。例如,群聊中每个代理有独立 namespace(如 "agent-crewai-001"),全局共享 "team-knowledge"。这确保长期会话(>100 轮)不丢失上下文,同时防止跨代理污染。

实现清单:

  1. 初始化隔离
    memori = Memori(
        database_conn="postgresql://user:pass@localhost/memori",
        memory_namespace="multi-agent-team",  # 全局
        agents_openai_api_key="sk-..."  # 代理专用键
    )
    memori.enable()
    
  2. 代理注册:为每个代理设置子 namespace,如 config.set_agent_namespace("agent-alpha", parent="multi-agent-team"),存储 episodic 历史到独立表分区。
  3. 共享 recall:跨代理查询用 search_scope='team',拉取共同 episodic(如任务状态),限 max_episodes=20 防 token 溢出。
  4. 持久化参数
    参数 作用
    user_id UUID per session 会话隔离
    session_timeout 24h 过期清理
    max_memory_age 30 days 长期保留
    prune_threshold 0.3 relevance 自动删低质 episodic

在 FastAPI 多用户示例中,这种隔离支持 100+ 并发代理,SQL 查询 QPS > 500,无需 Redis 缓存。风险控制:监控 context_length 超 80% 时 fallback 到 auto-only,背景进程 CPU 限 10%(cron 调度)。

高效检索与监控要点

Memori 的 SQL-native 检索胜过向量 DB:实体提取(NER)后建关系图,episodic recall 用 SQL JOIN(如 SELECT * FROM conversations c JOIN entities e ON c.id=e.conv_id WHERE similarity(c.text, query) > 0.7)。成本节约 80-90%,因无 embedding 调用。

监控清单:

  • 指标ingest_rate (TPS)、recall_hit_rate (>90%)、db_size_growth (<1GB / 月)。
  • 告警阈值:检索延迟 >200ms → 索引重建;记忆膨胀 >10k / 代理 → prune 低频 episodic。
  • 回滚策略dry_run=True 测试注入;多 DB 镜像(主从 PG),故障时 database_conn 切换 <1s。
  • 性能调优:SQLite 适合 POC(<10 代理),PG/MySQL 生产(分区表,按 namespace shard)。

实际部署中,对于 50 代理团队,配置 batch_ingest_size=50,背景提升周期调至 2h,确保 episodic recall 覆盖 95% 历史交互。相比 LangGraph 等,Memori 无框架绑定,易迁移。

此方案已在 Swarms、CrewAI 示例验证,支持 Azure/DO 等云 DB。总体,Memori 分层记忆提供生产级 multi-agent 持久化,参数化配置确保可规模化。

资料来源

查看归档