コンテンツに移動
データ分析

大規模なクエリバッチに利用できる BigQuery ベクトル検索の ScaNN のご紹介

2024年8月27日
Francis Lan

Staff Software Engineer, Google Cloud

Join us at Google Cloud Next

Early bird pricing available now through Feb 14th.

Register

※この投稿は米国時間 2024 年 8 月 21 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Cloud では、BigQuery Gemini 時代の AI 対応データ プラットフォームにするために、継続的に機能を追加しています。今年に入ってからはベクトル検索を導入し、BigQuery データのベクトル類似検索を可能にしました。その後も、列の保存や事前フィルタといったいくつかの機能を追加しています。BigQuery のベクトル検索と AI の機能が備えるスケール、パフォーマンス、使いやすさはすでに、セマンティック検索から LLM ベースの検索拡張生成(RAG)まで、お客様がパイプラインやアプリケーションを構築できるよう支援しています。

このたびさらに、TreeAH ベクトル インデックスのプレビュー版を公開いたしました。これは、Google 近似最近傍アルゴリズムの研究と技術革新から中核となる部分を BigQuery に取り入れたものです。この新しいインデックス タイプは、Google の主要サービスの一部で基盤として使用されている技術を採用しており、BigQuery に最初に導入されたインデックスである反転ファイル インデックスIVF)と比べて、一定の状況下においてレイテンシと費用を大幅に削減します。ではここで、「大幅に」とは具体的にどの程度でしょうか。この両者のアーキテクチャの違い、パフォーマンス テストの結果、IVF に代わりに TreeAH を使用するのが適している場合とその方法について、以下にご説明します。

IVF インデックスと TreeAH インデックスの比較

BigQuery では、ベクトル インデックスを使用することで、一致度の高いエンベディングを特定するために必要なルックアップや距離の計算を最適化できます。IVF インデックスと TreeAH インデックスはいずれも、BigQuery で厳密最近傍検索の代わりに近似最近傍(ANN)検索を実行できるようにします。近似最近傍検索では、精度はある程度下がりますが、クエリのレイテンシと費用が削減されます。

BigQuery の最初のベクトル インデックスである IVF は、スケーラブルな K 平均法クラスタリング アルゴリズムを使用してベクトルデータをクラスタに分割します。VECTOR_SEARCH 関数を使用してベクトルデータを検索すると、IVF はクエリのベクトルに最も近いクラスタを見つけて、それらのクラスタのベクトルデータのみをランキングします。これにより、距離の計算回数が大幅に削減されます。

新しい TreeAH インデックスは、多くの Google サービスで類似検索に使われている Google ScaNN アルゴリズムをベースとしています。IVF インデックスとの主な違いは非対称ハッシュの使用で(「TreeAH」の「AH」は非対称ハッシュを表します)、エンベディングの圧縮に直積量子化が使用されます。TreeAH を使ったベクトル検索は、CPU に最適化された距離計算アルゴリズムと組み合わせることで、IVF と比べて桁違いに優れた速度と費用効率を実現できます。圧縮されたエンベディングのみが保存されるため、インデックス生成においても、速度は 10 倍、費用は 10 分の 1 になり、メモリ使用量も少なくなります。

TreeAH のパフォーマンス

Google Cloud のエンジニアリング チームがさまざまなテーブル構成とクエリのバッチサイズを使ってベンチマーク テストを実施し、TreeAH IVF を比較しました。その結果は以下のとおりです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_CGyNHM5.max-1000x1000.png

図 1. ベクトル検索クエリのレイテンシと費用

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_d4SvhHc.max-900x900.png

図 2. ベクトル インデックス トレーニングのレイテンシと費用

主な結果:

  • 小規模なクエリバッチの場合、IVF インデックスのパフォーマンスは TreeAH と変わらず、場合によっては TreeAH よりも高くなります。これは、TreeAH インデックスではオーバーヘッドが増加するためです。

  • 大規模なクエリバッチの場合、IVF よりも TreeAH のほうが大幅にパフォーマンスが高くなっています。これは、最適化された距離計算アルゴリズムを使用しているためです。

  • インデックスのトレーニングにおいても、ほとんどの場合、TreeAH のほうが IVF よりもかなり高速で、費用も大幅に下がっています。

*: IVF インデックスを使ったクエリでは、ブロック プルーニングの最適化が有利に働いています。

TreeAH の使用が適している場合と現時点での制限事項

ベンチマークの結果からわかるように、クエリのバッチサイズが大きい場合は、TreeAH インデックスのほうが IVF よりもパフォーマンスが大幅に高くなっています。インデックスのトレーニングも高速で低費用になります。

Google は現在も TreeAH インデックスの開発作業を精力的に継続しており、今後も新機能やパフォーマンスの改善を追加していく予定です。現時点での制限事項は以下のとおりです。

TreeAH を使ってみる

TreeAH インデックス タイプの公開プレビュー版は今すぐご利用いただけます。

読み込んでいます...

詳しくは、こちらのドキュメントをご覧ください。

TreeAH インデックスをぜひお試しになり、ベクトル検索のワークロードに対するパフォーマンスと費用のメリットを体験してください。ワークロードに最適なインデックス タイプの選択に関して、ご不明な点やサポートのご要望がありましたら、bq-vector-search@google.com までお問い合わせください。

-Google Cloud、スタッフ ソフトウェア エンジニア Francis Lan

 

投稿先