项目简介
本项目是一个后端Web服务器,旨在为各种LLM助手提供持久化的记忆能力,帮助助手拥有“完美记忆”,同时让用户保留数据所有权。它通过存储、组织和检索信息来增强LLM助手的上下文理解能力。本项目设计为部署在应用的后端环境中(例如,Docker Compose应用的私有网络内)。
主要功能点
- 数据摄取: 支持通过指定接口接收外部信息(如对话记录)并存储在数据库和对象存储中。
- 图谱化记忆: 利用LLM自动从摄取的数据中提取实体、事件、概念等关键信息,并构建和维护一个基于图谱(节点和边)的知识库来组织这些记忆。
- 记忆查询: 提供多种查询方式,包括基于向量嵌入相似度的搜索(查找与特定文本相关的记忆)和基于时间维度的查询(查找某一天的相关记忆及其关联信息)。
- 长期记忆 (Atlas): 维护一个用户层面的通用长期记忆(User Atlas)和一个助手层面的特定长期记忆(Assistant Atlas),通过后台任务自动进行摘要和更新,为LLM提供高层次的上下文。
- MCP 接口: 暴露兼容 Model Context Protocol (MCP) 的接口,允许支持MCP的LLM客户端以标准化的方式访问服务器暴露的MCP资源和已注册的功能。
安装步骤
- 克隆本项目代码。
- 安装 Node.js 和项目依赖(通常使用 'npm install' 或 'yarn install' 命令)。
- 准备必要的基础服务:一个 PostgreSQL 数据库、一个 Redis 实例(用于任务队列)以及一个兼容 S3 API 的对象存储服务(如 Minio)。
- 获取所需的第三方服务 API 密钥,例如:OpenAI 或兼容的 LLM API 密钥(用于图谱提取、摘要等任务)和 Jina Embedding API 密钥(用于生成向量嵌入)。
- 配置环境变量文件(通常是 '.env' 文件),填入数据库连接字符串、Redis URL、对象存储连接信息、API 密钥以及其他必要的配置项。
- 运行数据库迁移脚本以初始化或更新数据库结构。具体的命令通常与您使用的数据库迁移工具(如 Drizzle Kit)相关。
- 构建项目代码(例如,使用 'npm run build')。
- 启动服务器进程。同时,本项目使用队列处理后台任务,因此需要启动一个或多个 Worker 进程来执行这些任务(如数据摄取后的图谱提取、对话摘要、Atlas 更新等)。
服务器配置 (供MCP客户端使用)
本MCP服务器在启动后,会声明其名称为 "Demo",版本为 "1.0.0"。如果您的LLM客户端支持通过启动外部进程来连接MCP服务器,您需要在客户端配置中指定启动本服务器进程所需的命令路径和参数列表。具体的启动命令取决于您的构建方式和部署环境(例如,在 Node.js 环境下,可能需要执行 'node' 加上主脚本文件路径)。本服务器通过 SSE (Server-Sent Events) 和 HTTP POST 组合的方式实现MCP协议通信。主要的记忆摄取和查询功能也通过标准的 HTTP POST 接口(如 '/ingest/conversation', '/query/search', '/query/day', '/query/atlas')对外暴露。
基本使用方法
- 通过HTTP接口: 您可以直接通过 HTTP POST 请求与服务器交互。例如,向 '/ingest/conversation' 端点发送包含对话数据的请求体,可以将新的对话记录存储到记忆库中。向 '/query/search' 发送包含查询文本的请求,可以执行向量相似度搜索并获取相关记忆。类似地,'/query/day' 和 '/query/atlas' 也通过 POST 请求提供日期相关的记忆和长期记忆查询功能。
- 通过MCP接口: 如果您的LLM客户端支持连接外部MCP服务器,您可以配置客户端启动本服务器进程。一旦连接建立,客户端即可通过标准的MCP方法调用服务器暴露的MCP资源(例如,'greeting' 资源)和工具(例如,'add' 工具)。
信息
分类
AI与计算