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:全文匹配+向量相似度+时间衰减。
检索流程:
- 查询嵌入生成(gpt-4o-mini)。
- DB搜索:limit=5,namespace隔离,relevance_scores排序。
- 注入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()
低开销同步原语
Memori使用SQL ACID事务确保同步一致,低开销通过:
- 连接池(pool_size=20)。
- 异步后台处理(background threads)。
- 命名空间(namespace="production")多租户隔离。
- 备份:直接SQLite dump,或pg_dump。
回滚策略:异常时fallback基本FTS搜索,禁用advanced agents。
工程化部署清单
- 环境:Python 3.8+,pip install memorisdk openai litellm。
- 配置(memori.json优先级最高):
{
"database": {"connection_string": "postgresql://...", "pool_size": 20},
"agents": {"model": "gpt-4o-mini", "api_key": "sk-..."},
"memory": {"namespace": "agent1", "retention_days": 30}
}
- 监控:日志structured,metrics包括memory_growth、retrieval_latency。
- 规模化:Neon/Supabase serverless PG,水平分片namespace。
- 测试:examples/basic_usage.py验证注入,query DB确认存储。
- 安全: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字)