Hotdry.
ai-systems

Memori:LLM 代理记忆引擎构建指南

一行代码集成 Memori,为 LLM 和代理构建 SQL 原生持久记忆,支持语义检索、多代理共享及长程上下文管理,提供工程化参数与落地清单。

在构建 LLM 代理系统时,长程上下文管理和状态持久化是核心挑战。传统方法依赖昂贵的向量数据库或复杂缓存,Memori 则以 SQL 原生方式解决,提供一行代码集成、一键持久记忆。Memori 通过拦截 LLM 调用,实现预注入上下文和后提取存储,支持 OpenAI、Anthropic、LangChain 等框架,使用 SQLite、PostgreSQL 等标准数据库,确保零供应商锁定和 80-90% 成本节省。

Memori 核心集成与配置参数

Memori 的启动极其简洁:from memori import Memori; memori = Memori(); memori.enable()。这行代码自动拦截所有 LLM 客户端调用,如 OpenAI 的 client.chat.completions.create。关键参数包括:

  • database_conn:数据库连接字符串,例如 sqlite:///my_memory.dbpostgresql://user:pass@localhost/memori。推荐生产环境用 PostgreSQL,支持高并发和全文搜索索引。
  • conscious_ingest=True:启用 “意识模式”,实现短期工作记忆一键注入。Memori 会从数据库检索最近交互,优先注入高相关实体(如用户偏好、项目上下文)。
  • auto_ingest=True:启用 “自动模式”,每查询动态搜索相关记忆,避免上下文过载。结合使用时,意识模式处理即时上下文,自动模式补足历史深度。
  • openai_api_key:LLM 后端 API 密钥,支持环境变量注入,避免硬编码。

使用 ConfigManager 进一步优化:config = ConfigManager(); config.auto_load(),从环境变量加载如 MEMORI_DATABASE_CONNECTION_STRINGMEMORI_MEMORY_NAMESPACE="production",实现多租户隔离。

落地清单:

  1. 安装:pip install memorisdk(Python 3.8+)。
  2. 初始化客户端:client = OpenAI(); memori.enable()
  3. 第一轮对话:用户输入 “构建 FastAPI 项目”,Memori 记录实体(FastAPI、项目)。
  4. 后续对话:“添加认证”,Memori 自动注入 “FastAPI 项目” 上下文,LLM 无缝续接。

此机制确保代理 “记住” 跨会话状态,例如个人助理记住用户 FastAPI 偏好,而无需手动提示工程。

语义向量存储与关联检索机制

Memori 不依赖外部向量库,而是 SQL 内置全文搜索和实体关系映射。架构分为三阶段:

  1. Pre-Call 检索:拦截调用前,Retrieval Agent(自动模式)或 Conscious Agent(意识模式)查询数据库。检索优先级:实体匹配 > 语义相似 > 时间衰减。注入上下文限制在 4K-8K token,避免幻觉。
  2. Post-Call 提取:Memory Agent 解析响应,分类存储为 facts(事实)、preferences(偏好)、skills(技能)、rules(规则)、context(上下文)。例如,“用户喜欢 FastAPI” 存为 preference 实体,与 “认证模块” 关联。
  3. 背景处理:每 6 小时,Conscious Agent 分析模式,促进长期记忆(如将临时事实升级为规则)。

更新 / 遗忘机制内置:新交互覆盖旧实体(时间戳优先);遗忘通过 TTL(默认 30 天,可调 memory_ttl_hours=720)或手动 memori.forget(entity_id)。多代理共享:通过 namespace 分隔,如 CrewAI 示例中,多个代理共享 “团队项目” 内存空间。

参数优化:

  • 检索 Top-K:默认 5,调至 3 减 token 消耗。
  • 上下文温度阈值context_relevance_threshold=0.7,低于阈值记忆不注入。
  • 批量注入大小max_context_chunks=4,每 chunk 512 token。

多代理共享内存与状态管理

Memori 天然支持多代理场景,如 AutoGen、CrewAI、Swarms。示例:FastAPI 多用户应用中,每个用户 ID 映射独立 namespace,代理间通过共享 namespace 协作。

工程化落地:

  • 隔离策略memori = Memori(memory_namespace=f"user_{user_id}"),防止跨用户泄露。
  • 共享机制:群聊代理用 group_namespace="team_project",检索时融合多源记忆。
  • 状态同步:背景任务每 10 分钟同步(sync_interval=600),支持分布式部署。

监控要点:

  • SQL 查询延迟:<50ms,PostgreSQL 加 GIN 索引全文搜索。
  • Token 消耗:日志 memori_injected_tokens,警报 >2K / 调用。
  • 记忆饱和:监控表行数,>10 万 触发压缩(删除低频实体)。
  • 回滚策略:测试环境用 SQLite 快照;生产双写主从,失败回滚。

性能与扩展参数清单

生产部署参数汇总:

参数 默认值 推荐生产值 作用
conscious_ingest False True 短期记忆注入
auto_ingest False True 动态检索
max_context_length 8192 4096 Token 上限
relevance_threshold 0.5 0.7 注入阈值
background_interval 21600s 3600s 分析周期
memory_ttl_days 30 90 遗忘周期

成本估算:SQLite 单实例 <1$/ 月;PostgreSQL Neon/Supabase 免费阶梯足 1000 用户。相比 Pinecone 等,节省 80%。

实际案例:个人日记 demo 中,Memori 追踪情绪模式,检索 “过去一周心情” 历史;研究员代理融合 web 搜索与记忆,避免重复。

Memori v3 即将支持企业级内存织物,但当前版已足代理生产。通过这些参数与机制,开发者可快速构建可靠长程记忆系统,提升代理智能与稳定性。

资料来源: [1] GitHub Memori 仓库:一行代码启用持久记忆,支持 SQL 存储与多框架集成。https://github.com/GibsonAI/Memori [2] 官方文档:详细架构与示例。https://memorilabs.ai/docs

查看归档