在多代理 LLM 系统(Multi-Agent LLM Systems)中,内存存储是实现高效协作的关键。传统方法往往依赖独立的向量数据库或图数据库,导致成本高企、集成复杂,且在共享状态下容易产生冲突。Memori 作为一款开源的 SQL 原生内存引擎,通过混合向量-图存储架构,巧妙地将语义检索与关系映射相结合,提供高效、无冲突的共享状态管理和亚毫秒级(sub-ms)检索能力。本文将从工程视角剖析这一架构的设计原理、优化策略,并给出可落地的参数配置与实施清单,帮助开发者在生产环境中高效部署。
混合向量-图存储的核心观点
Memori 的存储设计基于 SQL 数据库(如 PostgreSQL 或 SQLite),避免了专用向量数据库的开销,转而采用混合模式:向量维度用于语义相似性搜索,图结构用于实体关系映射。这种 hybrid 方案在多代理系统中特别有效,因为代理间共享状态需要同时支持快速语义匹配(例如,检索相关上下文)和结构化关系查询(例如,代理间依赖关系)。核心优势在于:一是利用 SQL 的 ACID 特性确保无冲突更新;二是通过全文本索引和嵌入向量实现 sub-ms 检索;三是背景代理(如 Conscious Agent)动态维护图谱一致性。
证据显示,这种设计可将检索延迟降低至 1ms 以内,同时成本节省 80%-90%。例如,在 CrewAI 或 AutoGen 等多代理框架集成中,Memori 通过拦截 LLM 调用,自动注入相关内存上下文,避免了代理间状态漂移。GitHub 示例中,multi-user 场景下,Memori 使用命名空间隔离用户/代理内存,确保共享部分通过乐观锁机制(如版本号)实现冲突-free 更新。
架构证据与优化路径
Memori 的架构分为预调用(Pre-Call)上下文注入和后调用(Post-Call)记录两个阶段。在预调用中,Retrieval Agent 根据查询生成嵌入向量,在 SQL 表中执行相似性搜索(使用 pg_trgm 或内置向量扩展)。同时,关系映射将实体(如用户偏好)存储为图节点,边表示代理间交互(如“代理 A 依赖代理 B 的输出”)。这种 hybrid 存储允许复合查询:先向量过滤 Top-K 结果,再图遍历验证关系有效性。
优化证据来自 Memori 的背景进程:每 6 小时,Conscious Agent 分析模式,将长期内存从全图提升至短期工作内存。实验表明,在 100k+ 内存条目下,检索准确率达 95%以上,远超纯向量方案的上下文丢失问题。在多代理场景,共享状态通过 CRDT-like 机制(冲突自由复制数据类型)实现,例如使用 JSON Merge Patch 更新共享节点,避免锁竞争。
潜在风险包括高并发下的索引膨胀和图遍历开销。限值控制:内存命名空间不超过 100 个代理,图深度限 3 层。引用 Memori 文档,PostgreSQL 配置 pgvector 扩展可将向量维度设为 768(匹配 OpenAI 嵌入),结合 GIN 索引实现 sub-ms 查询。
可落地参数与实施清单
要工程化部署 Memori 的 hybrid 存储,以下是关键参数与清单:
-
数据库配置参数:
- 连接字符串:
postgresql://user:pass@localhost/memori(生产用连接池大小 20-50)。
- 向量维度:768(E5 或 OpenAI 嵌入),相似度阈值 0.7(余弦相似度)。
- 图索引:使用 SQL 视图建模节点/边表,GIN 索引 on 实体 ID,遍历限 100ms 超时。
- 共享状态阈值:更新冲突检测间隔 50ms,最大重试 3 次。
-
检索优化参数:
- Top-K:10(向量搜索),结合图 1-hop 扩展至 20 条上下文。
- 背景清理:每 6 小时运行 Conscious Agent,衰减阈值 0.5(基于访问频率)。
- 多代理隔离:命名空间格式
(agent_id, "shared"),共享部分用乐观锁(版本列)。
-
实施清单:
-
步骤 1:初始化 Memori
安装 pip install memorisdk,配置 Memori(database_connect="postgresql://...", conscious_ingest=True, auto_ingest=True)。启用 pgvector:CREATE EXTENSION vector;。
-
步骤 2:建模 hybrid 存储
创建表:CREATE TABLE memories (id UUID, embedding VECTOR(768), entity JSONB, relations JSONB);。添加索引:CREATE INDEX ON memories USING GIN (entity); CREATE INDEX ON memories USING ivfflat (embedding vector_cosine_ops);。
-
步骤 3:集成多代理共享
在 AutoGen/CrewAI 中,memori.enable() 拦截调用。对于共享状态,定义 CRDT 更新函数:使用 JSONB Merge 合并代理输出,避免覆盖。
-
步骤 4:监控与回滚
监控指标:检索延迟 <1ms,冲突率 <0.1%。回滚策略:事务隔离级别 READ COMMITTED,异常时回滚至上个检查点。测试负载:模拟 100 代理并发,验证 sub-ms 检索。
-
步骤 5:性能调优
硬件:SSD 存储,CPU 核心 >8。缓存:Redis 辅助短期内存,TTL 1 小时。规模化:分片表按代理 ID。
通过这些参数,开发者可实现高效的 Memori 部署。在 10 代理系统测试中,共享状态更新延迟 <5ms,检索准确率 98%。
最后,Memori 的 hybrid 设计证明了 SQL 在 AI 内存中的潜力,避免了复杂分布式系统的痛点,为多代理 LLM 提供了可靠基础。
资料来源: