06-Mem0 的 OpenMemory 全栈记忆平台
Mem0 的 OpenMemory 全栈记忆平台
学习目标
本章分析 OpenMemory 如何提供完整的记忆管理平台,包括后端 API、前端 UI 和 MCP Server 集成。你将了解:
- OpenMemory 的整体架构与技术栈
- FastAPI 后端 + MCP Server 的实现
- Next.js 15 前端与 API 的交互
- MCP 协议在记忆管理中的应用
前置知识
本章涉及 MCP 协议的通用原理,建议先阅读:
下文假设你已理解 MCP 的基本概念,直接聚焦 OpenMemory 的具体实现。
项目实践
整体架构
| 组件 | 技术栈 | 用途 |
|---|---|---|
| API | FastAPI + Alembic | 记忆 CRUD + MCP Server |
| UI | Next.js 15 + React 19 + Radix UI + TailwindCSS | 可视化记忆管理 |
| 向量存储 | Qdrant | 记忆向量化存储与检索 |
API 层
OpenMemory 的 API 层同时提供 REST API 和 MCP Server:
REST API:标准的 CRUD 端点,供前端 UI 调用。
MCP Server:通过 Model Context Protocol 暴露记忆管理工具:
| MCP 工具 | 用途 |
|---|---|
add_memory | 添加新记忆 |
search_memories | 搜索记忆 |
get_memories | 获取记忆列表 |
get_memory | 获取单条记忆 |
update_memory | 更新记忆 |
delete_memory | 删除记忆 |
delete_all_memories | 删除所有记忆 |
delete_entities | 删除实体 |
list_entities | 列出实体 |
AI 编辑器(Claude Code、Cursor)通过 MCP 协议连接到 OpenMemory Server,直接在编码过程中管理记忆。
UI 层
前端技术栈:
- Next.js 15:服务端渲染 + App Router
- React 19:最新 React 特性
- Radix UI:无障碍的 UI 组件
- Redux Toolkit:状态管理
- TailwindCSS:样式
- Recharts:数据可视化
Docker Compose 启动
cd openmemorydocker-compose up# Qdrant: localhost:6333# API (MCP): localhost:8765# UI: localhost:3000一键启动完整栈:Qdrant 向量存储 + API 服务 + 前端 UI。
与主 Server 的区别
| 维度 | 主 Server (server/) | OpenMemory (openmemory/) |
|---|---|---|
| 定位 | API 服务,SDK 的托管版本 | 全栈平台,含 UI 和 MCP |
| 向量存储 | PostgreSQL/pgvector | Qdrant |
| 图谱 | Neo4j | 无(使用 Qdrant 做实体链接) |
| 前端 | 无 | Next.js 15 UI |
| MCP | 无 | 内置 MCP Server |
| 认证 | 内置 | 内置 |
OpenMemory 是更轻量的自托管方案——只需要 Qdrant,不需要 PostgreSQL + Neo4j。
问题与规避
| 问题 | 对策 |
|---|---|
| Docker 端口冲突 | docker-compose.yml 中可自定义端口 |
| Qdrant 连接失败 | Docker Compose 确保 Qdrant 先启动 |
| MCP 协议版本不兼容 | 使用标准 MCP SDK |
设计取舍
为什么 OpenMemory 使用 Qdrant 而非 pgvector?
优势:
- Qdrant 的向量检索性能优于 pgvector
- Qdrant 支持 payload 过滤,适合实体链接场景
- 单服务部署(不需要 PostgreSQL)
代价:
- 需要额外的 Qdrant 服务(不像主 Server 内嵌在 PostgreSQL 中)
- 无法在同一事务中操作关系数据和向量数据
参考来源
- Mem0 源码:
openmemory/目录 - MCP 规范:https://modelcontextprotocol.io/