一个基于Model Context Protocol (MCP)的服务器实现,使用PostgreSQL和pgvector为AI应用提供向量存储。
PostgMem是一个基于.NET的服务,允许AI代理通过向量嵌入来存储、检索和搜索记忆。它利用了带有pgvector扩展的PostgreSQL,以提供高效的相似性搜索能力。
主要特性:
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-fp16
ConnectionStrings__Storage:PostgreSQL连接字符串Embeddings__ApiUrl:嵌入API的URL(默认为Ollama)Embeddings__Model:要使用的嵌入模型dotnet run
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):要删除的记忆IDMemory.cs:定义记忆的数据模型Storage.cs:处理存储和检索记忆的数据库操作EmbeddingService.cs:生成文本的向量嵌入MemoryTools.cs:实现与记忆存储交互的MCP工具[在此处添加许可证信息]
[在此处添加贡献指南]