一个通过知识图谱和向量搜索能力实现的高级MCP服务器,用于RAG增强的记忆。此服务器扩展了基本的记忆概念,包括语义搜索、文档处理和混合检索,以实现更智能的记忆管理。
灵感来源: 知识图谱记忆服务器,来自Model Context Protocol项目。
注意: 此服务器设计为与MCP客户端(如Claude Desktop、VS Code)本地运行,并需要访问本地文件系统进行数据库存储。
此服务器通过模型上下文协议(MCP)提供全面的记忆管理:
storeDocument:存储带有元数据的文档以供处理chunkDocument:创建具有可配置参数的文本块embedChunks:生成用于语义搜索的向量嵌入extractTerms:从文档中提取潜在实体术语linkEntitiesToDocument:创建明确的实体-文档关联deleteDocuments:删除文档及其相关数据listDocuments:查看所有存储的文档及其元数据createEntities:创建带有观察和类型的实体createRelations:在实体之间建立关系addObservations:向现有实体添加上下文信息deleteEntities:删除实体及其关系deleteRelations:删除特定关系deleteObservations:从实体中删除特定观察hybridSearch:结合向量相似性和图遍历的高级搜索searchNodes:按名称、类型或观察内容查找实体openNodes:检索特定实体及其关系readGraph:获取完整的知识图谱结构getKnowledgeGraphStats:关于知识库的综合统计此服务器适用于需要智能记忆和文档理解的场景:
本节解释如何配置MCP客户端以使用rag-memory-mcp服务器。
在您的claude_desktop_config.json(Claude Desktop)或mcp.json(Cursor)中添加以下配置:
{
"mcpServers": {
"rag-memory": {
"command": "npx",
"args": ["-y", "rag-memory-mcp"]
}
}
}
指定版本:
{
"mcpServers": {
"rag-memory": {
"command": "npx",
"args": ["-y", "rag-memory-mcp@1.0.0"]
}
}
}
自定义数据库路径:
{
"mcpServers": {
"rag-memory": {
"command": "npx",
"args": ["-y", "rag-memory-mcp"],
"env": {
"MEMORY_DB_PATH": "/path/to/custom/memory.db"
}
}
}
}
在您的用户设置(JSON)文件或.vscode/mcp.json中添加以下配置:
{
"mcp": {
"servers": {
"rag-memory-mcp": {
"command": "npx",
"args": ["-y", "rag-memory-mcp"]
}
}
}
}
实体是知识图谱中的主要节点。每个实体都有:
示例:
{
"name": "机器学习",
"entityType": "CONCEPT",
"observations": [
"人工智能的一个子集",
"专注于从数据中学习",
"用于推荐系统"
]
}
关系定义了实体之间的有向连接,描述它们如何交互:
示例:
{
"from": "React",
"to": "JavaScript",
"relationType": "BUILT_WITH"
}
观察是关于实体的信息片段:
文档通过以下步骤处理:
这使混合搜索能够结合:
MEMORY_DB_PATH:SQLite数据库文件的路径(默认:服务器目录下的memory.db)本节面向希望修改或贡献于服务器的开发者。
package.json中的版本兼容性git clone https://github.com/ttommyth/rag-memory-mcp.git
cd rag-memory-mcp
npm install
npm run build
npm run watch # 开发时自动重建
npm run buildnpm run watchnpm run prepare这是一个典型的构建和查询知识库的工作流程:
// 1. 存储文档
await storeDocument({
id: "ml_intro",
content: "机器学习是AI的一个子集...",
metadata: { type: "教育", topic: "ML" }
});
// 2. 处理文档
await chunkDocument({ documentId: "ml_intro" });
await embedChunks({ documentId: "ml_intro" });
// 3. 提取并创建实体
const terms = await extractTerms({ documentId: "ml_intro" });
await createEntities({
entities: [
{
name: "机器学习",
entityType: "CONCEPT",
observations: ["人工智能的一个子集", "从数据中学习"]
}
]
});
// 4. 使用混合方法搜索
const results = await hybridSearch({
query: "人工智能应用",
limit: 10,
useGraph: true
});
为了优化内存利用,请考虑使用以下系统提示:
您有权访问一个具备知识图谱能力的RAG增强型记忆系统。遵循以下指南:
1. **信息存储**:
- 使用文档管理工具存储重要文档
- 创建人员、概念、组织和技术实体
- 在相关概念之间建立关系
2. **信息检索**:
- 使用混合搜索进行全面信息检索
- 利用语义相似性和图关系
- 在创建重复项之前搜索实体
3. **记忆维护**:
- 添加观察以丰富实体上下文
- 将文档链接到相关实体以提高可发现性
- 使用统计数据监控知识库的增长
4. **处理工作流**:
- 存储 → 分块 → 嵌入 → 提取 → 关联
- 总是完全处理文档以获得最佳搜索结果
欢迎贡献!请遵循标准开发实践,并确保所有测试通过后再提交拉取请求。
本项目根据MIT许可证发布。详情见LICENSE文件。
构建于:TypeScript, SQLite, sqlite-vec, Hugging Face Transformers, Model Context Protocol SDK