← 返回目录
M

Memory Vault

社区
自托管的 AI 记忆数据库,混合搜索 + 知识图谱,MCP 原生。
GitHub 源仓库 ↗
★ 62 Stars 分类 · 数据库 热门
56FMRS · C

Memory Vault 是一个自托管、MIT 许可的 AI 记忆层,把 PostgreSQL + pgvector 的混合搜索、MCP 原生工具、知识图谱和本地 LLM 聊天打包在一起,主打数据不出本机。它的定位是数据库型记忆基础设施,而非文件系统上的笔记工具,适合已有 Postgres 运维能力的个人开发者,通过 MCP、REST 或仪表盘三种同等接口使用。需要留意的是:v1.0 为单实例、NER 仅英文、HTTP/SSE 传输默认关闭且无自带加密、团队功能仍属计划中的 PRO;项目由单人维护,响应时间不保证。

可靠性
9/20
安全与权限
12/20
维护活跃度
11/20
文档质量
14/20
安装易用性
10/20
查看 FMRS 评分方法 →

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。

工具能力

recall
使用混合搜索(向量 + 全文 + RRF)检索记忆。
remember
写入一条新记忆,自动进行分类和嵌入。
forget
按 chunk ID 对一条记忆执行软删除。
purge_forgotten
永久删除已遗忘超过 N 天的记忆。
move_memory
把一条记忆移动到另一个 space,并重建其图谱条目。
memory_status
查看数据库健康状态、chunk 数量与嵌入模型信息。

安装接入

方式一(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)。

claude_desktop_config.json
{
  "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"
      }
    }
  }
}

选型与风险

适合谁

  • 希望数据完全自托管、不想把记忆送到云端的个人开发者
  • 已有 PostgreSQL 经验、愿意自行运维数据库的用户
  • 需要在 Claude Desktop / Claude Code 中获得跨会话记忆的人
  • 想在自己的 AI 工具上叠加记忆层、又不想维护独立向量数据库的团队(单实例)

不适合谁

  • 需要多用户 / 多租户或团队协作功能的组织(v1.0 为单实例,团队功能属计划中的 PRO)
  • 希望零运维、开箱即用云端服务的用户
  • 需要多语言实体抽取的项目(NER 仅支持英文)
  • 不想运行和维护 PostgreSQL 的用户
  • 要求传输加密由服务自身提供的场景(需自行加反向代理或隧道)

所需权限

  • 对 PostgreSQL 数据库的读写权限(DB_USER 需要读写 memory vault 库)
  • 数据库密码(DB_PASSWORD 为敏感值)
  • MCP stdio 模式下以本地进程身份读取环境变量并连接数据库
  • 启用 HTTP/SSE 时需在端口上监听并校验 Bearer token
  • 仪表盘在浏览器 localStorage 中存储 bearer token

风险与副作用

  • MCP 走 stdio 时数据库凭据以明文写在客户端配置文件的 env 中
  • HTTP/SSE 传输没有自带的传输加密,token 在请求头中明文传输,跨不可信网络必须自行加 TLS
  • 若把容器端口发布到 0.0.0.0,整个网络都可能访问到记忆库
  • API_AUTH_ENABLED=false 只对 REST API 生效,会开放 REST 接口(MCP 传输仍返回 401),属于仅限本地开发的便利选项
  • 知识图谱存在已知局限:实体无模糊匹配(PostgreSQL 与 Postgres 是两个实体)、编辑后不重新抽取、同一名称可能同时成为 Person 与 Project
  • 项目为单人维护,PR 审核与响应时间取决于维护者可用时间

常见排障

  1. 启动时报 ModuleNotFoundError:虚拟环境未安装,在仓库目录重跑 uv sync(或 pip install -e .)
  2. 启动时报 OSError: [E050]:spaCy 语言模型未安装,重跑 python -m spacy download en_core_web_sm
  3. Claude Code 中 server 显示 failed:执行 claude --debug mcp 查看错误输出
  4. server 已连接但工具不可用:确认 ~/.claude/settings.json 的 enabledMcpjsonServers 中包含 memory-vault
  5. Docker 运行时报连接被拒绝:把 DB_HOST 改为 127.0.0.1 而不是 localhost
  6. 远程客户端收到 421 Misdirected Request:客户端使用的主机名不在 MCP_HTTP_ALLOWED_HOSTS 列表中(该列表会替换默认值,记得保留 localhost:*)
  7. 仪表盘每次刷新都要求填 token:浏览器阻止了 localStorage(隐私模式或严格 Cookie 设置)
  8. 仪表盘所有请求返回 401:token 已被撤销或 API_AUTH_ENABLED 发生变化,创建新 token 后重新粘贴
  9. 提交问题前可运行 docker compose exec app memory-vault diagnose 生成诊断包(token、密码会自动打码,但仍建议先自行检查)
  10. 报告中附带响应头 X-Request-ID,便于在结构化 JSON 日志中定位同一次请求

使用场景

让 Claude 在跨会话中记住项目决策、笔记与已解决的问题
在本地对大量文档/笔记做混合语义 + 关键词检索
用本地 LM Studio 模型对自己的记忆库提问,并核对每条回答的来源
通过 REST API 或仪表盘把持久记忆集成进自建的 AI 应用
在 CPU 上自动抽取实体与关系,浏览知识图谱中的关联

支持客户端

Claude Desktop完整支持
Claude Code完整支持