MEMG Core 智能记忆服务
项目简介
memg-core 是一个为 AI 智能体设计的高效、可靠、基于 Schema 的记忆引擎。它结合了向量搜索(Qdrant)和图存储(Kuzu)的优势,提供了强大的语义搜索、知识图谱关联记忆检索、自定义记忆类型等功能。通过其内建的 MCP 服务器(位于 'experiments/mcp/server.py'),memg-core 将核心功能封装为一系列可供 LLM 客户端通过标准 JSON-RPC 协议调用的工具,为 AI 应用提供安全、可扩展的上下文服务框架。
主要功能点
- 记忆创建与管理: 根据 YAML 定义的 Schema 动态创建、更新和删除不同类型的记忆(例如:笔记、文档、任务等)。
- 智能搜索: 提供语义向量搜索和知识图谱扩展功能,能够深入理解查询意图并关联相关记忆,支持按记忆类型、时间范围等过滤。
- 关系管理: 支持记忆之间的关系创建和删除,构建富语义的知识图谱。
- 用户隔离: 确保每个用户只能访问和操作自己的记忆数据,保障数据隐私。
- 离线优先: 使用 FastEmbed 进行本地嵌入生成,无需外部 API 密钥。
- 动态工具生成: MCP 服务器根据 YAML Schema 自动生成对应的 'add_' 工具,便于 LLM 调用,提供高度定制化的功能。
安装步骤
-
安装 Python 包:
pip install memg-core fastmcp python-dotenv -
克隆仓库:
git clone https://github.com/genovo-ai/memg-core.git cd memg-core -
配置环境: 创建或编辑 '.env' 文件,或直接设置环境变量。MCP 服务器需要以下环境变量来启动和运行:
- 'MEMG_YAML_SCHEMA': 指向定义记忆类型的 YAML Schema 文件路径,例如 'config/core.memo.yaml' 或 'config/software_dev.yaml'。
- 'MEMG_DB_PATH': 指定 Qdrant 和 Kuzu 数据库文件的存储根路径,例如 './memg_data'。
- 'MEMORY_SYSTEM_MCP_PORT': MCP 服务器监听的端口,例如 '8787'。
- 'MEMORY_SYSTEM_MCP_HOST': MCP 服务器监听的IP地址,例如 '127.0.0.1'。
- 'EMBEDDER_MODEL': (可选) 配置 FastEmbed 使用的嵌入模型,默认为 'Snowflake/snowflake-arctic-embed-xs'。
示例 '.env' 文件内容:
MEMG_YAML_SCHEMA=config/core.memo.yaml MEMG_DB_PATH=./memg_data MEMORY_SYSTEM_MCP_PORT=8787 MEMORY_SYSTEM_MCP_HOST=127.0.0.1 EMBEDDER_MODEL=Snowflake/snowflake-arctic-embed-xs -
启动 MCP 服务器:
python experiments/mcp/server.py服务器成功启动后,将监听配置的端口和地址。
服务器配置 (MCP客户端使用)
MCP 客户端(如 LiteLLM Proxy 或其他支持 MCP 协议的客户端)需要以下 JSON 配置信息来连接并使用 MEMG Core MCP 服务器:
{ "server_name": "memg_core_mcp_server", "server_url": "http://127.0.0.1:8787", "command": "python", "args": [ "experiments/mcp/server.py" ], "env": { "MEMG_YAML_SCHEMA": "config/core.memo.yaml", "MEMG_DB_PATH": "./memg_data", "MEMORY_SYSTEM_MCP_PORT": "8787", "MEMORY_SYSTEM_MCP_HOST": "127.0.0.1", "EMBEDDER_MODEL": "Snowflake/snowflake-arctic-embed-xs" }, "description": "MEMG Core 智能记忆服务 MCP 服务器,为LLM提供结构化记忆存储与检索功能。", "capabilities": [ "add_memo", "add_note", "add_document", "add_task", "delete_memory", "update_memory", "search_memories", "add_relationship", "delete_relationship", "get_memory_by_hrid", "list_memories_by_type", "get_system_info" ] }
参数注释:
- 'server_name': 标识此 MCP 服务器的唯一名称。
- 'server_url': MCP 服务器监听的完整 URL,包括协议、主机和端口。请根据实际部署修改主机和端口。
- 'command': 启动 MCP 服务器的命令行可执行文件,此处为 'python'。
- 'args': 传递给 'command' 的参数列表,此处为服务器脚本路径。
- 'env': 运行服务器进程所需的环境变量键值对。请确保 'MEMG_YAML_SCHEMA' 和 'MEMG_DB_PATH' 指向您实际使用的路径。
- 'description': MCP 服务器的简要描述。
- 'capabilities': 此 MCP 服务器提供的工具或功能列表。实际列表会根据 'MEMG_YAML_SCHEMA' 中定义的记忆类型动态生成 'add_' 工具。
基本使用方法 (LLM客户端调用示例)
LLM 客户端可以通过 MCP 协议调用服务器提供的工具。例如,调用 'add_note' 工具添加一条笔记,或调用 'search_memories' 工具进行搜索。
示例1: 添加一条笔记 LLM 客户端向 MCP 服务器发送 JSON-RPC 请求,调用 'add_note' 工具:
{ "jsonrpc": "2.0", "method": "tool_code_add_note", "params": { "user_id": "agent_alpha", "data": { "statement": "Implement user authentication system using OAuth2", "project": "backend-service" } }, "id": 1 }
服务器响应:
{ "jsonrpc": "2.0", "result": { "result": "Note added successfully", "hrid": "NOTE_AAA001", "memory_type": "note" }, "id": 1 }
示例2: 搜索记忆 LLM 客户端向 MCP 服务器发送 JSON-RPC 请求,调用 'search_memories' 工具:
{ "jsonrpc": "2.0", "method": "tool_code_search_memories", "params": { "user_id": "agent_alpha", "query": "authentication system", "limit": 5 }, "id": 2 }
服务器响应 (简化):
{ "jsonrpc": "2.0", "result": { "status": "Found 1 memories and 0 neighbors", "memories": [ { "hrid": "NOTE_AAA001", "memory_type": "note", "user_id": "agent_alpha", "created_at": "2023-10-27 10:30:00", "updated_at": "2023-10-27 10:30:00", "statement": "Implement user authentication system using OAuth2", "project": "backend-service", "score": 0.85, "relationships": [] } ], "neighbors": [], "query": "authentication system", "user_id": "agent_alpha", "search_params": { "limit": 5, "memory_type": null, "neighbor_limit": 5, "hops": 1, "include_semantic": true } }, "id": 2 }
信息
分类
AI与计算