一个可扩展、高性能的知识图谱记忆系统,具备语义检索、上下文回忆和时间感知功能。为支持模型上下文协议的任何LLM客户端(例如Claude Desktop、Cursor、Github Copilot)提供持久、适应性强且长期的本体记忆。
实体是知识图谱中的主要节点。每个实体包括:
示例:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["讲流利的西班牙语"]
}
关系定义了实体之间的有向连接,并具有增强属性:
示例:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at",
"strength": 0.9,
"confidence": .95,
"metadata": {
"source": "linkedin_profile",
"last_verified": "2025-03-21"
}
}
Memento MCP 使用 Neo4j 作为其存储后端,提供图形存储和向量搜索能力的统一解决方案。
开始使用 Neo4j 的最简单方法是使用 Neo4j Desktop:
memento_password(或您喜欢的密码)Neo4j 数据库将在以下位置可用:
bolt://127.0.0.1:7687(用于驱动程序连接)http://127.0.0.1:7474(用于 Neo4j 浏览器界面)neo4j,密码:memento_password(或您配置的内容)或者,您可以使用 Docker Compose 来运行 Neo4j:
# 启动 Neo4j 容器
docker-compose up -d neo4j
# 停止 Neo4j 容器
docker-compose stop neo4j
# 移除 Neo4j 容器(保留数据)
docker-compose rm neo4j
使用 Docker 时,Neo4j 数据库将在以下位置可用:
bolt://127.0.0.1:7687(用于驱动程序连接)http://127.0.0.1:7474(用于 Neo4j 浏览器界面)neo4j,密码:memento_password由于 Docker 中的卷配置,即使容器重启或版本升级,Neo4j 数据也会持续存在:
volumes:
- ./neo4j-data:/data
- ./neo4j-logs:/logs
- ./neo4j-import:/import
这些映射确保:
/data 目录(包含所有数据库文件)在主机上持久保存于 ./neo4j-data/logs 目录在主机上持久保存于 ./neo4j-logs/import 目录(用于导入数据文件)持久保存于 ./neo4j-import您可以在 docker-compose.yml 文件中修改这些路径以将数据存储在不同的位置。
您可以更改 Neo4j 版本而不丢失数据:
docker-compose.yml 中更新 Neo4j 镜像版本docker-compose down && docker-compose up -d neo4j 重新启动容器npm run neo4j:init 重新初始化模式只要卷映射保持不变,数据就会在过程中持续存在。
如果您需要完全重置 Neo4j 数据库:
# 停止容器
docker-compose stop neo4j
# 移除容器
docker-compose rm -f neo4j
# 删除数据目录内容
rm -rf ./neo4j-data/*
# 重新启动容器
docker-compose up -d neo4j
# 重新初始化模式
npm run neo4j:init
要备份您的 Neo4j 数据,只需复制数据目录:
# 备份 Neo4j 数据
cp -r ./neo4j-data ./neo4j-data-backup-$(date +%Y%m%d)
Memento MCP 包括用于管理 Neo4j 操作的命令行工具:
测试与您的 Neo4j 数据库的连接:
# 使用默认设置测试
npm run neo4j:test
# 使用自定义设置测试
npm run neo4j:test -- --uri bolt://127.0.0.1:7687 --username myuser --password mypass --database neo4j
正常操作时,当 Memento MCP 连接到数据库时,Neo4j 模式初始化会自动发生。您不需要为常规使用运行任何手动命令。
以下命令仅在开发、测试或高级定制场景中需要:
# 使用默认设置初始化(仅在开发或故障排除时需要)
npm run neo4j:init
# 使用自定义向量维度初始化
npm run neo4j:init -- --dimensions 768 --similarity euclidean
# 强制重建所有约束和索引
npm run neo4j:init -- --recreate
# 组合多个选项
npm run neo4j:init -- --vector-index custom_index --dimensions 384 --recreate
基于意义而非仅仅是关键词查找语义相关的实体:
跟踪实体和关系的完整历史,通过时间点图检索:
关系基于可配置半衰期随着时间自然衰减:
实体和关系的丰富元数据支持,带有自定义字段:
以下工具可通过模型上下文协议提供给 LLM 客户端主机:
create_entities
entities(对象数组)
name(字符串):实体标识符entityType(字符串):类型分类observations(字符串数组):关联观察add_observations
observations(对象数组)
entityName(字符串):目标实体contents(字符串数组):要添加的新观察delete_entities
entityNames(字符串数组)delete_observations
deletions(对象数组)
entityName(字符串):目标实体observations(字符串数组):要移除的观察create_relations
relations(对象数组)
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型strength(数字,可选):关系强度(0.0-1.0)confidence(数字,可选):置信度水平(0.0-1.0)metadata(对象,可选):自定义元数据字段get_relation
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型update_relation
relation(对象):
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型strength(数字,可选):关系强度(0.0-1.0)confidence(数字,可选):置信度水平(0.0-1.0)metadata(对象,可选):自定义元数据字段delete_relations
relations(对象数组)
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型read_graph
search_nodes
query(字符串)open_nodes
names(字符串数组)semantic_search
query(字符串):要语义搜索的文本查询limit(数字,可选):返回的最大结果数(默认:10)min_similarity(数字,可选):最小相似性阈值(0.0-1.0,默认:0.6)entity_types(字符串数组,可选):按实体类型筛选结果hybrid_search(布尔值,可选):组合关键词和语义搜索(默认:true)semantic_weight(数字,可选):混合搜索中语义结果的权重(0.0-1.0,默认:0.6)get_entity_embedding
entity_name(字符串):要获取嵌入的实体名称get_entity_history
entityName(字符串)get_relation_history
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型get_graph_at_time
timestamp(数字):Unix 时间戳(自纪元以来的毫秒数)get_decayed_graph
options(对象,可选):
reference_time(数字):衰减计算的参考时间戳(自纪元以来的毫秒数)decay_factor(数字):可选的衰减因子覆盖使用以下环境变量配置 Memento MCP:
# Neo4j 连接设置
NEO4J_URI=bolt://127.0.0.1:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=memento_password
NEO4J_DATABASE=neo4j
# 向量搜索配置
NEO4J_VECTOR_INDEX=entity_embeddings
NEO4J_VECTOR_DIMENSIONS=1536
NEO4J_SIMILARITY_FUNCTION=cosine
# 嵌入服务配置
MEMORY_STORAGE_TYPE=neo4j
OPENAI_API_KEY=your-openai-api-key
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
# 调试设置
DEBUG=true
Neo4j CLI 工具支持以下选项:
--uri <uri> Neo4j 服务器 URI(默认:bolt://127.0.0.1:7687)
--username <username> Neo4j 用户名(默认:neo4j)
--password <password> Neo4j 密码(默认:memento_password)
--database <n> Neo4j 数据库名称(默认:neo4j)
--vector-index <n> 向量索引名称(默认:entity_embeddings)
--dimensions <number> 向量维度(默认:1536)
--similarity <function> 相似性函数(cosine|euclidean)(默认:cosine)
--recreate 强制重建约束和索引
--no-debug 禁用详细输出(调试默认开启)
可用的 OpenAI 嵌入模型:
text-embedding-3-small:高效、成本效益高(1536 维度)text-embedding-3-large:更高准确性、更昂贵(3072 维度)