ベクトル データベースとは?

ベクトル データベースとは、とは、ベクトル エンベディング、またはテキスト、画像、音声などの非構造化データの数値表現を保存、インデックス付け、クエリできるデータベースです。

Google Cloud は、AlloyDB for PostgreSQLSpannerBigQuery などのマネージド サービスにこれらのエンタープライズ グレードの機能を直接統合しており、個別のインフラストラクチャを管理することなくインテリジェントなアプリケーションを構築できます。

ベクトルが有効なデータベース: セマンティック検索を実現

ベクトル エンベディングとは

ベクトル エンベディングは、データの数値表現であり、通常は浮動小数点数の配列として定義され、テキスト、画像、音声などの複雑な非構造化データを、ML モデルが処理できる形式に変換します。

このデータをベクトル空間にマッピングすることで、エンベディングはセマンティックな意味を捉えます。類似するアイテムは互いに近くに配置され、類似しないアイテムは互いに離れて配置されます。この空間的関係により、システムはキーワードの一致だけでなく、コンテキストと意味に基づいてデータポイント間の関連性を識別することが可能になります。

サポートされているその他のデータ型

ベクトル エンベディングのみをサポートする特殊なデータベースもあれば、ベクトル エンベディングに加えて、さまざまなデータやクエリの種類をサポートするデータベースもあります。これは、現実世界の豊富なデータに基づいて生成 AI アプリケーションを構築するうえで非常に重要です。ベクトル エンベディングを使用したセマンティック クエリのメリットが明らかになるにつれて、ほとんどのデータベースでベクトルがサポートされるようになり、将来的には、すべてのデータベースがベクトル データベースになると Google は考えています。

Vertex AI のベクトル検索が高パフォーマンスの生成 AI アプリケーションの構築にどのように役立つかを確認します。Vertex AI のベクトル検索は、Google Research が開発したスケーラブルで効率的なベクトル検索技術であるスケーラブルな最近傍探索(ScaNN)をベースにしており、大規模なデータセットやリアルタイム検索の要件を処理するのに最適です。ベクトル検索とエンベディングの詳細については、以下の動画をご覧ください。また、実際に使用を開始するには、クイックスタート ガイドをご覧ください。

動画を視聴して、エンベディング、ベクトル検索、RAG を使用して LLM を活用したアプリを構築する方法を学びましょう。

ベクトル データベースの仕組み

大量のベクトルを効率的にクエリするには、従来のテキスト フィールドや数値フィールドとは異なる、特殊なインデックス作成と検索戦略が必要です。ベクトルには単一の論理的順序がないため、ベクトル データベースは以下のメカニズムを使用してデータを取得します。

  • 最近傍探索(KNN): 最も一般的なユースケースは、クエリベクトルに最も近い「k」個のベクトルを特定することです。ドット積、コサイン類似度、ユークリッド距離などの距離指標を使用して、ベクトル空間における近接度を測定します。
  • 近似最近傍(ANN): クエリベクトルと他のすべてのベクトル間の正確な距離を計算する場合、計算コストが高くなる可能性があります。この費用を削減するために、データベースでは ANN アルゴリズムが使用されます。これらのアルゴリズムは、精度(再現率)をわずかに犠牲にすることで検索速度を大幅に向上させることができます。これは、ほとんどのセマンティック検索アプリケーションにとって許容できるものです。
  • ベクトル インデックス: ベクトル インデックスでは、より高速な検索を実現するためにデータを整理し、近接するベクトルのクラスタをまとめてグループ化します。一般的な構造には、リスト(ベクトル クラスタを表す)、グラフ(ベクトルを隣接要素と結びつける)、ツリー(ブランチがクラスタのサブセットを表す)などが含まれます。インデックス タイプごとに、ルックアップ速度、メモリ使用量、インデックス作成時間に関して、それぞれ異なるトレードオフがあります。
  • メタデータ フィルタリング: ほとんどのアプリケーションでは、セマンティック類似性だけでは不十分です。たとえば、ユーザーが「魚についての心温まる物語」に似た本を検索(ベクトル検索)し、結果を「20 ドル未満」の商品に限定(メタデータ フィルタ)するとします。このような場合、高度なベクトル データベースは、これらの SQL 述語をベクトル類似性と組み合わせて、強力なハイブリッド クエリを実行します。

ベクトル データベースのユースケース

ベクトル エンベディングは、複雑なデータのセマンティックな意味を捉えます。効率的なインデックス作成と検索を提供するベクトル データベースと組み合わせることで、デベロッパーは幅広いインテリジェント アプリケーションやデータ処理ツールを構築できます。

デベロッパーは、ベクトル データベースを大規模言語モデル(LLM)の外部ナレッジベースとして使用できます。モデルにプロンプトを送信する前に、関連する独自のコンテキストを取得することで、アプリケーションはハルシネーションを低減でき、特定分野に特化した、事実に基づいた正確な回答を提供できます。これは、AI を活用したサポート エージェント、法的文書の分析ツール、社内ナレッジ マネジメント システムを構築するうえで不可欠です。

ベクトル データベースを使用すると、デベロッパーはコラボレーション フィルタリングを超えるパーソナライズ システムを構築できます。ユーザーの行動とプロダクトの属性をベクトルとして表現することで、アプリケーションで類似アイテムを特定したり、ユーザーの好みに合ったコンテンツをリアルタイムでマッチングさせたりできます。このアーキテクチャは、e コマースのプロダクト提案、コンテンツ フィード、メディア ストリーミングの推奨事項をサポートしています。

従来のキーワード検索とは異なり、ベクトル データベースでは、ユーザーの意図を理解するセマンティック検索アプリケーションを利用できます。デベロッパーは、ユーザーが正確なフレーズではなくコンセプトに基づいてクエリを実行できる検索エクスペリエンスを構築できます。さらに、ベクトルでは同一空間で異なるデータ型を表現できるため、マルチモーダル検索ツールを構築することも可能です。これにより、ユーザーはテキストによる説明文で画像を検索したり、入力した画像から関連文書を見つけたりすることが可能となります。

ベクトル データベースは、大規模なデータセット内の不規則なパターンを特定するのに役立ちます。「正常」な動作やトランザクションを表すベクトル空間を確立することで、デベロッパーは確立されたクラスタから大きく逸れた外れ値をプログラムで検出できます。この機能は、金融詐欺検出システム、ネットワーク セキュリティ モニタリング ツール、IT インフラストラクチャの健全性チェックを構築するうえで重要です。

データ エンジニアリングのワークフローでは、ベクトル データベースを使用して、異なるデータセットの消去や統合を行えます。顧客レコードや商品リストのエンべディングを比較することで、テキストがわずかに異なる場合(「Main St.」と「Main Street」など)でも、システムは重複するエントリを識別できます。これにより、組織はデータの単一かつ正確なビューを維持できます。

Google Cloud のベクトル データベース

AlloyDB for PostgreSQL

AlloyDB for PostgreSQL は、PostgreSQL の互換性と Google のスケーラブルなインフラストラクチャを組み合わせたものです。標準の pgvector 拡張機能によるベクトル エンベディングの組み込みサポートが含まれており、Google の ScaNN インデックスで強化されています。これによりベクトルクエリを高速化し、「インライン フィルタリング」を可能にしています。これはベクトル類似性とメタデータ フィルタを同時に評価することでハイブリッド検索の最適化を図り、パフォーマンスを向上させるものです。

例: 不動産のハイブリッド検索

物件検索アプリで、ユーザーが「雰囲気」(「自然光が差し込むミッドセンチュリー モダン」など)に基づいて住宅を探します。また、「3 ベッドルーム」、「80 万ドル以下」、「学区 A 内」などの条件を守る必要があります。

  • 課題: 標準的なベクトル検索では、200 万ドルのミッドセンチュリーの住宅や、希望の地区外にある物件が検索結果に含まれる可能性がある。標準 SQL クエリでは価格によるフィルタリングは可能だが、「ミッドセンチュリー風の雰囲気」を理解することはできない。
  • 解決策: AlloyDB のインライン フィルタリングは、ベクトル インデックスのスキャンと、SQL メタデータ フィルタ(価格、場所)のチェックを 1 回のパスで同時に行える。
  • 成果: 結果をフィルタリングする際のパフォーマンスの低下を招くことなく、数ミリ秒で好みのスタイルと予算に合った住宅情報を提供可能。

Google Cloud は、ベクトル検索機能をコア データベース サービスに直接統合し、既存のデータとワークフローを活用して生成 AI を運用化できるよう支援します。

Spanner

Spanner は、Google のグローバル分散データベースであり、トランザクション アプリケーションのベクトル検索をサポートしています。正確な最近傍アルゴリズムと近似最近傍アルゴリズムを使用して、高可用性でスケーラブルなベクトル検索を提供可能です。これにより、グローバル アプリケーションにおいて、厳格な整合性と信頼性を維持しながら、リアルタイムのレコメンデーションやセマンティック検索などの機能を実装できます。

例: e コマース向けのリアルタイムのレコメンデーション

グローバルな e コマース プラットフォームが、ユーザーの曖昧な検索(「雨の日のハイキングに最適なブーツ」など)に対応し、商品の在庫状況を即座に確認できるレコメンデーション エンジンを構築したいと考えています。

  • 課題: 従来のキーワード マッチングでは、関連性はあるものの検索語句と完全に一致しない商品(商品説明に「防水」と記載されているが「雨」という検索で一致しないなど)が漏れてしまう、またはトラフィックの多いイベント時に、別のベクトル データベースで在庫状況を確認すると、レイテンシが発生し、データの整合性が損なわれるリスクがある、といった問題があります。
  • ソリューション: プラットフォームにおいて、既存の Spanner Products テーブルにベクトル列を追加し、SQL を介して Vertex AI を使用してエンベディングを生成します。Spanner のベクトル検索を使用して、意味的に類似した製品を検索すると同時に、厳格な在庫チェック(InventoryCount > 0)を適用するハイブリッド クエリを実行します。
  • 結果: お客様に、在庫が保証された正確でパーソナライズされた商品のおすすめ情報が提供されます。これはライブ トランザクションに必要な低レイテンシとグローバルな一貫性をもって実現されます。

BigQuery

BigQuery では、データ ウェアハウスからデータを移動することなく、大規模なデータセットに対してベクトル分析を実行できます。VECTOR_SEARCH 関数を使用すると、標準の SQL を使用して類似性検索を実行できます。これは、分析ユースケースに特に有用です。たとえば、行動に基づく顧客のクラスタリングや、数十億行のデータにわたる類似の製品トレンドの特定などに利用できます。

例: 大規模なサイバーセキュリティ脅威検出

セキュリティ チームは、悪意のあるアクティビティを特定するために、ペタバイト規模のサーバーログを分析する必要があります。攻撃者は、完全一致キーワード検索を回避するために、コードをわずかに変更することがよくあります。

  • 課題: キーワード検索では、既知の攻撃の微妙なバリエーション(たとえば、悪意のあるスクリプトでの変数名の変更など)を見逃す可能性がある。
  • 解決策: BigQuery を使用して数十億件のログエントリのエンベディングを生成する。VECTOR_SEARCH クエリを実行して、既知の脆弱性利用型不正プログラムのシグネチャと意味的に類似するすべてのログを確認する。これらにより攻撃の新しい亜種を特定する。
  • 成果: シンプルな SQL を使用して、長年にわたる履歴データからゼロデイ脅威の検出およびクラスタリングを実施。専用のベクトル データベースへのデータ移動は不要。

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

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。
お客様独自の課題については、Google Cloud のセールス スペシャリストまで詳しくご相談ください。

次のステップ

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

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