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 调用,提供高度定制化的功能。

安装步骤

  1. 安装 Python 包:

    pip install memg-core fastmcp python-dotenv
  2. 克隆仓库:

    git clone https://github.com/genovo-ai/memg-core.git
    cd memg-core
  3. 配置环境: 创建或编辑 '.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
  4. 启动 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与计算