项目简介

PostgMem是一个基于.NET的Model Context Protocol (MCP) 服务器实现,专注于为AI应用提供持久化的向量记忆功能。它利用强大的PostgreSQL数据库及其pgvector扩展来实现高效的向量存储和相似性搜索,允许AI代理以标准化的方式存储、检索和搜索结构化记忆。

主要功能点

  • 记忆存储: 存储带有向量嵌入的结构化记忆,支持类型、内容(JSON格式)、来源、标签和置信度等元数据。
  • 记忆检索: 通过记忆的唯一ID快速检索特定的记忆条目。
  • 语义搜索: 基于向量相似性,根据查询文本进行语义搜索,查找相关的记忆。
  • 搜索过滤: 支持使用标签过滤搜索结果,提高搜索的精确性。
  • MCP集成: 完全符合MCP协议,AI客户端(如LLM代理)可以通过标准化的JSON-RPC接口与服务器通信并调用其功能。

安装步骤

  1. 环境准备: 确保您的系统已安装 .NET 9.0 SDK。
  2. 数据库设置:
    • 创建一个PostgreSQL数据库。
    • 在数据库中安装pgvector扩展。可以通过SQL命令 'CREATE EXTENSION vector;' 完成。
    • 执行项目文档中提供的SQL脚本,创建用于存储记忆的'memories'表。
  3. 代码获取: 克隆或下载PostgMem仓库代码。
  4. 配置: 在项目目录下创建一个 '.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
  5. 运行服务器: 在项目目录下打开终端,运行命令 '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服务器交互,实现记忆的读写和检索功能。

信息

分类

数据库与文件