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)
设置
数据库配置
- 为应用程序创建PostgreSQL数据库
- 在数据库中安装pgvector扩展:
CREATE EXTENSION vector;- 创建记忆表:
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-fp16ConnectionStrings__Storage:PostgreSQL连接字符串Embeddings__ApiUrl:嵌入API的URL(默认为Ollama)Embeddings__Model:要使用的嵌入模型
运行应用程序
- 导航到PostgMem目录
- 运行应用程序:
dotnet run- 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工具
许可证
\[您的许可证信息在此处\]
贡献
\[您的投稿指南请点击此处\]
