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)
设置
数据库配置
- 为应用创建一个 PostgreSQL 数据库
- 在数据库中安装 pgvector 扩展:
- 创建记忆表:
环境配置
在
.env
文件中配置应用设置:ConnectionStrings__Storage
: PostgreSQL 连接字符串
Embeddings__ApiUrl
: 嵌入 API 的 URL(默认使用 Ollama)
Embeddings__Model
: 使用的嵌入模型
运行应用
- 进入 PostgMem 目录
- 运行应用:
- 默认情况下,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 工具
许可证
[您的许可证信息在此]
贡献
[您的贡献指南在此]
- Author:waytomcp
- URL:https://www.waytomcp.com/article/dariogriffo/postg-mem
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!