向量记忆存储服务

PostgMem是一个基于PostgreSQL和pgvector的向量记忆存储服务,专为AI应用设计,提供记忆存储、检索和语义搜索功能。

  • by dariogriffo
  • C#
  • 本地部署
  • 16 星标
  • 更新于
在 GitHub 查看 dariogriffo/postg-mem

使用说明

PostgMem

一种模型上下文协议(MCP)服务器实现,使用PostgreSQL和pgvector为AI应用程序提供向量内存存储。

概述

PostgMem是一个。基于.NET的服务,允许AI代理使用向量嵌入在内存中存储、检索和搜索。它利用PostgreSQL和pgvector扩展来提供高效的相似性搜索功能。

主要特点:

  • 使用向量嵌入存储结构化内存
  • 按ID检索记忆
  • 基于向量相似度的记忆语义搜索
  • 使用标签筛选搜索结果
  • MCP(模型上下文协议)集成,便于与AI代理一起使用

技术

  • .NET 9.0
  • 带pgvector扩展的PostgreSQL
  • 模型上下文协议(MCP)
  • ASP。NET核心
  • 用于PostgreSQL连接的Npgsql

先决条件

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

设置

数据库配置

  1. 为应用程序创建PostgreSQL数据库
  2. 在数据库中安装pgvector扩展:
    CREATE EXTENSION vector;
    
  3. 创建记忆表:
    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工具

以下MCP工具可用:

商店

在数据库中存储新内存。

参数:

  • type (string):记忆的类型(例如,“对话”、“文档”等)
  • content (string):作为JSON对象的内存内容
  • source (string):内存的来源(例如,“用户”、“系统”等)
  • tags (string[]):用于对内存进行分类的可选标签
  • confidence (双倍):记忆的置信度得分(0.0至1.0)

搜索

搜索与提供的文本相似的记忆。

参数:

  • query (string):用于搜索相似记忆的文本
  • limit (int):返回的最大结果数(默认值:10)
  • minSimilarity (双精度):最小相似性阈值(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工具

许可证

[您的许可证信息在此处]

贡献

[您的投稿指南请点击此处]