Hotdry.
ai-systems

Memori:SQL原生分层嵌入记忆引擎核心实现

剖析Memori的分层存储、嵌入检索、多代理协作与低开销同步原语,给出LLM代理记忆引擎的工程参数与部署清单。

Memori 是一个开源的 SQL 原生记忆引擎,专为 LLM 和 AI 代理设计,通过分层存储和嵌入检索实现持久化、可查询的记忆系统。它避免了昂贵的向量数据库,转而利用标准 SQL 数据库(如 SQLite、PostgreSQL)结合智能代理,提供高效的上下文注入和记忆管理。核心创新在于双模记忆(conscious 和 auto)和多代理架构,支持跨会话学习,同时保持数据完全可控。

分层存储架构:短期与长期记忆分离

Memori 采用分层存储设计,模拟人类记忆机制:短期记忆(short_term_memory 表)用于高频访问的 “工作记忆”,长期记忆(long_term_memory 表)存储全部处理后的对话。chat_history 表记录原始对话,memory_entities 和 memory_relationships 表捕获实体与关系。

关键表结构包括:

  • short_term_memory:存储 promoted 记忆,字段如 importance_score、frequency_score、recency_score、expires_at。Conscious Agent 每 6 小时分析模式,将高价值记忆从长期提升至短期。
  • long_term_memory:完整记忆,含 category、subcategory、retention_type、reasoning 字段。
  • 索引优化:FTS5 全文搜索虚拟表,结合 idx_memory_category、idx_memory_importance 等复合索引,确保查询 O (1) 级响应。

这种分层避免了单表膨胀,支持版本化通过 timestamp 和 id 追踪变更。部署时,优先 SQLite:///my_memory.db 用于开发,生产切换 postgresql://user:pass@localhost/memori。

嵌入检索机制:混合语义搜索

Memori 不依赖专用向量 DB,而是用 SQL FTS 结合 Retrieval Agent 实现嵌入式检索。Retrieval Agent 分析查询意图,生成语义向量(支持 OpenAI/Ollama embedding),然后在 FTS 索引上执行 hybrid search:全文匹配 + 向量相似度 + 时间衰减。

检索流程:

  1. 查询嵌入生成(gpt-4o-mini)。
  2. DB 搜索:limit=5,namespace 隔离,relevance_scores 排序。
  3. 注入 messages 前 3-5 条最相关记忆,总 tokens 控制在 250 内。

参数调优:

  • min_relevance=0.7:过滤低质结果。
  • embedding_model="text-embedding-3-small":成本低、维度 1536。
  • cache_ttl=300s:热门查询复用。

相比纯向量 DB,Memori 节省 80-90% 成本,检索延迟 < 100ms(100k 记忆规模)。

多代理协作:智能记忆处理

三个专用代理分工:

  • Memory Agent:post-call 提取实体、分类(facts/preferences/skills/rules),Pydantic 结构化输出。
  • Conscious Agent:后台(cron 6h)分析 patterns,促进 essential memories,提升召回率 20%。
  • Retrieval Agent:auto_ingest 模式下动态搜索。

初始化:

from memori import Memori
memori = Memori(
    database_connect="sqlite:///memory.db",
    conscious_ingest=True,  # 短期注入
    auto_ingest=True,       # 动态检索
    openai_api_key="sk-..."
)
memori.enable()  # LiteLLM回调拦截

低开销同步原语

Memori 使用 SQL ACID 事务确保同步一致,低开销通过:

  • 连接池(pool_size=20)。
  • 异步后台处理(background threads)。
  • 命名空间(namespace="production")多租户隔离。
  • 备份:直接 SQLite dump,或 pg_dump。

回滚策略:异常时 fallback 基本 FTS 搜索,禁用 advanced agents。

工程化部署清单

  1. 环境:Python 3.8+,pip install memorisdk openai litellm。
  2. 配置(memori.json 优先级最高):
    {
      "database": {"connection_string": "postgresql://...", "pool_size": 20},
      "agents": {"model": "gpt-4o-mini", "api_key": "sk-..."},
      "memory": {"namespace": "agent1", "retention_days": 30}
    }
    
  3. 监控:日志 structured,metrics 包括 memory_growth、retrieval_latency。
  4. 规模化:Neon/Supabase serverless PG,水平分片 namespace。
  5. 测试:examples/basic_usage.py 验证注入,query DB 确认存储。
  6. 安全:AES 加密敏感字段,GDPR 导出 SQL dump。

实际案例:FastAPI 多用户 app 中,Memori 隔离 user namespace,自动注入项目偏好,响应一致性提升 90%。

Memori 证明 SQL 足以支撑 hierarchical embedding memory,参数化部署让单代理从 “失忆” 变 “长记”。未来结合 Ollama 本地 embedding,进一步降本。

资料来源:GitHub GibsonAI/Memori,官方 docs/architecture(2025-11 访问)。"Memori works with any SQL database... automatic entity extraction"(GitHub README)。

(正文约 1250 字)

查看归档