pgvector とは

pgvector は、PostgreSQL(Postgres とも呼ばれます)の拡張機能で、ベクトルを簡単に操作できるようにします。これにより、リレーショナル データベースに直接ベクトルを保存し、検索、インデックス登録できます。

pgvector を使用すると、類似検索などの高度な機能をアプリケーションや AI エージェントに追加する作業が簡単かつスケーラブルになります。新しいベクトルデータ型を接続するために、データを移動したり、アプリケーション アーキテクチャを変更したりする必要はありません。

pgvector、LangChain、LLM を使用して、Google Cloud で AI 搭載アプリを構築します

重要ポイント

pgvector は、既存の PostgreSQL データベース内で高次元ベクトルを直接保存、インデックス登録、検索するのに役立つオープンソースの拡張機能です。pgvector は、次の機能をサポートすることで知られています。

  • 類似検索: キーワード マッチングではなく、データのセマンティック パターンを比較する
  • AI アプリケーション: レコメンデーション エンジン、chatbot、自然言語処理、異常検出など、AI エージェントの運用と検索アプリケーション

ベクトルとは

ベクトルは、データの主な特徴を捉え、仮想の数学的空間にマッピングする形で、データを数値で表します。この空間では、単語、画像、オブジェクトなどの類似するアイテムは近くに配置されます。

たとえば、「コート」と「ジャケット」という言葉を考えてみましょう。従来のキーワードベースの検索では、これらの文字はかなり異なるため、類似するものとして関連付けられません。これらのキーワードを統合したい e コマース システムでは、手動で統合する必要があります。しかし、この 2 つのベクトル表現は意味が似ているため、非常に近くなります。これにより、ユーザーはより正確な検索結果を得られ、デベロッパーは時間を節約できます。

同様に、猫の写真を 2 枚撮った場合、ピクセル単位で見ると大きく異なる可能性があります。しかし、ベクトル エンベディングでは、数学的空間内でこれらが非常に近くに配置されます。人間がこれらをどちらも猫の画像だと簡単に識別するのと同じです。

Gemini で生成された猫の画像

これを実現するために、エンベディング モデルは、画像やテキストなどの未加工データをベクトル エンベディングに変換します。pgvector は、これらのエンベディングをデータベースに保存します。ユーザーがクエリを送信すると、その入力もベクトルに変換されます。pgvector は、クエリベクトルと保存されたベクトル間の距離を計算し、最も類似度スコアの高い「最近傍」を効率的に特定します。

さまざまな種類の最近傍検索についてご興味をお持ちですか?生成 AI アプリ開発のためのガイドをご覧ください。

pgvector に関するよくある質問

PostgreSQL は、テーブル、行、列を使用して構造化データを処理するように設計された、堅牢なオープンソースのリレーショナル データベース管理システムです。

pgvector は、PostgreSQL 内で実行される拡張機能です。データベースに新しいデータ型「vector」が追加され、標準の運用データとともにベクトル エンベディングを保存および処理できるようになります。

いいえ、pgvector は既存の PostgreSQL データベースに直接統合される拡張機能です。これにより、新しいインフラストラクチャや個別のインフラストラクチャを管理することなく、高度な AI 機能と検索機能を追加できます。

AI および検索アプリケーション向けの PostgreSQL の pgvector

pgvector は高次元ベクトルを処理できるため、さまざまな高度なアプリケーションをサポートします。

従来のリレーショナル データベースでのキーワード マッチングでは、データ内の有意義なつながりを特定できないことがよくあります。類似検索では、ユークリッド距離やコサイン距離などの指標を使用してベクトルの近接性を比較し、より深いパターンを見つけます。これは、画像認識やセマンティック検索などのアプリケーションに不可欠です。これらのアプリケーションでは、結果が意味によってランク付けされます。たとえば、e コマースでは、類似検索によってユーザーの行動を分析し、関連するアイテムを見つけて商品のおすすめを可能にします。

ベクトルベースの自然言語処理により、AI エージェントはコンテキストを理解し、よりパーソナライズされた会話とより正確な回答を実現できます。多言語サポートにより、仮想アシスタントやカスタマー サービス プラットフォームとしてのパフォーマンスが向上します。

pgvector は、データの異常なパターンを特定するために不可欠なベクトル エンベディングの保存とクエリを可能にすることで、AI ワークフローを強化します。ベクトル近接性を分析することで、不正行為の防止、ネットワーク セキュリティ、品質管理のためにリアルタイムで異常を検出できます。

感情分析では、メッセージの意図を分析して、否定的なコメントを適切にルーティングし、迅速な対応とカスタマイズされた解決策を実現します。

従来の SQL クエリと最新のベクトル検索の両方に優れた単一のデータベースをお探しなら、AlloyDB for PostgreSQL をご検討ください。AlloyDB は、Google が開発した ScaNN(スケーラブルな最近傍)ベクトル類似検索アルゴリズムを使用しており、大規模なデータベース内のトランザクション ワークロードと分析ワークロードにおいて、他のクラウドベースの PostgreSQL サービスよりもはるかに高いパフォーマンスを実現します。

AlloyDB が構造化データと非構造化データの同時検索をどのように実行するかをご覧ください。

Google Cloud データベースで pgvector を有効にして使用する方法

Cloud SQLAlloyDB for PostgreSQL は pgvector をサポートしているため、標準の SQL コマンドを使用してベクトル エンベディングを保存およびクエリできます。

1. インスタンスへの接続

お好みの PostgreSQL クライアント(psql、pgAdmin、Google Cloud コンソールなど)を使用して、Cloud SQL または AlloyDB インスタンスに接続します。

2. pgvector 拡張機能を有効にする

次の SQL コマンドを実行して、データベースで拡張機能を有効にします。これは、データベースごとに 1 回だけ行います。

  • SQL
読み込んでいます...

3. ベクトル列を含むテーブルを作成する

ベクトルデータの列を含む新しいテーブルを作成(または既存のテーブルを変更)します。ベクトルの次元を指定する必要があります。たとえば、3 次元のエンベディングを保存するテーブルを作成するには、次のようにします。

  • SQL
読み込んでいます...

4. ベクトルデータを挿入する

ベクトル エンベディングは、標準データと同様に挿入できます。ベクトルは、角かっこで囲まれた配列の形式で指定されます。

  • SQL
読み込んでいます...

5. 類似検索を使用したクエリ

これで、データをクエリして最近傍を見つけることができます。<-> 演算子はユークリッド距離(L2 距離)を計算します。これは、最も類似したアイテムを見つけるためによく使用されます。

  • SQL
読み込んでいます...

6. パフォーマンス向上のためのインデックスを追加する

大規模なデータセットの場合、インデックスを追加すると検索パフォーマンスが大幅に向上します。HNSW インデックスと ScaNN インデックスは、よく使用されるオプションです。以下に HNSW の例を示します。

  • SQL
読み込んでいます...

Google Cloud でビジネスの課題を解決する

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。

次のステップ

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud