适合谁
- 希望数据完全自托管、不想把记忆送到云端的个人开发者
- 已有 PostgreSQL 经验、愿意自行运维数据库的用户
- 需要在 Claude Desktop / Claude Code 中获得跨会话记忆的人
- 想在自己的 AI 工具上叠加记忆层、又不想维护独立向量数据库的团队(单实例)
Memory Vault 是一个自托管、MIT 许可的 AI 记忆层,把 PostgreSQL + pgvector 的混合搜索、MCP 原生工具、知识图谱和本地 LLM 聊天打包在一起,主打数据不出本机。它的定位是数据库型记忆基础设施,而非文件系统上的笔记工具,适合已有 Postgres 运维能力的个人开发者,通过 MCP、REST 或仪表盘三种同等接口使用。需要留意的是:v1.0 为单实例、NER 仅英文、HTTP/SSE 传输默认关闭且无自带加密、团队功能仍属计划中的 PRO;项目由单人维护,响应时间不保证。
Memory Vault 是一个本地优先(local-first)的 AI 记忆层,核心是自托管的 PostgreSQL 16 + pgvector。它把向量嵌入、全文索引和关系型数据放在同一个数据库里,通过向量搜索与全文搜索(tsvector + GIN)配合 RRF(Reciprocal Rank Fusion)融合实现混合搜索,无需额外维护一个独立的向量数据库。
它通过 MCP 向 Claude 暴露六个工具(recall、remember、forget、purge_forgotten、move_memory、memory_status),让 Claude 在会话中可以读取和写入记忆;同时也提供 REST API 和内置 React 仪表盘(Chat、Search、Browse、Graph、Ingest、Stats 六个页面),三者都是平等的一等客户端。知识图谱使用 spaCy 的 en_core_web_sm 做实体抽取、用共现关系生成 related_to 边,全部在 CPU 上完成,不调用外部 LLM 或云服务。
项目以 MIT 许可证开源,作者为 MihaiBuilds(个人维护项目)。默认嵌入模型为 all-MiniLM-L6-v2(384 维,CPU 运行);本地 LLM 聊天在 v1.0 仅支持 LM Studio,并且每条回答都会展示其依据的记忆来源。MCP 默认走 stdio 传输;HTTP/SSE 传输需要在服务端显式设置 MCP_HTTP_ENABLED=true 才会开启,且始终要求 Bearer token。
方式一(Docker,推荐):git clone 仓库后进入目录,执行 docker compose up -d,迁移会在首次启动时自动运行;执行 docker compose exec app memory-vault status 验证。仪表盘位于 http://localhost:8000。
方式二(不用 Docker):需要 Python 3.11+、带 pgvector 扩展的 PostgreSQL 16,以及 uv(或 pip + venv)。依次执行 uv sync、uv run python -m spacy download en_core_web_sm、cp .env.example .env 并填入数据库凭据、uv run memory-vault migrate、uv run memory-vault status。
配置 MCP 客户端:先完成上面的非 Docker 安装,使 memory_vault 包可用,然后在 Claude Code 的项目 .mcp.json(或 ~/.claude/.mcp.json)中写入 install_config 所示的 server 块,填好 DB_HOST、DB_PORT、DB_NAME、DB_USER、DB_PASSWORD。若希望全局可用,还需把 memory-vault 加入 ~/.claude/settings.json 的 enabledMcpjsonServers。用 claude mcp list 验证是否显示 connected。Claude Desktop 则在 Settings → Developer → Edit Config 中加入同样的 server 块并重启。
Docker 用户注意:MCP server 运行在宿主机上(不在容器内),需要把 DB_HOST 设为 127.0.0.1,并在 docker-compose.yml 中暴露 5432 端口。远程访问可使用 HTTP/SSE:设置 MCP_HTTP_ENABLED=true,传输挂载在 /api/mcp,客户端连接 http://<host>:8000/api/mcp/sse,并需用 memory-vault token create 创建 token 作为 Bearer 头;用 MCP_HTTP_ALLOWED_HOSTS 声明允许的主机名(列表会替换默认值,默认仅 localhost 与 127.0.0.1)。
{
"mcpServers": {
"memory-vault": {
"command": "/path/to/memory-vault/.venv/bin/python",
"args": ["-m", "memory_vault.mcp"],
"env": {
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "memory_vault",
"DB_USER": "memory_vault",
"DB_PASSWORD": "memory_vault"
}
}
}
}