为什么 AI Agent 需要记忆? 不用多说, 可阅读:
《AI Memory 赛道分析:大模型越来越聪明,记忆确成了瓶颈》
PowerMem 未来可能成为 OB 的杀手锏
Agent 的记忆可内置(指由AI Agent服务提供商包含的能力, 是个黑盒, 你不需要知道)也可外挂(第三方插件), mem0就是外挂插件, 当然它自身也提供了云存储服务, 将记忆存储在云端. 也支持使用你自己的数据库存储记忆.
记忆存储需要用到 embedding、chunk、图的三元素转换等.
记忆召回则分为语义、图、模糊搜索、全文检索、关键词搜索、混合搜索、重排等.
mem0 目前支持将记忆存储在 PostgreSQL 中, pgvector存储向量, age存储图.
但是图的支持不是特别友好, 用M3实现了一把.
MiniMax M3 还不错, 用它顺利给 mem0 增加了图存储. (如果需要, 可通过如下链接订购双双折上再9折.
https://platform.minimaxi.com/subscribe/token-plan?code=B9CalvTqij&source=link
)
进入正题, mem0增加了图存储功能代码已提交到: https://github.com/digoal/mem0
/goal 实现 mem0 原生图存储功能, 使用 postgresql apache age .
/goal 全面测试 mem0 原生图存储功能(postgresql apache age).
交付顺利
✅ 实现完成:mem0 原生图存储(Apache AGE)
核心代码(mem0 源码树)
┌───────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────┐
│ 文件 │ 作用 │
├───────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ mem0/graphs/base.py │ GraphStoreBase 抽象接口(add_node/edge/search/get_neighbors/delete/reset) │
├───────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ mem0/graphs/apache_age.py │ ApacheAGE 实现,复用 psycopg/psycopg2 池、agtype 解析、标识符注入防护 │
├───────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ mem0/configs/graphs/apache_age.py │ ApacheAGEConfig Pydantic 配置(与 PGVectorConfig 同等严格) │
├───────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ mem0/configs/base.py │ 新增 GraphStoreConfig + MemoryConfig.graph: Optional[...] 字段,默认 None │
├───────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ mem0/utils/factory.py │ GraphStoreFactory(与 VectorStoreFactory 同模式) │
├───────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│ mem0/memory/main.py │ Memory.graph_store 懒加载属性 + add_to_graph / search_graph 方法(同步 + 异步) │
└───────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────┘
测试(40 用例全过)
- tests/graphs/test_apache_age.py — 标识符安全、agtype 解析、3 种连接方式、9 个 Cypher 操作、Config 校验、Memory 接线、节点去重
文档
- docs/components/graph-stores/overview.mdx + dbs/apache_age.mdx
- docs/open-source/configuration.mdx 加 graph 示例
- docs/docs.json 加 "Graph Stores" 导航组
- docs/llms.txt 加 [OSS] 条目(docs-llms-txt-check.yml 验证通过)
- examples/graph-db-demo/apache_age_example.py 完整可运行示例
核心特性:单连接pgvector向量与ApacheAGE图双存储
回答你的关键问题 — 是,可以:
config = {
"vector_store": {"provider": "pgvector", "config": {…PG 连接…}},
"graph": {"provider": "apache_age", "config": {…同一 PG…}},
}
更进一步:通过 connection_pool 参数可让 PGVector 和 ApacheAGE 共享同一个 psycopg 连接池(无需第二个池)。test_init_with_shared_connection_pool 用例专门验证了这条路径。
使用真实环境测试并修复 bug:
变更:
- mem0/docs/integrations/claude-code-pgvector-age.mdx 自托管场景:mem0 的向量存储与图存储都跑在你自己的 PostgreSQL 实例上,向量用 pgvector、图用 apache_age 扩展。Claude Code 通过一个本地 stdio MCP 服务器访问 mem0。
- mem0/graphs/apache_age.py — 11 个 bug 修复(标识符校验、agtype_map 替换、cypher dollar-quoting、search SQL 回退、commit 传递、共享池保护等)
- mem0/configs/graphs/apache_age.py — ruff 格式化
- tests/graphs/test_apache_age.py — mock 测试适配新 SQL 形态
- tests/graphs/test_apache_age_integration.py (新增) — 23 个活集成测试
- docs/integrations/claude-code-pgvector-age.mdx (新增) — Claude Code + pgvector + AGE 配置手册
- docs/components/graph-stores/auto-extraction.mdx (新增) — 自动抽取限制说明 + 桥接 helper
- docs/llms.txt, docs/docs.json — 导航接入
这四者(Mem0、Claude Code、pgvector、Apache AGE)共同构成了一个现代高效、具备“长期记忆”与“工程落地能力”的 AI Agent 技术生态。
这四个组件不是竞争关系,而是上下游的上下层建筑关系:
┌────────────────────────────────────────────────────────┐
│ 【应用/开发层】 Claude Code │ <-- 开发者编写、调试 Agent 的 AI 终端工具
└──────────────────────────┬─────────────────────────────┘
│ 驱动 / 使用
┌──────────────────────────▼─────────────────────────────┐
│ 【记忆管理层】 Mem0 │ <-- 智能体记忆管理框架 (提供内存/向量/图谱三层记忆)
└──────────────────────────┬─────────────────────────────┘
│ 存储与检索实现 (提供持久化底座)
这里少画了一层数据处理层: embedding , 将原始文本转换成向量.
chunk 或 三元转化, 将原始文本打散或提取图的点、边、属性三元素再存入图中.
┌──────────────────────────┴─────────────────────────────┐
│ 【统一数据库底座】 PostgreSQL │
│ ┌───────────────────────────┬──────────────────────┐ │
│ │ pgvector (向量扩展) │ Apache AGE (图扩展) │ │ <-- 提供底层数据的存储、索引与混合召回
│ └───────────────────────────┴──────────────────────┘ │
└────────────────────────────────────────────────────────┘
┌──────────────────┐ stdio ┌───────────────────────┐ psycopg ┌────────────────────────────┐
│ Claude Code │ ───────────▶ │ mem0-local-mcp-server │ ───────────▶ │ PostgreSQL │
│ (CLI / Cowork) │ ◀─────────── │ (Python MCP server) │ ◀─────────── │ ├─ pgvector (向量) │
└──────────────────┘ └───────────────────────┘ │ └─ Apache AGE (图) │
└────────────────────────────┘
组件 | 核心角色 | 比喻 | 核心能力 |
|---|---|---|---|
Claude Code | Agent 开发者/执行环境 | 聪明的手和脑 | Anthropic 推出的命令行 AI 助手,可直接操作代码、运行测试。在开发 Agent 时,它是编写、测试和运行智能体逻辑的利器。 |
Mem0 | Agent 记忆管理引擎 | 记忆皮层(意识流) | 连接大模型与数据库。负责把用户的对话“脱水”提炼成事实(Facts),决定什么时候存、什么时候删、怎么查。 |
pgvector | 向量数据库扩展 | 右脑(模糊语义记忆) | PostgreSQL 的向量插件。将记忆转化为向量,实现“基于语义相似度”的模糊搜索(如:记得用户喜欢喝拿铁)。 |
Apache AGE | 图数据库扩展 | 左脑(逻辑实体关系) | PostgreSQL 的图插件。支持 Cypher 语法,将实体和关系连成网,实现“多跳逻辑推理”(如:A是B的经理,B在C项目组)。 |
AI Agent 最大的痛点是 “短时失忆” (每次对话都是陌生人)或 “上下文爆炸” (把所有历史揉进 Prompt 导致费用飙升且模型抓不住重点)。
工程化落地 Mem0 的核心目标是: 打造一个“低成本、高召回、具备自进化能力”的记忆体。
在实际工程中,建议采用统一的 PostgreSQL(同时挂载 pgvector 和 Apache AGE)作为单一真理源,简化运维成本。
┌──────────────────────────┐
│ 用户输入 (User Input) │
└────────────┬─────────────┘
│
▼
┌──────────────────────────┐
│ AI Agent (逻辑控制) │
└──────┬────────────▲──────┘
│ │ 3. 注入带记忆的 Prompt
1. 提取/检索 │ │
▼ │
┌──────────────────────────────────────────┐
│ Mem0 │
│ (记忆自适应调度:动态提取、评估、进化) │
└────────────────┬─────────────────────────┘
│
│ 2. 混合召回 (Hybrid Search)
▼
┌──────────────────────────────────────────┐
│ PostgreSQL 数据库 │
│ ┌──────────────────┬─────────────────┐ │
│ │ pgvector │ Apache AGE │ │
│ │ (向量: 相似度匹配) │ (图谱: 关系推理) │ │
│ └──────────────────┴─────────────────┘ │
└──────────────────────────────────────────┘
不要只依赖向量搜索。工程上,Mem0 通过底层技术支持原始记忆、向量、图谱三路召回:
pgvector) :负责捕捉用户情绪、偏好等模糊语境。Apache AGE) :负责精确锁死多实体关系,抑制大模型幻觉(Hallucination)。千万不要让用户在线等待记忆写入。
[User, travel_to, Beijing, next_week]),然后写入数据库。记忆不能只增不减,否则会产生垃圾数据和冲突。
Facts 的能力。在工程开发阶段,利用 Claude Code:
提升 AI Agent 体验的核心在于 “让智能体像人一样克制地记住关键信息” 。通过 Mem0 组织意识逻辑,用 PostgreSQL (pgvector + Apache AGE) 实现低成本、高内聚的“图文/向量双驱一体化”存储,最后用 Claude Code 提升开发全链路的效能。这就是目前业内走向生产级(Production-ready)Agent 的标准技术栈之一。