postg-mem

查看源码
2025-5-12
Words 709Read Time 2 min
Score:85

基于PostgreSQL和pgvector的MCP服务器,提供向量记忆存储和语义搜索功能,适用于AI应用。

PostgMem

PostgMem 是一个基于 Model Context Protocol (MCP) 的服务实现,使用 PostgreSQL 和 pgvector 为 AI 应用提供向量内存存储功能。

概述

PostgMem 是一个基于 .NET 的服务,允许 AI 代理使用向量嵌入存储、检索和搜索记忆。它利用 PostgreSQL 和 pgvector 扩展,提供高效的相似性搜索能力。
主要特性:
  • 存储带有向量嵌入的结构化记忆
  • 通过 ID 检索记忆
  • 使用向量相似性进行语义搜索
  • 使用标签过滤搜索结果
  • 集成 Model Context Protocol (MCP),方便与 AI 代理结合使用

技术栈

  • .NET 9.0
  • PostgreSQL 及 pgvector 扩展
  • Model Context Protocol (MCP)
  • ASP.NET Core
  • Npgsql(用于 PostgreSQL 连接)

先决条件

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

设置

数据库配置

  1. 为应用创建一个 PostgreSQL 数据库
  1. 在数据库中安装 pgvector 扩展:
    1. 创建记忆表:

      环境配置

      .env 文件中配置应用设置:
      • ConnectionStrings__Storage: PostgreSQL 连接字符串
      • Embeddings__ApiUrl: 嵌入 API 的 URL(默认使用 Ollama)
      • Embeddings__Model: 使用的嵌入模型

      运行应用

      1. 进入 PostgMem 目录
      1. 运行应用:
        1. 默认情况下,MCP 服务器将在 http://localhost:5000 可用

        MCP 工具

        以下是可用的 MCP 工具:

        存储

        在数据库中存储新记忆。
        参数:
        • type (string): 记忆类型(如 'conversation', 'document' 等)
        • content (string): 记忆内容,以 JSON 对象形式提供
        • source (string): 记忆来源(如 'user', 'system' 等)
        • tags (string[]): 可选标签,用于分类记忆
        • confidence (double): 记忆的置信度评分(0.0 到 1.0)

        搜索

        搜索与提供文本相似的记忆。
        参数:
        • query (string): 用于搜索相似记忆的文本
        • limit (int): 返回结果的最大数量(默认:10)
        • minSimilarity (double): 最小相似度阈值(0.0 到 1.0)(默认:0.7)
        • filterTags (string[]): 可选标签,用于过滤记忆

        获取

        通过 ID 检索特定记忆。
        参数:
        • id (Guid): 要检索的记忆 ID

        删除

        通过 ID 删除记忆。
        参数:
        • id (Guid): 要删除的记忆 ID

        实现细节

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

        许可证

        [您的许可证信息在此]

        贡献

        [您的贡献指南在此]
        上一篇
        stock-market-mcp-server
        下一篇
        cal2prompt