公開日:2024年6月6日
寄稿者:Meredith Syed、Erika Russi
ベクトル検索は、大規模なコレクションから類似アイテムまたはデータ・ポイント(通常はベクトルとして表される)を見つけるために使用される検索手法です。ベクトル(埋め込み)は、単語、エンティティー、ドキュメント、画像、動画を数値で表現したものです。ベクトルは要素間の意味関係を捉えることができ、機械学習モデルや人工知能アプリケーションの処理効率を向上させます。
通常はキーワード検索を使用する従来の検索とは対照的に、ベクトル検索は、k近傍検索(knn)などのベクトル類似性検索手法に依存し、ある距離メトリックに基づいてクエリー・ベクトルに類似するデータ・ポイントを取得します。ベクトルはデータ・ポイント間の意味的関係と類似性を把握し、単純なキーワード検索の代わりにセマンティック検索を可能にします。
従来のキーワード検索とベクトル検索の違いを説明するために、例を挙げましょう。最高のピザ・レストランに関する情報を探しているとします。従来のキーワード検索エンジンで「最高のピザ・レストラン」を検索した場合、キーワード検索では、「最高」、「ピザ」、「レストラン」という単語を正確に含むページを探し、「最高のピザ・レストラン」や「近くのピザ・レストラン」のような結果のみが返されます。従来のキーワード検索は、検索の背後にある文脈や意図を理解するのではなく、キーワードを一致させることに重点を置いています。
対照的に、セマンティック・ベクトル検索では、検索エンジンがクエリーの背後にある意図を理解します。セマンティックとは、定義によれば、言語において意味に関連することを指します。つまり、セマンティック検索はクエリーの意味とコンテキストを理解します。この場合、「最高のピザ・レストラン」という正確な言葉がコンテンツに使われていなくても、一流のピザ店やお勧めのピザ店について述べているコンテンツが検索されます。その結果、より文脈的に関連性のあるものとなり、さまざまな場所の質の高いピザ店に関する記事やガイドが含まれることになります。
従来の検索方法では、キーワード、タグ、メタデータなど、個別のトークンや機能を使用してデータを表現するのが一般的です。上記の例で示したように、これらの方法は、完全一致に基づいて、関連する結果を取得します。これとは対照的に、ベクトル検索は、連続ベクトル空間、つまりデータをベクトルとして表現する数学的空間における密なベクトル(ベクトルの要素のほとんどまたはすべてがゼロでないようなベクトル)としてデータを表現します。密なベクトルの各次元は、データの潜在的な特徴または側面に対応しています。これは、直接観測されるのではなく、数学的モデルやアルゴリズムによってデータから推測される基礎的な特性または属性です。これらの潜在的な特徴は、データ内の隠されたパターンや関係を捉え、高次元空間内のベクトルとしてのアイテムのより意味のある正確な表現を可能にします。
従来の検索方法では、計算やメモリーの制約により、大規模なデータ・セットや高次元データに合わせた拡張が難しい場合があります。対照的に、ベクトル埋め込みは、より大きなデータ・セットやより複雑なモデルへの拡張が容易です。次元全体にわたりほとんどの値がゼロであるデータのスパース表現とは異なり、埋め込みはほとんどの次元でゼロ以外の値を持つ密なベクトル表現です。これにより、ベクトル埋め込みは、より小さな、より低次元の空間に、より多くの情報を保管でき、より少ないメモリーで済みます。1 その結果、機械学習アルゴリズムとモデルは、より少ない計算リソースで、より効率的に埋め込みを使用することができます。
このモデル選択フレームワークを使用して、パフォーマンス要件とコスト、リスク、導入ニーズのバランスをとりながら、最も適切なモデルを選択してください。
AIデータ・ストアに関する電子ブックに登録する
この解説では、自然言語処理(NLP)で適用できるベクトル表現、つまり単語、エンティティー、ドキュメントを表現するベクトルに焦点を当てます。
「the cat sat on the mat(猫がマットの上に座った)」、「the dog played in the yard(犬が庭で遊んだ)」、「birds chirped in the trees(鳥が木でさえずった)」など、小さなコーパスの文章をベクトル化することで、ベクトル化プロセスを説明しましょう。
ベクトル埋め込みを構築するための最初のステップは、未加工データ・セットをクリーニングして処理することです。これには、ノイズの除去やテキストの標準化が含まれる場合があります。この例では、テキストは既にクリーニングされ、標準化されているため、クリーニングは行いません。
次に、データ・セットでトレーニングするための埋め込みモデルを選択します。トレーニングされた埋め込みモデルは、データ・セット内の各データ・ポイントの埋め込みを生成するために使用されます。テキスト・データの場合、一般的なオープンソースの埋め込みモデルには、Word2Vec、GloVe、FastText、またはBERTやRoBERTaのような事前にトレーニングされた変換ベースのモデルが含まれます2。
この例では、Word2Vecを使用して埋め込みを生成します。
次に、埋め込みはベクトル・データベースに保存されるか、Elasticsearchなどの検索エンジン用のベクトル検索プラグインが使用されます。ベクトル検索では、検索結果の関連性は、クエリーをベクトル化することで生成されるクエリー・ベクトルと、クエリー対象のデータの表現であるドキュメント・ベクトルとの間の類似性を評価することによって確立されます。類似のクエリーに基づく埋め込みを高速かつ効率的に検索できるように、ベクトル・データベースにインデックスを作成する必要があります。Hierarchical Navigable Small World(HNSW)のような手法を使用することで、埋め込みにインデックスを付け、クエリー時の類似性検索を容易にすることができます。HNSWはデータ・セットを整理し、インデックス構築プロセス中に類似したベクトルをクラスタリングすることで、最近傍を迅速に検索できるようにします。
最後に、新しいクエリーのベクトルを生成するメカニズムまたは手順を確立する必要があります。これには通常、ユーザーの検索クエリーをリアルタイムで入力として受け取り、同じベクトル・モデルを使用して処理し、対応するベクトル表現を生成するAPIまたはサービスを作成することが含まれます。このベクトルを使用してデータベースを検索し、最も関連性の高い結果を得ることができます。
ベクトル検索では、関連性はクエリー・ベクトルとドキュメント・ベクトル間の類似性を測定することによって決定されます。2つのベクトルを相互に比較し、それらの類似性を判断するために、ユークリッド距離やコサイン類似度などの距離測定を使用できます3。
ユークリッド距離は、2点間の直線距離の尺度です。これは、対応する2点の座標間の差の二乗値を合計した値の平方根として計算されます。
この式は、追加の次元を考慮するために項を追加することで、より高次元の空間に拡張できます。
コサイン類似度は、多次元空間における2つのベクトル間の類似性の尺度です。2つのベクトル間の角度のコサインを計算し、ベクトルが互いにどれくらい同じ向きを向いているのかを示します。
数学的には、2つのベクトル間のコサイン類似度であるcos(θ)は、2つのベクトルのドット積をそれらの大きさの積で割ったものとして計算されます。
コサイン類似度の範囲は、-1~1です。
コサイン類似度は、ベクトルの大きさよりもベクトル間の方向関係に注目するため、ベクトルを扱う場合に特に役立ちます。
前述の距離メトリクスはベクトルの類似性の測定に使用できますが、類似性検索のためにクエリー時にクエリー・ベクトルに対して可能性のあるすべてのベクトルを比較するのは非効率的で時間がかかります。これを解決するために、近似最近傍探索(ANN)を使用できます。
ANNアルゴリズムは、完全一致を見つける代わりに、ユークリッド距離やコサイン類似度のような距離メトリクスに基づいて、与えられたクエリーにほぼ最も近いベクトルを効率的に探索します。これらのアルゴリズムは、ある程度の近似を許容することで、コーパス全体にわたる埋め込み類似度を計算する必要がなく、最近傍探索の計算コストを大幅に削減できます。
最も一般的なANNアルゴリズムの1つは、HNSWグラフです。Hierarchical Navigable Small Worldグラフ構造は、データセットにインデックスを付け、インデックスを構築する際に類似したベクトルをグループ化することで、最近傍の高速検索を容易にします。HNSWはデータを近接した空間に整理し、それらを関連性の高いものに結びつけます。密ベクトルにインデックスを付ける場合、適切な近傍とその潜在的な接続を特定し、それらをグラフ構造に保存します。密なベクトル・クエリーによるHNSW検索では、最適な近傍のエントリー・ポイントを見つけ、最近傍を返します。
ベクトル検索は、ベクトル表現に基づいて類似したアイテムを効率的に取得できるため、ドメイン全体で多数のユースケースがあります。ベクトル検索の一般的な応用には次のようなものがあります。
ベクトル検索は、クエリーとの類似性に基づいてドキュメント、記事、Webページ、その他のテキスト・コンテンツを検索するために検索エンジンで使用されます。これにより、クエリーで使用された正確な用語がドキュメント内に存在しない場合でも、ユーザーは関連情報を見つけることができます。
ベクトル検索は、大規模なテキスト・コーパスから関連するコンテキストを取得するための検索拡張生成(RAG)フレームワークで役立ちます。RAGは、ベクトル検索と生成言語モデルを組み合わせて応答を生成する生成AIのフレームワークです。
従来の言語生成タスクでは、OpenAI のGPT(Generative Pre-trained Transformer)やIBMのGraniteモデルのような大規模言語モデル(LLM)が入力プロンプトに基づいて応答を構築するために使用されます。ただし、これらのモデルは、文脈的に関連性のある応答や事実に即した応答、または最新の応答を生成するのが難しい場合があります。RAGは、応答生成の前に検索ステップを組み込むことで、この制限に対処します。検索中にベクトル検索を使用して、通常はベクトル・データベースに保存されている、大規模なテキスト・コーパスからの関連する文章やドキュメントなど、文脈的に関連性の高い情報を特定することができます。次に、LLMを使用して、取得したコンテキストに基づいて応答を生成します。
RAGとベクトル検索は、言語生成にとどまらず、質問応答、チャットボット、要約、コンテンツ生成など、他のさまざまなNLPタスクにも応用されています。
ベクトル検索をハイブリッド検索アプローチに統合して、検索プロセスの有効性と柔軟性を高めることができます。ハイブリッド検索は、ベクトル検索を、キーワードベースの検索やメタデータベースの検索などの他の検索手法と組み合わせたものです。ベクトル検索は、クエリーとの類似性に基づいてアイテムを取得するために使用できますが、他の検索方法は、完全一致または特定の条件に基づいてアイテムを検索するために使用できます。
ベクトル・ストアは、画像および動画の検索エンジンで、類似性に基づいて視覚的なコンテンツにインデックスを付け、検索するために使用されます。画像および動画の埋め込みはベクトルとして保管されるため、ユーザーは大規模なデータ・セットから視覚的に類似した画像や動画を検索できます。
ストリーミング・サービスだけでなく、eコマース、ソーシャル・メディア、ビジュアル・メディア・プラットフォームのレコメンデーション・エンジンでは、ベクトル検索を利用できます。ベクトル検索では、ユーザーが過去に触れたことのあるアイテムや気に入ったアイテムとの類似性に基づいて、商品、映画、音楽、その他のアイテムを推薦することができます。
ベクトル検索は、地理空間データの応用で、クエリーの位置やパターンとの近接性または類似性に基づいて、関心のあるポイント、地理的特徴、または空間的軌跡などの空間データを取得するために使用されます。地理情報システムや位置情報に基づくサービスにおける効率的な空間検索と分析を可能にします。
目的に合ったデータ・ストアとAIガバナンスを持つ組織は、AIへの取り組みとビジネス上の利益を最大化する準備が整っています。
watsonx Graniteモデル・シリーズは、ビジネス・アプリケーションとビジネス・ワークフローへ生成AIモデルの導入を促進するための、生成AIモデル・コレクションです。IBMは、Graniteシリーズ最初のモデルの一般提供を発表しました。
RAG は、外部のナレッジ ベースから事実を取得して、最も正確な最新情報に基づいて LLM を確立し、ユーザーに LLM の生成プロセスに関する洞察を提供する AI フレームワークです。
1 Bahaaldine Azarmi and Jeff Vestal、Vector Search for Practitioners with Elastic、Packt Publishing、2023年
2 Vicki Boykis、“What are embeddings”、2023年、https://vickiboykis.com/what_are_embeddings/(ibm.com外部へのリンク)
3 Trey Grainger、Doug Turnbull and Max Irwin、AI Powered Search, Manning Publications、2024年