MemMachine 是一个开源的、为高级AI Agent设计的通用记忆层,能够让AI应用学习、存储和回忆过去会话的数据及偏好,从而丰富未来的交互。它支持多种记忆类型,包括工作记忆(短期)、持久记忆(长期)和个性化档案记忆,并能够跨多个会话、Agent和大型语言模型构建复杂且不断演进的用户画像。通过提供MCP接口,MemMachine 将普通的AI聊天机器人转变为个性化、上下文感知的AI助手,以更高的精度和深度进行理解和响应。
主要功能点
- 多类型记忆管理: 支持短期会话记忆、长期知识记忆和用户画像记忆,确保AI Agent拥有全面的上下文感知能力。
- 智能记忆提取与整合: 利用大型语言模型(LLM)从会话中智能提取、更新和整合用户相关信息,自动去重并优化记忆结构。
- 语义搜索: 对存储的记忆进行语义搜索,快速检索与当前查询最相关的上下文。
- 开发者友好API: 除了提供RESTful API和Python SDK外,还原生支持Model Context Protocol (MCP) 接口,方便LLM客户端直接调用记忆服务。
- 会话与生命周期管理: 自动管理会话的创建、引用计数和销毁,确保内存资源的高效利用。
- 可扩展架构: 模块化设计,支持多种嵌入器、重排序器和向量图存储后端(如Neo4j),易于扩展和定制。
安装步骤
- 克隆仓库:
git clone https://github.com/MemMachine/MemMachine.git cd MemMachine - 设置Python环境: 推荐使用conda或venv创建虚拟环境。
(请注意:仓库内容中未直接提供 'requirements.txt'。您可能需要查看官方文档或 'setup.py' 文件来获取完整的依赖列表。)python -m venv venv source venv/bin/activate # Linux/macOS # 或 .\venv\Scripts\activate # Windows pip install -r requirements.txt # 请根据项目实际的requirements.txt文件进行安装 - 配置数据库: 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' 库加载。)
- 配置LLM API密钥: 设置您的OpenAI API密钥。
或添加到您的'.env'文件中。export OPENAI_API_KEY="您的_OPENAI_API_密钥" - 运行数据库迁移(PostgreSQL): 为了初始化Profile Memory所需的PostgreSQL数据库Schema,请执行以下命令:
# 进入 src/memmachine/profile_memory/storage 目录 cd src/memmachine/profile_memory/storage python syncschema.py cd ../../../../ # 返回项目根目录 - 配置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'下。
基本使用方法
-
启动MemMachine服务器: 在项目根目录执行以下命令启动MemMachine服务器:
python src/server/app.py服务器将默认在 'http://0.0.0.0:8080' 上运行。
-
通过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 }
- 调用 'mcp_add_session_memory' 工具:
如果您的MCP客户端支持发送JSON-RPC请求,可以构造类似以下的请求体来添加一条用户记忆:
信息
分类
AI与计算