PostgreSQLでembedding vectorを扱うには、pgvector
拡張機能を利用するのが一般的です。以下に主な方法をまとめます。
-
pgvector拡張機能のインストール:
- まず、PostgreSQLに
pgvector
拡張機能をインストールします。 CREATE EXTENSION vector;
コマンドを実行して、データベースで拡張機能を有効にします。
- まず、PostgreSQLに
-
テーブルの作成:
- embedding vectorを格納するためのテーブルを作成します。
vector
データ型を使用して、ベクトルのカラムを定義します。次元数を指定することも可能です。
例:CREATE TABLE documents (id SERIAL PRIMARY KEY, content TEXT, embedding VECTOR(1536));
-
データの挿入:
- OpenAI APIなどのembeddingモデルを使用してテキストや画像をベクトルに変換します。
INSERT
ステートメントを使用して、生成されたembedding vectorをテーブルに挿入します。
例:INSERT INTO documents (content, embedding) VALUES ('Example text', '[0.1, 0.2, ..., 0.9]');
-
類似検索:
- ベクトル間の距離を計算して、類似度を評価します。
pgvector
は、コサイン類似度、ユークリッド距離、内積などの距離計算をサポートしています。ORDER BY
句と距離演算子(<->
,<#>
)を使用して、類似度の高い順に結果を取得します。
例:SELECT id, content FROM documents ORDER BY embedding <-> '[0.1, 0.2, ..., 0.9]' LIMIT 5;
-
インデックスの作成:
- 大規模なデータセットでの検索パフォーマンスを向上させるために、インデックスを作成します。
pgvector
は、IVFFlat
やHNSW
などのインデックスをサポートしています。CREATE INDEX
ステートメントを使用して、適切なインデックスを作成します。
例:CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops);
これらの手順に従うことで、PostgreSQLでembedding vectorを効率的に格納、検索、管理できます。
参考:
PostgreSQLで実践するベクトル検索入門:AI時代のRDBMS活用術 | Sqripts
[レポート]PostgreSQL上の生成AIアプリでベクトル検索するためのベストプラクティス #DAT423 #AWSreInvent
【AI】PostgreSQLのpgvectorを用いた類似検索|エンジニアライフ
PostgreSQL×pgvector : ベクトル検索とインデックスの基礎
PostgreSQL for AI: Storing and Searching Embeddings with pgvector
【2025年版】PostgreSQLがAIネイティブDBに進化!pgvectorでChatGPT検索を10行SQLで実装する方法|Yuu’s Memo
Azure Database for PostgreSQL でのベクトル検索 – Azure Database for PostgreSQL …