Enables the generation of Mermaid diagram code to visualize knowledge graph entities and their relationships.
Integrates with PostgreSQL and the pgvector extension to provide persistent storage and semantic search capabilities for AI memory.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Memory MCPWhat did I mention in previous chats about my favorite programming languages?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Memory MCP
为 AI 助手提供持久化语义记忆与知识图谱能力的 MCP 服务器
A Model Context Protocol server providing persistent semantic memory and knowledge graph capabilities for AI assistants
🎯 Why This Project?
AI 助手(如 Claude、ChatGPT)在对话结束后会"失忆"。本项目通过 MCP (Model Context Protocol) 为 AI 提供:
跨会话记忆:用户偏好、历史对话、学习到的事实都能持久保存
语义检索:不是简单的关键词匹配,而是理解"意思相近"的内容
知识图谱:构建实体之间的关系网络,支持复杂推理
✨ 核心特性
🧠 语义记忆系统
特性 | 说明 |
向量嵌入 | 使用阿里云 DashScope |
HNSW 索引 | pgvector 的高性能近似最近邻搜索,毫秒级响应 |
混合检索 | 向量相似度 (70%) + 关键词匹配 (30%) 加权融合 |
记忆衰减 | 基于访问频率和时间的自动权重调整,防止信息过载 |
LRU 缓存 | 嵌入向量缓存(最大 1000 条),减少 80%+ API 调用 |
版本历史 | 完整的变更审计日志,支持回溯 |
记忆衰减算法:
🕸️ 知识图谱引擎
特性 | 说明 |
实体管理 | 创建带类型和观察记录的实体节点 |
关系追踪 | 定义实体间的有向关系(如 |
双向关系 | 自动创建反向关系( |
传递推理 | 递归查询多跳关系路径(A→B→C→D) |
语义搜索 | 基于向量相似度搜索实体 |
Mermaid 导出 | 生成可视化图谱代码 |
支持的反向关系映射:
🏗️ 系统架构
🚀 快速开始
环境要求
Node.js >= 18.0.0
PostgreSQL >= 14 + pgvector 扩展
阿里云 DashScope API Key(用于生成嵌入向量)
安装步骤
MCP 客户端配置
Claude Desktop (claude_desktop_config.json):
Windsurf (mcp_config.json):
🛠️ 工具详解
记忆操作 (Memory Tools)
memory_create - 创建记忆
参数 | 类型 | 必填 | 说明 |
| string | ✅ | 记忆类型: |
| object | ✅ | 记忆内容(JSONB 存储,支持任意结构) |
| string | ✅ | 来源: |
| string[] | ❌ | 标签数组,用于过滤 |
| number | ✅ | 置信度 0.0-1.0,影响检索权重 |
memory_search - 语义搜索
工作原理:
将查询文本转换为 1024 维向量
使用 HNSW 索引计算余弦相似度
按相似度排序返回结果
异步更新访问统计(
access_count,last_accessed_at)
memory_update - 更新记忆
特性:内容变更时自动重新生成嵌入向量
memory_list - 列出记忆
memory_delete - 删除记忆
注意:删除操作会记录到 memory_history 表
知识图谱操作 (Graph Tools)
graph_create_entities - 创建实体
特性:
自动为实体生成嵌入向量(批量处理)
同名实体会合并观察记录(UPSERT)
graph_create_relations - 创建关系
自动双向关系:创建 A uses B 时自动创建 B is_used_by A
graph_add_observations - 添加观察
graph_search_nodes - 搜索实体
参数 | 说明 |
| 关键词匹配(名称、类型、观察记录) |
| 向量相似度搜索 |
graph_open_nodes - 打开指定实体
返回实体详情及其所有关联关系
graph_read - 读取完整图谱
返回所有实体和关系,适合小规模图谱
graph_delete_* - 删除操作
graph_delete_entities: 删除实体(级联删除关系)graph_delete_relations: 删除指定关系graph_delete_observations: 删除实体的特定观察记录
📊 数据库设计
表结构
memories - 语义记忆表
列名 | 类型 | 说明 |
| UUID | 主键,自动生成 |
| TEXT | 记忆类型 |
| JSONB | 结构化内容 |
| TEXT | 来源标识 |
| vector(1024) | 嵌入向量 |
| TEXT[] | 标签数组 |
| FLOAT | 置信度 |
| INT | 访问次数 |
| TIMESTAMPTZ | 最后访问时间 |
| TIMESTAMPTZ | 创建时间 |
| TIMESTAMPTZ | 更新时间 |
entities - 实体表
列名 | 类型 | 说明 |
| UUID | 主键 |
| TEXT | 实体名称(唯一) |
| TEXT | 实体类型 |
| TEXT[] | 观察记录数组 |
| vector(1024) | 可选,用于语义搜索 |
relations - 关系表
列名 | 类型 | 说明 |
| UUID | 主键 |
| TEXT | 源实体(外键) |
| TEXT | 目标实体(外键) |
| TEXT | 关系类型 |
memory_history - 历史记录表
列名 | 类型 | 说明 |
| UUID | 关联的记忆 ID |
| JSONB | 变更时的内容快照 |
| TEXT |
|
| FLOAT | 变更前置信度 |
| FLOAT | 变更后置信度 |
索引策略
索引 | 类型 | 用途 |
| HNSW | 向量相似度搜索 |
| GIN | 标签数组包含查询 |
| B-tree | 类型过滤 |
| HNSW (条件) | 实体语义搜索 |
| B-tree | 关系查询 |
触发器与函数
名称 | 类型 | 说明 |
| Trigger | 自动更新 |
| Trigger | 自动记录变更历史 |
| Function | 计算记忆衰减权重 |
| Function | 更新访问统计 |
| Function | 记录变更历史 |
⚙️ 配置参考
环境变量
变量 | 必填 | 默认值 | 说明 |
| ✅ | - | PostgreSQL 连接字符串 |
| ✅ | - | 阿里云 DashScope API Key |
| ❌ |
| 嵌入 API 端点 |
| ❌ |
| 嵌入模型 |
| ❌ |
| 向量维度 |
| ❌ |
| 数据库连接池大小 |
| ❌ |
| 空闲连接超时 (ms) |
| ❌ |
| 默认搜索结果数 |
| ❌ |
| 调试日志路径 |
示例 .env
🔧 开发指南
项目结构
📈 性能优化
本项目已实现以下优化(详见 ROADMAP.md):
优化项 | 效果 |
嵌入缓存 | 相同文本重复查询时,API 调用减少 80%+ |
HNSW 索引 | 向量搜索从 O(n) 降至 O(log n) |
混合检索 | 召回率提升,避免纯语义搜索的遗漏 |
批量嵌入 | 创建多个实体时,单次 API 调用 |
异步访问统计 | 不阻塞搜索响应 |
📜 许可证
本项目采用 MIT License 开源。
🙏 致谢
pgvector - PostgreSQL 向量相似度搜索扩展
Model Context Protocol - MCP 协议规范
Aliyun DashScope - 嵌入向量 API 提供商
🤝 贡献
欢迎提交 Issue 和 Pull Request!