AlloyDB AI ベクトル検索の概要

AlloyDB AI は、AlloyDB for PostgreSQL の高度な拡張機能であり、高性能ベクトル処理をエンタープライズ グレードのリレーショナル データベースに直接統合するように設計されています。これにより、デベロッパーは、構造化形式と非構造化形式の両方でデータのセマンティックな意味を理解する、高度でインテリジェントなアプリケーションを構築できます。AlloyDB AI は、SQL 機能と最先端のベクトル検索テクノロジーを統合することで、データ マネジメントと検索拡張生成(RAG)ワークフローに対応する単一の AI 対応プラットフォームを提供します。これにより、個別のベクトル データベースをデプロイして管理する必要がなくなります。

コア アーキテクチャとパフォーマンス

AlloyDB は、ベクトル機能に PostgreSQL の pgvector 拡張機能を使用します。一般的な HNSW インデックスと、長年の Google 検索の研究から生まれた最先端のベクトル検索アルゴリズムである Scalable Nearest Neighbors(ScaNN)インデックスをサポートしています。PostgreSQL 環境へのこの緊密なインテグレーションにより、高速で pgvector 互換のオペレーションと高度なセマンティック クエリが可能になります。

ScaNN インデックスのパフォーマンス

ScaNN インデックスは、標準の PostgreSQL HNSW(Hierarchical Navigable Small Worlds)インデックスよりも大幅に高速で、要求の厳しい AI ワークロードに必要な高速ベクトル オペレーションを提供します。

オペレーション パフォーマンスの向上(標準の PostgreSQL HNSW インデックスと比較) 機能
インデックスの作成 最大 10 倍高速 並列インデックス構築
ベクトル検索クエリ 最大 4 倍高速 インデックスの自動メンテナンス
フィルタ付きベクトル検索クエリ 最大 10 倍高速 エンタープライズ クラスのオブザーバビリティ

適応型フィルタリングとクエリの最適化

ScaNN インデックスは PostgreSQL クエリ プランナーと緊密に統合されており、ベクトル類似性と標準の構造化メタデータ フィルタの両方を含むハイブリッド クエリで最適なパフォーマンスを確保します。

  • 適応型フィルタリング: このメカニズムにより、フィルタ、結合、ベクトル インデックスを同時に使用する際に最適なパフォーマンスが実現します。これは、実行時にクエリ実行統計情報をモニタリングし、得られたデータからフィルタの選択性を学習、その結果を基に実行プランを適応的に調整することで、フィルタ適用とベクトル検索の最も効率的な順序を決定します。
  • インライン フィルタリング: ScaNN アルゴリズムに固有のインライン フィルタリングは、ベクトル検索とメタデータ フィルタ評価を並行して実行する最適化戦略です。セカンダリ PostgreSQL インデックス(B-tree、GIN、GiST など)を活用して、フィルタ条件を満たす行の候補リスト(ビットマップ)を作成します。後続のベクトル スキャンでは、事前フィルタリングされたセットに含まれるベクトルの距離のみが計算されるため、特にフィルタの選択性が中程度の場合に、計算オーバーヘッドが大幅に削減されます。

Vertex AI とのシームレスなインテグレーション

AlloyDB AI は、Vertex AI エコシステムとの組み込みインテグレーション用に設計されており、SQL を使用してデータベース内でデータを直接変換して拡充できます。

エンベディングの自動生成

このプラットフォームは、google_ml_integration 拡張機能を使用したエンベディングの自動生成をサポートしています。この機能により、運用データ(テキスト、画像、動画)を text-embedding-005 などの Vertex AI モデルを使用してベクトル エンベディングに変換できます。

  • モデル登録: Vertex AI モデル(エンベディングと生成)は、google_ml.create_model プロシージャを使用してデータベース内に登録されます。
  • 仮想列: embedding() 関数を使用して、エンベディングを自動生成し、生成された列に保持できます。これにより、ベクトルデータがソース列データと同期された状態を維持できます。
ALTER TABLE my_table
ADD COLUMN embedding vector(768)
GENERATED ALWAYS AS (embedding('text-embedding-005', source_column)) STORED;

クエリと生成 AI による拡充

ベクトル エンベディングが保存されると、デベロッパーは標準 SQL のベクトル類似性演算子(<=>)を使用して高度なセマンティック検索を実行できます。さらに、これらの検索の結果は、RAG ベースのクエリ拡張やユーザー フレンドリーな出力生成のために google_ml.generate_content などの関数を使用して、gemini-2.0-flash-001 などの生成 AI モデルに直接渡すことができます。