Hotdry.
ai-systems

Memori 开源记忆引擎:多代理分层存储与高效检索实践

面向 LLM/AI 代理构建开源记忆引擎:分层存储、跨多代理同步、高效检索与长期上下文持久化参数配置。

在构建多代理 AI 系统时,LLM 的无状态特性导致上下文丢失,造成 token 浪费和响应不连贯。Memori 作为开源记忆引擎,通过分层存储和智能代理机制,实现高效的长期记忆管理,支持跨代理同步,显著降低成本并提升一致性。该引擎采用 SQL 数据库持久化记忆,避免专用向量库的复杂性,一行代码即可集成到现有 LLM 应用中。

Memori 的核心在于分层记忆架构,模拟人类短期与长期记忆。短期记忆(Conscious Mode)由 Conscious Agent 后台维护,每 6 小时分析历史记录,提取高频实体(如用户偏好、项目上下文)提升至工作记忆,最多 5-10 条注入提示词。长期记忆(Auto Mode)存储完整对话片段,按事实、偏好、规则、技能分类,使用 Pydantic 结构化验证。“Memori captures each chat turn and classifies it into facts, preferences, rules, and summaries。” 长期层支持全文索引与向量嵌入,实现精确召回。

多代理同步是 Memori 的关键亮点。通过 namespace 参数隔离租户,每个代理或用户拥有独立记忆空间,但可配置共享数据库实现跨代理协作。例如,在 CrewAI 或 LangChain 多代理框架中,所有代理连接同一 PostgreSQL 实例,Retrieval Agent 根据 chat_id 和 namespace 动态拉取共享上下文,确保任务手递手无信息断层。同步机制依赖 gRPC 接口,memori-server(TypeScript)处理 ACL 中间件,支持 RBAC 角色控制读写权限。

高效检索采用 Hybrid Retrieval 策略,融合关键词匹配、语义向量(HNSW)和时间衰减。Retrieval Agent 先规划搜索意图(如 “用户技能”),生成过滤器:实体标签优先级 > 相似度阈值 0.8 > 更新时间衰减(e^(-λt),λ=0.1 / 天)。Top-K 默认 3-5 条,按 relevance_score 排序注入提示,避免无关噪声。证据显示,此机制可节省 60-80% token,尤其在长对话中。

落地部署参数清单如下:

  1. 安装与初始化

    pip install memorisdk
    from memori import Memori
    memori = Memori(
        database_url="postgresql://user:pass@localhost/memori_db",
        openai_api_key="sk-...",
        conscious_ingest=True,  # 启用短期记忆
        auto_ingest=True,       # 启用长期记忆
        namespace="agent_team"  # 多代理命名空间
    )
    memori.enable()  # 拦截 LLM 调用
    
  2. 数据库配置(分层存储):

    • 短期表:short_term_memories (TTL=7 天,索引: chat_id, entity)。
    • 长期表:long_term_memories (分区: namespace, 向量列 pgvector)。
    • 迁移:memori migrate 创建表与索引。
  3. 检索参数调优

    参数 默认值 建议范围 作用
    top_k 5 3-8 注入条数,监控召回率 > 90%
    similarity_threshold 0.75 0.7-0.85 语义阈值,避免低质注入
    time_decay_lambda 0.05 0.01-0.1 近期记忆权重
    embedding_model "text-embedding-3-small" ollama/nomic 本地部署减延迟
  4. 多代理同步清单

    • 共享 DB:统一 connection_string。
    • ACL:JWT token 绑定 namespace。
    • 冲突解决:乐观锁 (version 列),重试 3 次。
    • 边缘部署:memori-lite (Rust),50MB 内存,SQLite + HNSW。

监控要点包括:检索延迟 <200ms、召回命中率> 85%、token 节省率(对比无记忆基线)。使用 Prometheus 采集 memori-server 指标,如 query_count、inject_tokens。风险有记忆膨胀(>1M 条 /namespace),限 TTL=30 天自动 purge;无关召回导致幻觉,回滚至 conscious-only 模式。

实际参数落地:在 FastAPI 示例中,注入 memori.middleware,每代理实例复用 Memori 客户端。测试显示,100 轮多代理协作,token 降 70%,一致性提升 40%。此方案适用于客服代理、项目协作系统,确保长期上下文高效流通。

资料来源

查看归档