BigQuery のベクトル検索の一般提供開始: AI を活用した新たなレベルの分析が可能に
Joe Malone
Product Manager
Minmin Jin
Software Engineer
※この投稿は米国時間 2024 年 9 月 28 日に、Google Cloud blog に投稿されたものの抄訳です。
AI により新たな形のデータ表現が可能になり、組織はデータを大規模に分析して理解できるようになりました。AI モデルは、単語やその他のデータの意味論的な意味を「ベクトル エンベディング」としてエンコーディングすることで解釈するようにトレーニングされています。これらのエンベディングは、エンコードされるデータのベクトル空間における相対位置を表します。意味論的に類似したエンベディングはベクトル空間で近接する一方、意味論的に類似していないエンベディングは近接しません。また、データの意味論的な理解をコード化し、その理解をすべてのデータタイプに適用し、それをすべて分析するためのシンプルなツールを組織に提供することで、データ分析のための新たなアプローチが可能になります。
こうした状況を踏まえ、このたび BigQuery のベクトル検索の一般提供(GA)を開始し、BigQuery データに対するベクトル類似検索に対応しました。この機能は一般に近似最近傍探索とも呼ばれ、セマンティック検索、類似性検出、大規模言語モデル(LLM)による検索拡張生成(RAG)など、さまざまな新しいデータや AI のユースケースを強化するための鍵となります。
2 月に発表された BigQuery のベクトル検索は、エンベディングの生成、管理、検索をデータ プラットフォーム内に統合し、異常検出、マルチモーダル検索、商品のおすすめ、創薬などのユースケースのためのサーバーレスの統合ベクトル分析ソリューションとなります。
さらに、BigQuery のベクトル検索に対応した反転ファイル(IVF)インデックスの一般提供も開始しました。このインデックスは、k 平均法アルゴリズムを使用してベクトルデータをクラスタ化し、ツーピース インデックスの転置行ロケーターと組み合わせて、データの類似したエンベディング表現を効率的に検索します。プレビューのお知らせ後に、新たにいくつかの機能強化を IVF に追加しました。
-
スケーラビリティの向上: 100 億個のエンベディングをインデックス化できるようになり、大規模なアプリケーションへの対応が可能になりました。
-
正確性が保証されたマネージド インデックス: 基盤データに変更があった場合、既存の k 平均法モデルを使用してベクトル インデックスが自動的に更新されます。修正されたデータの再インデックス化がシステムで終了していなくても、ベクトル検索は常に最新のデータ ミューテーションに基づく正確な結果を返します。
-
列の保存: 頻繁に使用される列をインデックスに保存し、検索結果で追加のデータを取得する際の費用のかかる結合を回避できるようになりました。この最適化により、クエリデータに大量のエンベディングが含まれている場合や、高い top_k が必要な場合など、結果セットのカーディナリティが高いシナリオで突出したパフォーマンス向上が実現します。たとえば、10 億個の 96 次元エンベディングがあるテーブルで、1 個のエンベディングに対して 1,000 個の類似した候補を返す場合、ベクトル インデックスに列を保存した方が、列を保存しない場合に比べて処理スピードが約 4 倍も速くなり、使用するスロット数は約 200 分の 1 に減少します。
-
事前フィルタ: 列の保存に加えて、ベクトル検索結果への事前フィルタの適用も可能になりました。そのためには、ベーステーブルの文を、フィルタを含むクエリに書き換える必要があります。WHERE 句が VECTOR_SEARCH() 関数の後に追加される事後フィルタリングと比べて、事前フィルタリングはクエリのパフォーマンスと検索の質を向上させ、結果不足のリスクを最小限に抑えます。
Palo Alto Networks などのお客様が、BigQuery のベクトル検索を使用して類似した一般的なクエリを特定し、分析情報の生成にかかる時間を短縮しています。
「コパイロットで BigQuery のベクトル検索を活用し、関連性の高いクエリの例を提案するようにしています。これにより、カスタマー エクスペリエンスの大幅な向上が可能になりました。また、BigQuery でのベクトル検索の設定と有効化も簡単でした。類似検索を実行したときには、そのパフォーマンスと速度に感銘を受けました。」- Palo Alto Networks シニア上級エンジニア、Sameer Merchant 氏
また、Vilya が取り組む創薬のような大規模なワークロードの場合でも、BigQueryの ベクトル検索でプロトタイピングを行って本番環境にプッシュするプロセスはシンプルです。さらに、オンデマンドの料金計算ツールと予算評価ツールにより、容量ベースの課金モデルにシームレスに拡張できるようになりました。
「生物学データのサイズを、新しい大員環を検索するために必要なレベルに拡張できる BigQuery の機能に大きな感銘を受けました。おかげで、的確な疾病の生態を標的とすることができています。BigQuery のベクトル検索は使いやすく、スケーラビリティに優れているため、数十億の大員環でも迅速に検索できます。」- Vilya 共同創立者 / CTO、Patrick Salveson 氏
実際の作成例
BigQuery のベクトル検索を初めて使用する場合は、ここで紹介する実際の例を参考にしてください。
あなたは、社内の Q&A フォーラムに質問を投稿しようと考えています。しかしその前に、自分の質問と意味論的に類似した質問がすでに投稿されていないか確認することにしました。ここでは、質問のエンベディングを生成し、<my_posts_questions> テーブルに保存済みであると想定します。この処理を終えたら、パフォーマンスを向上させるために、ベクトル インデックスを作成し、タイトル、コンテンツ、タグといった頻繁に使用される列をインデックスに保存します。
ベクトル インデックスがなくても VECTOR_SEARCH()
は機能しますが、通常はインデックスを作成した方がクエリのパフォーマンスが向上します。準備ができたら、VECTOR_SEARCH()
と ML.GENERATE_EMBEDDING を組み合わせ、たとえば「Android app using RSS crashing」(RSS を使用する Android アプリのクラッシュ)に似た質問を検索します。結果の質を高めるために、「tags」列に事前フィルタを適用して検索空間を制限できます。
さらに先日、Google が開発した ScaNN に基づく新しいインデックス タイプのプレビュー版についてもお知らせしました。これにより、検索パフォーマンスをさらに向上させることができます。進化を続ける BigQuery のベクトル検索は、マルチモーダルの検索拡張生成(RAG)ソリューションの重要な要素となっています。このソリューションは、構造化データ、非構造化データ、マルチモーダル データから構成される本格的な BigQuery ナレッジベースを基盤として、最新の Gemini モデルを使用します。
使ってみる
ベクトル エンベディングと ML を組み合わせることで、エンベディングを高速かつ費用対効果の高い方法で検索するなど、BigQuery のエンタープライズ データ ウェアハウスに保存されたデータを使って実現できることに変革がもたらされます。BigQuery のベクトル検索を導入する場合は、まず以下のリソースをご覧ください。
ー プロダクト マネージャー Joe Malone
ー ソフトウェア エンジニア Minmin Jin