ベクトル検索は、Google が開発したベクトル検索技術をベースにしています。ベクトル検索では、Google 検索、YouTube、Play などの Google プロダクトの基盤となっている研究と技術を活用できます。
はじめに
ベクトル検索では、意味的に類似または関連する何十億ものアイテムから検索を行うことができます。ベクトル類似度マッチング サービスには、レコメンデーション エンジン、検索エンジン、chatbot、テキスト分類の実装など、多くのユースケースがあります。
ベクトル検索のユースケースとして、数十万もの衣料品在庫を持つオンライン小売店があります。このシナリオでは、マルチモーダル エンベディング API を使用してこれらの商品のエンベディングを作成し、ベクトル検索を利用してテキストクエリと意味的に最も類似した画像にマッチングさせています。たとえば、「黄色のサマードレス」と検索すると、ベクトル検索が最も類似した商品を返します。ベクトル検索では、秒間クエリ数(QPS)、再現率、レイテンシ、費用対効果に優れた大規模な検索が可能です。
エンベディングの利用は、単語やテキストに限られません。画像、音声、動画、ユーザーの好みなど、さまざまな種類のデータに対して、セマンティック エンベディングを生成できます。
Vertex AI を使用してマルチモーダル エンベディングを生成するには、マルチモーダル エンベディングを取得するをご覧ください。
セマンティック マッチングにベクトル検索を使用する方法
セマンティック マッチングは数ステップで行うことができます。まず、多くのアイテムに対してエンベディング表現を生成する必要があります(ベクトル検索の外部で行います)。次に、エンベディングを Google Cloud にアップロードし、データをベクトル検索にリンクします。エンベディングをベクトル検索に追加したら、インデックスを作成してクエリを実行し、レコメンデーションや結果を取得できます。
エンベディングを生成する
データセットのエンベディングを生成します。近似最近傍探索(ANN)を効率的に行えるようにデータの前処理も行います。この操作は Vertex AI の外部で行うことができます。また、Vertex AI の生成 AI を使用してエンベディングを作成することもできます。Vertex AI の生成 AI を使用すると、テキスト エンベディングとマルチモーダル エンベディングの両方を作成できます。
エンベディングを Cloud Storage に追加する
エンベディングを Cloud Storage にアップロードして、ベクトル検索サービスから呼び出せるようにします。
ベクトル検索にアップロードする
エンベディングをベクトル検索に接続して、最近傍探索を実行します。エンベディングからインデックスを作成すると、インデックス エンドポイントにデプロイしてクエリを実行できます。このクエリは近似最近傍を返します。
インデックスの作成方法については、インデックスの管理をご覧ください。
インデックスをエンドポイントにデプロイする方法については、インデックス エンドポイントをデプロイして管理するをご覧ください。
結果を評価する
近似最近傍の結果が得られたら、結果を評価して、ニーズをどの程度満たしているかを確認します。結果の精度が十分でない場合は、アルゴリズムのパラメータを調整するか、より高い秒間クエリ数をサポートできるようにスケーリングを有効にします。これを行うには、インデックスを構成する構成ファイルを更新します。詳細については、インデックス パラメータを構成するをご覧ください。
ベクトル検索の用語
このリストには、ベクトル検索を使用するために理解しておく必要のある重要な用語が含まれています。
- ベクトル: ベクトルは、大きさと方向を持つ浮動小数点値のリストです。数値、空間上の点、方向など、あらゆる種類のデータを表すことができます。
- エンベディング: エンベディングは、データをセマンティックな意味で表すために使用されるベクトルの一種です。エンベディングは通常、ML 技術を使用して作成され、自然言語処理(NLP)やその他の ML アプリケーションでよく使用されます。
- 高密度エンベディング: 高密度エンベディングは、ほとんどがゼロ以外の値を含む配列を使用して、テキストの意味を表現します。高密度エンベディングを使用すると、意味的類似性に基づいて類似した検索結果を返すことができます。
- スパース エンベディング: スパース エンベディングは、高密度エンベディングと比較してゼロ以外の値がほとんど含まれない高次元配列を使用してテキスト構文を表現します。スパース エンベディングは、キーワード検索によく使用されます。
- ハイブリッド検索: ハイブリッド検索では、高密度エンベディングとスパース エンベディングの両方を使用します。これにより、キーワード検索とセマンティック検索を組み合わせて検索できます。ベクトル検索は、高密度エンベディングに基づく検索をサポートしています。パブリック プレビュー機能として、ベクトル検索はスパース エンベディングとハイブリッド検索をサポートしています。
- インデックス: 類似度検索でまとめてデプロイされるベクトルの集合。ベクトルはインデックスに追加することも、インデックスから削除することもできます。類似度検索クエリは特定のインデックスに対して実行され、そのインデックス内のベクトルが検索されます。
- グラウンド トゥルース: ML の正確性を現実世界と比較して検証することを指す用語。「グラウンド トゥルース データセット」のように使用します。
再現率: インデックスによって返された最近傍の中で、実際に正しい最近傍であるものの割合。たとえば、20 個の最近傍のクエリが 19 の真実の最近傍を返した場合、リコールは 19/20x100 = 95%になります。
制限: ブールルールを使用して、検索をインデックスのサブセットに制限する機能。制限は「フィルタリング」とも呼ばれます。ベクトル検索では、数値フィルタリングとテキスト属性フィルタリングを使用できます。
次のステップ
- Vector Search クイックスタートをすぐに使ってみる
- 始める前にで前提条件とエンベディングを確認する。
- 入力データの形式と構造で構成方法を確認する。
- チュートリアルの概要でベクトル検索の他のノートブック チュートリアルを確認する。
- Spanner からベクトル検索にエンベディングをエクスポートする方法を確認する。