Postg Mem

Postg Mem

🚀 PostgMem

PostgMem 是一个基于模型上下文协议(MCP)的服务器实现方案,借助 PostgreSQL 和 pgvector 为 AI 应用提供向量内存存储功能,可助力 AI 代理高效管理记忆数据。

🚀 快速开始

PostgMem 是一个基于 .NET 的服务,它允许 AI 代理存储、检索记忆,并能通过相似度搜索来访问记忆。该服务利用 PostgreSQL 和 pgvector 扩展,实现了高效的相似性搜索功能。

✨ 主要特性

  • 使用向量嵌入存储结构化记忆。
  • 可按照 ID 检索单个记忆。
  • 支持通过向量相似性进行语义搜索。
  • 能使用标签过滤搜索结果。
  • 与模型上下文协议(MCP)集成,方便与 AI 代理配合使用。

📚 详细文档

技术栈

  • .NET 9.0
  • 带有 pgvector 扩展的 PostgreSQL
  • 模型上下文协议(MCP)
  • ASP.NET Core
  • 借助 Npgsql 实现 PostgreSQL 连接

先决条件

  • 安装 .NET 9.0 SDK。
  • 拥有已安装 pgvector 扩展的 PostgreSQL 数据库。
  • 准备好文本嵌入 API(默认配置使用 Ollama)。

设置

数据库配置

  1. 创建一个用于该应用程序的 PostgreSQL 数据库。
  2. 在数据库中安装 pgvector 扩展:
    CREATE EXTENSION vector;
    
  3. 创建 memories 表:
    CREATE TABLE memories (
    id UUID PRIMARY KEY,
    type TEXT NOT NULL,
    content JSONB NOT NULL,
    source TEXT NOT NULL,
    embedding VECTOR(384) NOT NULL,
    tags TEXT[] NOT NULL,
    confidence DOUBLE PRECISION NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE NOT NULL,
    updated_at TIMESTAMP WITH TIME ZONE NOT NULL
    );
    

环境配置

在项目的 .env 文件中配置应用程序设置:

ConnectionStrings__Storage="Host=localhost;Database=mcp_memory;Username=postgres;Password=postgres"
Embeddings__ApiUrl=http://localhost:11434/
Embeddings__Model=all-minilm:33m-l12-v2-fp16
  • ConnectionStrings__Storage:PostgreSQL 连接字符串。
  • Embeddings__ApiUrl:嵌入式 API 的 URL(默认使用 Ollama)。
  • Embeddings__Model:使用的嵌入模型。

运行应用程序

  1. 切换到 PostgMem 目录。
  2. 运行应用程序:
    dotnet run
    
  3. MCP 服务器将在 http://localhost:5000 默认可用。

MCP 工具

存储

将新记忆存储在数据库中。 参数:

  • type(字符串):记忆的类型(例如,'对话'、'文档' 等)。
  • content(字符串):记忆内容作为 JSON 对象。
  • source(字符串):记忆来源(例如,'用户'、'系统' 等)。
  • tags(字符串数组):可选的记忆分类标签。
  • confidence(双精度浮点数):记忆的置信度分数(0.0 到 1.0)。

搜索

通过提供的文本搜索相似记忆。 参数:

  • query(字符串):要搜索的文本。
  • limit(整数):返回结果的最大数量(默认:10)。
  • minSimilarity(双精度浮点数):最小相似度阈值(0.0 到 1.0)(默认:0.7)。
  • filterTags(字符串数组):可选的记忆过滤标签。

获取

通过 ID 检索特定记忆。 参数:

  • id(Guid):要检索的记忆 ID。

删除

通过 ID 删除记忆。 参数:

  • id(Guid):要删除的记忆 ID。

🔧 技术细节

  • Memory.cs:定义记忆数据模型。
  • Storage.cs:处理数据库操作,包括存储和检索记忆。
  • EmbeddingService.cs:生成文本向量嵌入。
  • MemoryTools.cs:实现 MCP 工具以与记忆存储交互。

📄 许可证

[在此处填写您的许可信息]

贡献

[在此处添加贡献指南,如果适用]

联系方式

[在此处提供联系方式或支持信息]

  • 0 关注
  • 0 收藏,10 浏览
  • system 提出于 2025-09-23 14:18

相似服务问题