PostgMem について
PostgMemは、永続的な記憶を必要とするAIエージェント向けの、PostgreSQLとpgvectorを使った.NETサービスです。ベクトル類似検索を中心に、タグで結果を絞り込めます。
主な機能
- 01埋め込み付きの構造化記憶を保存
- 02IDで記憶を取得または削除
- 03意味的類似度による検索
- 04タグによる検索結果の絞り込み
活用シーン
- 01AIエージェントの会話記憶を保持
- 02意味に基づいて関連情報を検索
- 03タグで記憶を整理・絞り込み
MCP 対応
PostgMemはMCPを通じて、記憶の保存、検索、取得、削除ツールをAIエージェントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PostgMem
AI アプリケーション向けに、PostgreSQL と pgvector を使用したベクトルメモリストレージを提供する Model Context Protocol(MCP)サーバーの実装です。
概要
PostgMem は、AI エージェントがベクトル埋め込みを使用してメモリを保存、取得、検索できる .NET ベースのサービスです。pgvector 拡張機能を備えた PostgreSQL を活用し、効率的な類似性検索機能を提供します。
主な機能:
- ベクトル埋め込みを含む構造化メモリの保存
- ID によるメモリの取得
- ベクトル類似度を使用したメモリのセマンティック検索
- タグを使用した検索結果の絞り込み
- AI エージェントと簡単に連携できる MCP(Model Context Protocol)統合
テクノロジー
- .NET 9.0
- pgvector 拡張機能を備えた PostgreSQL
- Model Context Protocol(MCP)
- ASP.NET Core
- PostgreSQL 接続用の Npgsql
前提条件
- .NET 9.0 SDK
- pgvector 拡張機能をインストールした PostgreSQL データベース
- テキスト埋め込み API(デフォルト設定では Ollama を使用)
セットアップ
データベースの設定
- アプリケーション用の PostgreSQL データベースを作成します
- データベースに pgvector 拡張機能をインストールします:
CREATE EXTENSION vector; - memories テーブルを作成します:
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:使用する埋め込みモデル
アプリケーションの実行
- PostgMem ディレクトリに移動します
- アプリケーションを実行します:
dotnet run - デフォルトでは、MCP サーバーは
http://localhost:5000で利用できます
MCP ツール
次の MCP ツールを利用できます:
Store
データベースに新しいメモリを保存します。
パラメーター:
type(string):メモリの種類(例:'conversation'、'document' など)content(string):JSON オブジェクトとしてのメモリの内容source(string):メモリのソース(例:'user'、'system' など)tags(string[]):メモリを分類するための任意のタグconfidence(double):メモリの信頼度スコア(0.0~1.0)
Search
指定したテキストに類似するメモリを検索します。
パラメーター:
query(string):類似するメモリを検索するためのテキストlimit(int):返す結果の最大数(デフォルト:10)minSimilarity(double):類似度の最小しきい値(0.0~1.0)(デフォルト:0.7)filterTags(string[]):メモリを絞り込むための任意のタグ
Get
ID を指定して特定のメモリを取得します。
パラメーター:
id(Guid):取得するメモリの ID
Delete
ID を指定してメモリを削除します。
パラメーター:
id(Guid):削除するメモリの ID
実装の詳細
Memory.cs:メモリのデータモデルを定義しますStorage.cs:メモリの保存と取得に関するデータベース操作を処理しますEmbeddingService.cs:テキストのベクトル埋め込みを生成しますMemoryTools.cs:メモリストレージを操作する MCP ツールを実装します
ライセンス
[ライセンス情報をここに記載]
コントリビューション
[コントリビューションガイドラインをここに記載]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。