ベクトル近傍検索技術とは? Google を支える最先端技術と Vertex Matching Engine を徹底解説!
- AI
- BigQuery
- ベクトル近傍検索技術
- 機械学習
本記事は、2021年11月10日に開催された Google の公式イベント「 Google Cloud ML サミット」において、 Google のデベロッパーアドボケイトである佐藤一憲氏が講演された「 Google を支えるベクトル近傍検索技術と Vertex Matching Engine 」のレポート記事となります。
今回は YouTube や Google 画像検索など、 Google の主力サービスを裏で支えている「ベクトル近傍検索技術」について解説しつつ、効率的なベクトル検索を実現するための具体的なサービスとして Vertex Matching Engine を詳しくご紹介します。ぜひ最後までご覧ください。
なお、本記事内で使用している画像に関しては、 Google Cloud ML サミット「 Google を支えるベクトル近傍検索技術と Vertex Matching Engine 」を出典元として参照しております。
それでは、早速内容を見ていきましょう。
目次
MatchIt Fast のデモンストレーション
本章では、 Google Cloud パートナーである Groovenauts によって開発された Vertex Matching Engine のデモンストレーションをご紹介します。
今回のデモンストレーションでは、画像とニュース記事の類似検索をご紹介します。
画像の類似検索
はじめに、画像の類似検索をご紹介します。例えば、以下3つの画像の中から好きなものを選択します。ここでは馬の画像を選んでみましょう。
すると、瞬時にたくさんの馬の画像が出てきます。実に200万枚という膨大な画像の中から、選択した馬の画像と類似しているものを瞬時に検索・表示してくれます。これは事前にキャッシュをしているわけではなく、手元にある任意の画像をアップロードした場合でも、瞬時に類似画像を検索・表示させることが可能です。
ニュース記事の類似検索
次に、英字ニュース記事の類似検索をご紹介します。例えば、任意のニュース記事をテキストで入力して検索をかけてみます。ここでは、 Google が発表している記事の内容を貼り付けしています。
すると、画像検索と同じように各社のニュース記事の中から、貼り付けた記事と関連するものが出てきます。約270万件ものニュース記事を検索し、一瞬のうちに結果を返してくれます。
ベクトル検索とは?
前章でご紹介したデモンストレーションの裏側では、 Vertex Matching Engine のベクトル検索という技術が使われています。ここからは、このベクトル検索と Vertex Matching Engine について深掘りし、どのようにして高速なコンテンツ検索を実現しているのか、という点について解説します。
従来、 IT システムで情報を検索するときは、データベースまたは全文検索エンジンを利用するケースが一般的でした。データベースであれば、テーブルを定義した上でコンテンツを登録し、人力でラベリングやタグ付け、カテゴリ分けなどを行っていました。また、全文検索エンジンでは、人間がキーワードを登録して情報を検索していました。
その一方でベクトル検索は、数字の羅列でコンテンツの内容を表し、情報を検索するための技術です。プログラマー向けの言葉を使うと一次元配列という言葉で表現されます。 Google が提供している YouTube や Google 画像検索なども、このベクトル検索の技術を活用しています。
下図の右下にグラフが載っていますが、例えばこの場合は「映画」「音楽」「俳優」という3つの要素に対して、そのコンテンツが各要素をどの程度含んでいるのか、を数字で表すようなイメージです。そして、その数字とベクトルが似ているコンテンツを検索する、というのがベクトル検索の基本的な仕組みになります。
ベクトル検索は様々なシーンで活用できる技術となっており、自然言語(テキスト)の意味を汲み取って情報を検索することもできますし、画像に関しても類似度をもとに自動的に情報を検索します。つまり、人間によるタグ付けやキーワードを設定は不要になり、迅速かつ正確な情報検索を実現できるというわけです。
ただし、一口にベクトル検索と言っても、どんなベクトルでも良いわけではありません。 下図に Embeddings というキーワードが出ていますが、これは「かしこい」ベクトルを意味する言葉であり、最近多くの注目を集めています。
かしこいベクトルと言うのはビジネスシーンで有用なベクトル空間を作るためのものであり、例えば靴の場合は「ヒールの高さでベクトルの空間を並べる」や「同じ色合いの靴でベクトルの空間を並べる」といった内容が考えられます。
先ほどご紹介したデモンストレーションのような内容を実現するためには、この Embeddings をデータから抽出する必要があります。ここでディープラーニングの技術を使いますが、一般的なディープラーニングモデルを使えば、比較的簡単にベクトル空間を作ることができます。そして、 最後に Vertex Matching Engine を活用することで、高速なベクトル検索を実現可能になります。
ベクトル検索の応用範囲
ベクトル検索の利用例
本章では、画像検索やテキスト検索以外にベクトル検索がどのように使われているのか、実際の応用例をご紹介します。
アパレルのオンラインショップなどを手掛けるニッセンでは、ベクトル検索を利用しておすすめシステムの実装に成功しています。当時は Vertex Matching Engine が市場に存在しなかったため、同社のエンジニアが Vertex Matching Engine に相当するものを自前で構築した珍しいケースとなっています。
一般的なおすすめシステムでは「協調フィルタリング」という仕組みを使っています。これは顧客の過去の購買データをもとにパターンを見つけ出し、そのパターンを別の顧客に関連づけることでパーソナライズされた商品をレコメンドする手法です。
一方、ニッセンのおすすめシステムでは Embeddings を利用しており、商品画像の見た目の特徴をディープラーニングによって Embeddings のベクトル空間にマッピングします。そして、商品の説明文については、自然言語の意味をマッピングし、文章の意味を読み取ることでジャンル分けをしています。
この仕組みを採用することで、協調フィルタリングで使うような顧客の行動履歴や購買履歴などのデータは不要になります。商品の画像と説明文さえあれば、最適な商品を自動的に探し出してレコメンドしてくれるため、新商品のように過去データがない場合でも、おすすめシステムで顧客に訴求することが可能になります。
このおすすめシステムを導入したことで、同社ではコンバージョン率やクリック率などが改善し、今まで以上に効率的な経営戦略の実現に成功しました。
ベクトル検索の応用範囲
ここまで、ニッセンの事例をご紹介しましたが、ベクトル検索は画像や文章以外にも様々なシーンで活用できます。例えば、価格や大きさ、重さといった商品自体が持つ属性値をベクトル化し、 Embeddings を抽出することで、類似商品を探し出すことが可能になります。また、商品だけではなくユーザーに応用することもでき、年齢や性別といった属性値を使うことで、似た属性のユーザーを検索できます。
このように、ベクトル検索の応用範囲はとても広く、あらゆるシーンにおいて活用できる技術であると言えます。ただし、ベクトル検索を行うためには Embeddings を取り出す必要があるため、その点は注意が必要です。
近似近傍検索技術とは?
本章では、高速なベクトル検索を実現するための技術である近似近傍検索技術についてご説明します。
BigQuery によるベクトル検索
まず、ベクトル検索の難しさとして、類似度の比較が重い点が挙げられます。ベクトルの数が少ない場合は問題ありませんが、ベクトル自体の数が膨大であったり、ベクトルに含まれる要素の数が多かったりする場合には、コンピューターで処理する計算量が爆発的に増加します。
そのため、重い処理が必要なベクトル検索をいかに高速に行うか、が重要なポイントになりますが、ここで Google Cloud (GCP)の BigQuery 上でベクトル検索を実行した場合の例をご紹介します。
特定の魚の画像と類似しているものを100万枚の画像から探し出す、という内容ですが、これを BigQuery 上で行うと約18秒の時間が掛かります。高速処理が強みである BigQuery ですが、それなりの時間が必要なことがわかります。
ベクトル量子化
前項でご説明した通り、単純な手法でベクトル検索を実行すると多くの時間を要します。そこで、ベクトル検索の高速化を実現するための技術として、ベクトル量子化というものがあります。
これは、ベクトル空間を分割して各領域のコードを並べ、コードブックで検索する技術です。例えばテキストであれば、「映画」というテーマに関連する文章を集めてクラスタを構築し、クラスタごとに代表するベクトルを抽出して検索用のコードブックを作ることで処理を効率化します。これにより、高速なベクトル検索を実現することが可能になります。
高速近似近傍検索
昨今、多くの企業が高速近似近傍検索(aNN)の開発に取り組んでいます。 Google も aNN 開発に多額の投資を続けてきましたが、2020年に Google の Research チームが ScaNN という新しい高速近似近傍検索の技術を開発しました。
これにより、ベクトル検索における精度と速度のトレードオフは大幅に改善され、高い正確性を保ちながらもスピーディーな検索を実現できるようになりました。現在、この ScaNN は YouTube や Google 画像検索など、 Google の主力サービスを裏側で支える必要不可欠な存在となっています。
Vertex Matching Engine
Vertex Matching Engine とは?
最後に、 Vertex Matching Engine について詳しくご説明します。これは Google Cloud (GCP)の AI プラットフォームである Vertex AI で Matching Engine を簡単に使うことができるものです。2021年5月に発表されたサービスであり、誰でもプレビュー版を利用できる状況となっています。
具体的な使い方としては、はじめに学習済みモデルなどを活用して、 Embeddings を用意しておく必要があります。そして、その後にインデックス構築として Embeddings を Matching Engine に登録します。
MatchIt Fast での実装例
ここからは、 MatchIt Fast のソースコードを使った実装例をご紹介します。 MatchIt Fast では、下図のイメージでフロントエンドとバックエンドが構成されています。
一般的にはサーバー側で Embeddings を作ることが多いですが、 MatchIt Fast では、例えば画像検索を行う際に画像をそのままアップロードするのではなく、クライアント側で Embeddings を作成する点が大きな特徴となっています。
今回の例では、フロントエンドとして App Engine を使っていますが、この部分は Compute Engine や Kubernetes Engine 、 Cloud Run など、別のコンピュートサービスでも問題ありません。そして、この App Engine と Vertex Matching Engine の間に VPC を設置し、 VPC 経由で接続する仕組みとなっています。
ここからは、実際のソースコードをご紹介します。
はじめに、画像の場合は MobileNet を利用して Embeddings を抽出します。
次にテキスト(自然言語)の場合は、 Universal Sentence Encoder を使って Embeddings を抽出します。
以下はインデックス構築のソースコードです。 embeddings の置き場所やベクトルの次元数、取得する近傍ベクトル数などを指定します。
最後に、ベクトル検索のソースコードです。 gRPC 経由で呼び出す準備を行い、 embeddings を入れた MatchRequest を送信します。
Google Cloud (GCP)の様々なコンピュートサービスについては、以下の記事が参考になります。
Google Cloud ( GCP )でアプリケーションを動かすにはどのサービスが最適? Cloud Run 、 GCE 、 GKE、GAE まで一挙に解説!
Vertex Matching Engine のメリット
以下の通り、 Vertex Matching Engine には様々なメリットが存在します。スケーラビリティや低遅延、高精度、フルマネージド、低コスト、フィルタリング機能など、多くのものが挙げられます。企業が高品質かつスピーディーなベクトル検索を実現する上で、 Vertex Matching Engine は強い武器になると言えるでしょう。
Vertex Matching Engineに関する Q&A
Q.AutoML Embeddings のように Embeddings をデータから自動生成してくれるサービスはありますか?
A.現状はありません。今後のアップデートにご期待ください。
Q.Excel や Word などの様々な形式で無秩序に保存されている社内文書の検索に本技術の適用可能性はありますか?
A.無秩序という言葉を「構造化がされていない」と解釈した場合、それを非構造化データとして CSV へエクスポートし、自然言語検索として実装化することは可能です。
Q.画像や文章などのマルチモーダルなベクトルを作成して検索することは可能ですか?
A.マッチングエンジンにはベクトルを作成する機能はなく、あくまで検索する機能しか搭載されていないため、自社で画像のベクトルと文章のベクトルを組み合わせるなど、工夫していただく必要があります。
まとめ
今回は YouTube や Google 画像検索など、 Google の主力サービスを裏で支えている「ベクトル近傍検索技術」について解説しつつ、効率的なベクトル検索を実現するための具体的なサービスとして Vertex Matching Engine を詳しくご紹介しました。内容をご理解いただけましたでしょうか。
様々なシーンにおけるデータ量が増大かつ多様化している現代において、ベクトル検索の重要性は年々高まっています。企業がベクトル検索を活用することで、膨大なデータの中から目的のものを迅速かつ正確に探せるようになり、自社の業務効率化や生産性向上を実現できます。
今回の記事でご紹介した Vertex Matching Engine は Google Cloud (GCP)の AI プラットフォームである Vertex AI で Matching Engine を簡単に使うことができ、高品質かつスピーディーなベクトル検索の実現に大きく寄与します。
さらに、 MatchIt Fast や Vertex Matching Engine だけではなく、 Google Cloud (GCP)に搭載されている App Engine や Compute Engine などのコンピュートサービスを組み合わせることで、とても効率的なベクトル検索を行うことができます。
そして、もし Google Cloud (GCP)を導入するのであればトップゲートがオススメです。
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、
- Google Cloud (GCP)支払い代行
- システム構築からアプリケーション開発
- Google Cloud (GCP)運用サポート
- Google Cloud (GCP)に関する技術サポート、コンサルティング
など幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!