《Memento》(中文译名《记忆碎片》)
*有些记忆最好长久留存。*
通过基于SQLite的知识图谱提供持久存储能力,该图谱存储实体、观测结果和关系,并使用BGE-M3嵌入进行语义搜索,以实现跨对话的智能上下文检索。
特点
- 语义向量搜索(sqlite-vec/pgvector,1024维)
- 离线嵌入模型(
bge-m3) - 具有SQLite和PostgreSQL后端的模块化存储库层
- 结合时间、流行度、上下文和重要性因素的增强相关性评分
- 结构化图表
entities,observations,和relations - 轻松与Claude Desktop集成(通过MCP)
先决条件
SQLite系统版本检查
Memento 需要 SQLite 3.38 或更高版本。大多数 macOS 和 Linux 发行版都预装了该版本 sqlite3 开箱即用,但请务必再次确认它在且足够新:
sqlite3 --version # should print a version string, e.g. 3.46.0重要提示: 这个检查只是为了验证您的系统上是否安装了 SQLite。Memento 并不使用 sqlite3 命令行界面(CLI)来运行,它内部使用的是 Node.js 的 sqlite3 模块。
如果你看到“命令未找到”(或者你的版本低于3.38),请安装SQLite:
| 平台 | 安装命令 |
|---|---|
| macOS(使用 Homebrew) | brew install sqlite |
| Debian / Ubuntu(这两个都是Linux发行版的名称,直接翻译为中文即保持原名,因为它们在中文环境中通常也是这样称呼的) | sudo apt update && sudo apt install sqlite3 |
配置
Memento 现在支持可插拔的存储后端。配置由(系统/用户)控制 完全通过环境变量实现,因此易于嵌入到MCP中 工作流程。
| 变量 | 描述 |
|---|---|
MEMORY_DB_DRIVER | 数据库后端的可选选择器。默认为 sqlite设置为 postgres 启用 PostgreSQL 管理员。 |
MEMORY_DB_PATH SQLite数据库文件的文件系统路径(仅在驱动程序使用时) sqlite)。 | |
SQLITE_VEC_PATH | 可选的预构建文件的绝对路径 sqlite-vec 共享库扩展。 |
MEMORY_DB_DSN / DATABASE_URL | 被(某系统/服务)使用的 PostgreSQL 连接字符串 pg 客户。 |
PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE | 单个 PostgreSQL 连接参数。在未提供 DSN(数据源名称)时使用。 |
PGSSLMODE | 当设置为 requireSSL 将被启用,并且 rejectUnauthorized: false。 |
PostgreSQL 笔记
- PostgreSQL 管理员需要
pgvector
扩展。它会自动初始化为 CREATE EXTENSION IF NOT EXISTS vector。
Claude Desktop(桌面版)
{
"mcpServers": {
"memory": {
"description": "Custom memory backed by SQLite + vec + FTS5",
"command": "npx",
"args": [
"@iachilles/memento@latest"
],
"env": {
"MEMORY_DB_PATH": "/Path/To/Your/memory.db"
},
"options": {
"autoStart": true,
"restartOnCrash": true
}
}
}
}故障排除
sqlite-vec 扩展问题
重要提示: Memento 通过 Node.js 程序性地加载 sqlite-vec 扩展,而不是通过 sqlite3 命令行界面。
常见的误解:
- ❌ 为 sqlite3 命令行界面创建 shell 别名不会影响 Memento
- ❌ 在 sqlite3 命令行界面加载扩展对 Memento 没有帮助
- ✅ 使用通过npm安装的sqlite-vec或设置
SQLITE_VEC_PATH如果自动检测失败,请设置环境变量。该变量应指向与Node.js兼容的扩展版本,通常位于您的node_modules目录。
如果自动向量加载失败:
# Find the Node.js-compatible vec extension
find node_modules -name "vec0.dylib" # macOS
find node_modules -name "vec0.so" # Linux
# Use it via environment variable
SQLITE_VEC_PATH="/full/path/to/node_modules/sqlite-vec-darwin-x64/vec0.dylib" mementoAPI 概述
此服务器提供了以下MCP工具:
create_entitiescreate_relationsadd_observationsdelete_entitiesdelete_relationsdelete_observationsread_graphsearch_nodesopen_nodesset_importance- 设置重要性级别(关键/重要/正常/临时/已弃用)
一个大型语言模型(LLM)应了解的用于有效内存处理的指令集示例(参见MEMORY_PROTOCOL.md)
嵌入模型
这个项目使用 @xenova/transformers(可译为“@xenova/转换器库”或根据具体上下文意译为更贴切的名称,但直接翻译保持原样时为“@xenova/transformers”),其量化版本为 bge-m3在Node.js中完全离线运行。
许可证
麻省理工学院(MIT)
