MemMachine 是一个开源的、为高级AI Agent设计的通用记忆层,能够让AI应用学习、存储和回忆过去会话的数据及偏好,从而丰富未来的交互。它支持多种记忆类型,包括工作记忆(短期)、持久记忆(长期)和个性化档案记忆,并能够跨多个会话、Agent和大型语言模型构建复杂且不断演进的用户画像。通过提供MCP接口,MemMachine 将普通的AI聊天机器人转变为个性化、上下文感知的AI助手,以更高的精度和深度进行理解和响应。

主要功能点

  • 多类型记忆管理: 支持短期会话记忆、长期知识记忆和用户画像记忆,确保AI Agent拥有全面的上下文感知能力。
  • 智能记忆提取与整合: 利用大型语言模型(LLM)从会话中智能提取、更新和整合用户相关信息,自动去重并优化记忆结构。
  • 语义搜索: 对存储的记忆进行语义搜索,快速检索与当前查询最相关的上下文。
  • 开发者友好API: 除了提供RESTful API和Python SDK外,还原生支持Model Context Protocol (MCP) 接口,方便LLM客户端直接调用记忆服务。
  • 会话与生命周期管理: 自动管理会话的创建、引用计数和销毁,确保内存资源的高效利用。
  • 可扩展架构: 模块化设计,支持多种嵌入器、重排序器和向量图存储后端(如Neo4j),易于扩展和定制。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/MemMachine/MemMachine.git
    cd MemMachine
  2. 设置Python环境: 推荐使用conda或venv创建虚拟环境。
    python -m venv venv
    source venv/bin/activate # Linux/macOS
    # 或 .\venv\Scripts\activate # Windows
    pip install -r requirements.txt # 请根据项目实际的requirements.txt文件进行安装
    (请注意:仓库内容中未直接提供 'requirements.txt'。您可能需要查看官方文档或 'setup.py' 文件来获取完整的依赖列表。)
  3. 配置数据库: MemMachine利用PostgreSQL和Neo4j进行数据持久化。请确保您的系统上已安装并运行这些数据库服务。您需要设置以下环境变量来连接它们:
    • 'POSTGRES_HOST', 'POSTGRES_PORT', 'POSTGRES_USER', 'POSTGRES_PASSWORD', 'POSTGRES_DB' (用于PostgreSQL)
    • 'NEO4J_URI', 'NEO4J_USERNAME', 'NEO4J_PASSWORD' (用于Neo4j)
    • (提示:这些环境变量可以直接在Shell中设置,或者在一个 '.env' 文件中定义,然后通过 'python-dotenv' 库加载。)
  4. 配置LLM API密钥: 设置您的OpenAI API密钥。
    export OPENAI_API_KEY="您的_OPENAI_API_密钥"
    或添加到您的'.env'文件中。
  5. 运行数据库迁移(PostgreSQL): 为了初始化Profile Memory所需的PostgreSQL数据库Schema,请执行以下命令:
    # 进入 src/memmachine/profile_memory/storage 目录
    cd src/memmachine/profile_memory/storage
    python syncschema.py
    cd ../../../../ # 返回项目根目录
  6. 配置MemMachine: 复制项目根目录下的 'cfg.yml.example' 文件为 'cfg.yml',并根据您的特定需求(例如LLM模型选择、存储后端配置等)编辑此文件。
    cp cfg.yml.example cfg.yml
    # 使用文本编辑器打开 cfg.yml 文件进行修改

服务器配置 (供MCP客户端使用)

MCP客户端需要以下配置信息来连接MemMachine服务器:

  • MCP服务器名称: MemMachine
    • 说明: 这是您在MCP客户端中识别此服务器的唯一名称。
  • 启动命令: 'python src/server/app.py'
    • 说明: 这是启动MemMachine服务器的命令行指令。请根据您的Python环境和MemMachine项目在文件系统中的实际位置调整 'python' 命令和 'src/server/app.py' 的路径。
  • 启动参数: (无)
    • 说明: 默认情况下,MemMachine服务器启动脚本无需额外参数。
  • 服务器描述: MemMachine是一个通用的AI记忆层,通过MCP协议为AI Agent提供持久化、个性化的短期和长期记忆管理服务。
    • 说明: 对该MCP服务器功能的简要介绍。
  • 协议类型: json_rpc
    • 说明: MemMachine通过JSON-RPC协议进行通信。
  • 传输方式: http
    • 说明: MemMachine通过HTTP进行数据传输。
  • 服务器地址: localhost
    • 说明: MemMachine服务器运行的主机地址。如果部署在远程服务器,请替换为相应的IP地址或域名。
  • 服务器端口: 8080
    • 说明: MemMachine服务器监听的端口。默认是8080,您可以通过设置环境变量 'PORT' 来更改。
  • MCP服务路径: /mcp
    • 说明: MCP客户端发送请求时需要附加的HTTP路径前缀。MemMachine将MCP服务挂载在'/mcp'下。

基本使用方法

  1. 启动MemMachine服务器: 在项目根目录执行以下命令启动MemMachine服务器:

    python src/server/app.py

    服务器将默认在 'http://0.0.0.0:8080' 上运行。

  2. 通过MCP客户端调用工具和资源: 一旦服务器运行,您的MCP客户端即可根据上述“服务器配置”连接到MemMachine。您可以通过其定义的MCP工具(如 'mcp_add_session_memory' 用于添加记忆,'mcp_search_session_memory' 用于搜索记忆)和MCP资源(如 'sessions://sessions' 用于获取所有会话列表)来与MemMachine进行交互,实现记忆的存储、检索和管理。

    示例:

    • 调用 'mcp_add_session_memory' 工具: 如果您的MCP客户端支持发送JSON-RPC请求,可以构造类似以下的请求体来添加一条用户记忆:
      {
        "jsonrpc": "2.0",
        "method": "mcp_add_session_memory",
        "params": {
          "episode": {
            "session": {
              "group_id": "conversation_group_1",
              "agent_id": ["ai_assistant"],
              "user_id": ["user_charlie"],
              "session_id": "chat_session_001"
            },
            "producer": "user_charlie",
            "produced_for": "ai_assistant",
            "episode_content": "用户说:我上次提到了我对日本旅行很感兴趣。",
            "episode_type": "message",
            "metadata": {}
          }
        },
        "id": 1
      }
    • 调用 'mcp_search_session_memory' 工具: 发送类似以下的请求来搜索相关记忆:
      {
        "jsonrpc": "2.0",
        "method": "mcp_search_session_memory",
        "params": {
          "q": {
            "session": {
              "group_id": "conversation_group_1",
              "agent_id": ["ai_assistant"],
              "user_id": ["user_charlie"],
              "session_id": "chat_session_001"
            },
            "query": "用户之前对什么感兴趣?",
            "limit": 3
          }
        },
        "id": 2
      }
    • 访问 'sessions://sessions' 资源: 通过MCP客户端访问资源以获取所有会话信息:
      {
        "jsonrpc": "2.0",
        "method": "mcp_get_resource",
        "params": {
          "uri": "sessions://sessions"
        },
        "id": 3
      }

信息

分类

AI与计算