pgvector は、PostgreSQL(Postgres とも呼ばれます)の拡張機能で、ベクトルを簡単に操作できるようにします。これにより、リレーショナル データベースに直接ベクトルを保存し、検索、インデックス登録できます。
pgvector を使用すると、類似検索などの高度な機能をアプリケーションや AI エージェントに追加する作業が簡単かつスケーラブルになります。新しいベクトルデータ型を接続するために、データを移動したり、アプリケーション アーキテクチャを変更したりする必要はありません。
pgvector は、既存の PostgreSQL データベース内で高次元ベクトルを直接保存、インデックス登録、検索するのに役立つオープンソースの拡張機能です。pgvector は、次の機能をサポートすることで知られています。
ベクトルは、データの主な特徴を捉え、仮想の数学的空間にマッピングする形で、データを数値で表します。この空間では、単語、画像、オブジェクトなどの類似するアイテムは近くに配置されます。
たとえば、「コート」と「ジャケット」という言葉を考えてみましょう。従来のキーワードベースの検索では、これらの文字はかなり異なるため、類似するものとして関連付けられません。これらのキーワードを統合したい e コマース システムでは、手動で統合する必要があります。しかし、この 2 つのベクトル表現は意味が似ているため、非常に近くなります。これにより、ユーザーはより正確な検索結果を得られ、デベロッパーは時間を節約できます。
同様に、猫の写真を 2 枚撮った場合、ピクセル単位で見ると大きく異なる可能性があります。しかし、ベクトル エンベディングでは、数学的空間内でこれらが非常に近くに配置されます。人間がこれらをどちらも猫の画像だと簡単に識別するのと同じです。

これを実現するために、エンベディング モデルは、画像やテキストなどの未加工データをベクトル エンベディングに変換します。pgvector は、これらのエンベディングをデータベースに保存します。ユーザーがクエリを送信すると、その入力もベクトルに変換されます。pgvector は、クエリベクトルと保存されたベクトル間の距離を計算し、最も類似度スコアの高い「最近傍」を効率的に特定します。
さまざまな種類の最近傍検索についてご興味をお持ちですか?生成 AI アプリ開発のためのガイドをご覧ください。
PostgreSQL は、テーブル、行、列を使用して構造化データを処理するように設計された、堅牢なオープンソースのリレーショナル データベース管理システムです。
pgvector は、PostgreSQL 内で実行される拡張機能です。データベースに新しいデータ型「vector」が追加され、標準の運用データとともにベクトル エンベディングを保存および処理できるようになります。
いいえ、pgvector は既存の PostgreSQL データベースに直接統合される拡張機能です。これにより、新しいインフラストラクチャや個別のインフラストラクチャを管理することなく、高度な AI 機能と検索機能を追加できます。
昨今の AI 駆動型機能をサポートするには、ベクトル エンベディングを保存および管理する機能が必要です。
PostgreSQL はそれ自体でも強力ですが、データが表、行、列に厳密に構造化されているため、クエリ機能は主にキーワードとパターン マッチングに限定されます。
AI の世界では、テキスト、画像、音声などの複雑なデータはベクトル表現としてエンコードされます。これらのエンコードにより、AI モデルはデータ内のコンテキストとセマンティックな関係を把握できるようになり、インテリジェント検索、レコメンデーション、生成 AI などの機能のバックボーンを形成します。
pgvector 拡張機能は、ベクトル エンベディングを使用して、SQL のようにキーワードの一致だけでなく、クエリの意味に基づいて結果を見つけることで、セマンティック検索を PostgreSQL にもたらします。類似検索と呼ばれるこのプロセスにより、アプリケーションに検索オプション機能を直接追加することが簡単になり、再アーキテクチャや、データを別のベクトル データベースに移動する必要がなくなります。
ベクトル エンベディングについて詳しくは、生成 AI アプリ開発のためのガイドをご覧ください。
pgvector は高次元ベクトルを処理できるため、さまざまな高度なアプリケーションをサポートします。
従来のリレーショナル データベースでのキーワード マッチングでは、データ内の有意義なつながりを特定できないことがよくあります。類似検索では、ユークリッド距離やコサイン距離などの指標を使用してベクトルの近接性を比較し、より深いパターンを見つけます。これは、画像認識やセマンティック検索などのアプリケーションに不可欠です。これらのアプリケーションでは、結果が意味によってランク付けされます。たとえば、e コマースでは、類似検索によってユーザーの行動を分析し、関連するアイテムを見つけて商品のおすすめを可能にします。
ベクトルベースの自然言語処理により、AI エージェントはコンテキストを理解し、よりパーソナライズされた会話とより正確な回答を実現できます。多言語サポートにより、仮想アシスタントやカスタマー サービス プラットフォームとしてのパフォーマンスが向上します。
pgvector は、データの異常なパターンを特定するために不可欠なベクトル エンベディングの保存とクエリを可能にすることで、AI ワークフローを強化します。ベクトル近接性を分析することで、不正行為の防止、ネットワーク セキュリティ、品質管理のためにリアルタイムで異常を検出できます。
感情分析では、メッセージの意図を分析して、否定的なコメントを適切にルーティングし、迅速な対応とカスタマイズされた解決策を実現します。
pgvector は、PostgreSQL のスケーラビリティ、トランザクション サポート、堅牢な信頼性を活用して、高次元のデータセットを効率的に管理します。また、使い慣れた SQL 構文を使用するため、既存のチームがアクセスしやすく、ベクトル インデックス作成と検索専用の追加のツールやインフラストラクチャは不要です。
既存の PostgreSQL ベースのアプリに簡単に統合できます。
データセットの増加に対応する PostgreSQL のスケーラビリティを向上。
距離指標やインデックス作成などのカスタマイズ可能な機能を提供します。
PostgreSQL の信頼できるセキュリティと信頼性を継承します。
構造化データと非構造化データの両方にわたってシームレスにクエリを実行できます。
大規模な高次元データを扱うための、開発者向けのソリューションを提供します。
従来の SQL クエリと最新のベクトル検索の両方に優れた単一のデータベースをお探しなら、AlloyDB for PostgreSQL をご検討ください。AlloyDB は、Google が開発した ScaNN(スケーラブルな最近傍)ベクトル類似検索アルゴリズムを使用しており、大規模なデータベース内のトランザクション ワークロードと分析ワークロードにおいて、他のクラウドベースの PostgreSQL サービスよりもはるかに高いパフォーマンスを実現します。
AlloyDB が構造化データと非構造化データの同時検索をどのように実行するかをご覧ください。
Cloud SQL と AlloyDB for PostgreSQL は pgvector をサポートしているため、標準の SQL コマンドを使用してベクトル エンベディングを保存およびクエリできます。
お好みの PostgreSQL クライアント(psql、pgAdmin、Google Cloud コンソールなど)を使用して、Cloud SQL または AlloyDB インスタンスに接続します。
次の SQL コマンドを実行して、データベースで拡張機能を有効にします。これは、データベースごとに 1 回だけ行います。
ベクトルデータの列を含む新しいテーブルを作成(または既存のテーブルを変更)します。ベクトルの次元を指定する必要があります。たとえば、3 次元のエンベディングを保存するテーブルを作成するには、次のようにします。
ベクトル エンベディングは、標準データと同様に挿入できます。ベクトルは、角かっこで囲まれた配列の形式で指定されます。
これで、データをクエリして最近傍を見つけることができます。<-> 演算子はユークリッド距離(L2 距離)を計算します。これは、最も類似したアイテムを見つけるためによく使用されます。
大規模なデータセットの場合、インデックスを追加すると検索パフォーマンスが大幅に向上します。HNSW インデックスと ScaNN インデックスは、よく使用されるオプションです。以下に HNSW の例を示します。