PostgreSQL で embedding vector を扱う方法について説明します。
PostgreSQL で embedding vector を扱うには、pgvector
拡張機能を使用するのが一般的です。pgvector
は、ベクトル類似性検索を PostgreSQL に追加するオープンソースの拡張機能です。
以下に、pgvector
を使用して embedding vector を扱う基本的な手順を示します。
-
pgvector
拡張機能のインストール:まず、PostgreSQL に
pgvector
拡張機能をインストールする必要があります。CREATE EXTENSION vector;
-
ベクトルの格納に使用するテーブルの作成:
次に、embedding vector を格納するためのテーブルを作成します。
vector
データ型を使用して、ベクトルの列を定義します。次元数も指定できます。CREATE TABLE embeddings ( id bigserial PRIMARY KEY, content text, embedding vector(1536) -- 例:1536次元のベクトル );
-
embedding vector の挿入:
embedding vector をテーブルに挿入します。通常、外部の embedding モデル (OpenAI API など) を使用してテキストや画像をベクトルに変換し、その結果をデータベースに格納します。
INSERT INTO embeddings (content, embedding) VALUES ( 'Example text', '[0.1, 0.2, 0.3, ...]' -- 実際のベクトルデータ );
-
類似性検索の実行:
pgvector
は、ベクトル間の距離を計算するための演算子を提供します。これらを使用して、類似性検索を実行できます。<->
: ユークリッド距離<=>
: コサイン距離<#>
: 内積の負の値
SELECT id, content FROM embeddings ORDER BY embedding <=> '[0.1, 0.2, 0.3, ...]' -- クエリベクトルの指定 LIMIT 5; -- 上位5件の結果を取得
-
インデックスの作成 (オプション):
大規模なデータセットに対して類似性検索を高速化するために、インデックスを作成できます。
pgvector
は、IVFFlat
とHNSW
の 2 種類のインデックスをサポートしています。-- HNSWインデックスの作成例 CREATE INDEX ON embeddings USING hnsw (embedding vector_cosine_ops);
これらの手順に従うことで、PostgreSQL で embedding vector を効率的に管理し、類似性検索を実行できます。
参考:
PostgreSQLで実践するベクトル検索入門:AI時代のRDBMS活用術
【2025年版】PostgreSQLがAIネイティブDBに進化!pgvector …
PostgreSQL×pgvector : ベクトル検索とインデックスの基礎
Azure Database for PostgreSQL でのベクトル検索 – Azure …