项目简介
PostgMem是一个基于.NET的Model Context Protocol (MCP) 服务器实现,专注于为AI应用提供持久化的向量记忆功能。它利用强大的PostgreSQL数据库及其pgvector扩展来实现高效的向量存储和相似性搜索,允许AI代理以标准化的方式存储、检索和搜索结构化记忆。
主要功能点
- 记忆存储: 存储带有向量嵌入的结构化记忆,支持类型、内容(JSON格式)、来源、标签和置信度等元数据。
- 记忆检索: 通过记忆的唯一ID快速检索特定的记忆条目。
- 语义搜索: 基于向量相似性,根据查询文本进行语义搜索,查找相关的记忆。
- 搜索过滤: 支持使用标签过滤搜索结果,提高搜索的精确性。
- MCP集成: 完全符合MCP协议,AI客户端(如LLM代理)可以通过标准化的JSON-RPC接口与服务器通信并调用其功能。
安装步骤
- 环境准备: 确保您的系统已安装 .NET 9.0 SDK。
- 数据库设置:
- 创建一个PostgreSQL数据库。
- 在数据库中安装pgvector扩展。可以通过SQL命令 'CREATE EXTENSION vector;' 完成。
- 执行项目文档中提供的SQL脚本,创建用于存储记忆的'memories'表。
- 代码获取: 克隆或下载PostgMem仓库代码。
- 配置: 在项目目录下创建一个 '.env' 文件或使用环境变量,配置数据库连接字符串和嵌入生成API(例如Ollama)的URL和模型名称。示例如下:
ConnectionStrings__Storage="Host=localhost;Database=mcp_memory;Username=postgres;Password=postgres" Embeddings__ApiUrl=http://localhost:11434/ Embeddings__Model=all-minilm:33m-l12-v2-fp16 - 运行服务器: 在项目目录下打开终端,运行命令 'dotnet run'。服务器将启动并在默认地址 'http://localhost:5000' 监听(如果配置为Web服务模式)或通过标准输入输出进行通信(如果MCP客户端配置为Stdio模式)。
服务器配置 (供MCP客户端参考)
MCP客户端需要配置如何启动或连接到MCP服务器。对于PostgMem,典型的配置方式是通过客户端启动PostgMem进程并使用Stdio进行通信。以下是客户端配置的示例(请根据您的MCP客户端实际配置格式进行调整):
{ "name": "PostgMem Memory Server", "description": "MCP server for vector memory storage via PostgreSQL/pgvector", "command": "dotnet", // 启动服务器的可执行文件 "args": [ "run", // 传递给 dotnet 的参数,用于运行项目 "--project", "path/to/PostgMem.csproj" // 指定PostgMem项目的路径 // 如果有其他启动参数,可以在这里添加 ] // 客户端通常还需要配置 "transport" 类型, 例如 "stdio" // 如果PostgMem配置为监听HTTP/WebSocket,客户端可能需要配置 "url" }
- 'name': 服务器名称,客户端展示用。
- 'description': 服务器功能描述。
- 'command': 执行启动任务的命令,通常是 'dotnet'。
- 'args': 传递给 'command' 的参数列表,'run --project path/to/PostgMem.csproj' 会启动PostgMem应用。请将 'path/to/PostgMem.csproj' 替换为 PostgMem 项目文件的实际路径。
基本使用方法
服务器启动后,AI客户端(通常是LLM应用或代理)通过JSON-RPC调用PostgMem暴露的MCP工具来实现记忆操作。主要的工具有:
- 'Store': 调用此工具并提供记忆的详细信息(类型、内容、来源、标签、置信度)来存储一个新记忆。
- 'Search': 调用此工具并提供查询文本,获取与查询相关的记忆列表。可以指定返回数量、最低相似度和标签过滤。
- 'Get': 调用此工具并提供记忆的ID,检索该记忆的详细信息。
- 'Delete': 调用此工具并提供记忆的ID,删除该记忆。
客户端通过这些工具与PostgMem服务器交互,实现记忆的读写和检索功能。
信息
分类
数据库与文件