用語「ベクトル検索」について説明。テキストなどのデータを数値ベクトル(埋め込み)として表現し、それらのベクトル間の類似度を計算することで、関連する情報を見つけ出す検索方法を指す。Azure OpenAI Serviceの独自データ追加機能で利用可能な「キーワード検索」「ベクトル検索」「ハイブリッド検索」「セマンティック検索」という検索手法の違いについても言及する。
AI/機械学習/自然言語処理におけるベクトル検索(Vector Search:ベクター検索)とは、テキストや画像などのデータを数値ベクトルとして表現し、それらのベクトル間の類似度(主にコサイン類似度)を計算することで、関連する情報を見つけ出す検索方法のこと、またその方法による検索のことである。なお、数値ベクトルとは、例えば[0.47, 0.10, 0.26, 0.89, −0.71, ...]のように実数値が並べられた配列のことで、自然言語処理では「埋め込み表現」とも呼ばれる。
ベクトル検索は、単語や文章の「意味」を捉えられるため、ある単語/文章に似た意味を持つ、別の単語/文章を見つけ出したい場面で役立つ(図1を例にすると、「猫」に似た意味を持つ「犬」を見つけ出したい場面など)。
企業がチャットAIを導入する際、「自社内の情報を回答できるようにしたい」というニーズは高い。これを実現するには、「RAG(検索拡張生成)」と呼ばれる仕組み(後日解説予定)を導入するのが一般的だ。そのRAGで自社情報を検索するための方法として、ベクトル検索はよく採用されている。
とはいえ、必ずしもベクトル検索が、従来のキーワード検索よりも優れているとは限らないため、RAGごとに最適な検索方法を選択することが好ましい。また、キーワード検索の方がより手軽に利用できるというメリットもある(利用例の記事)。
RAG構築で代表的なAzure OpenAI Service(以下、AOAI)では、下記の5種類の検索方法が用意されている(※2024年2月2日時点)。
以下では、AOAIにおけるキーワード検索を中心に、各検索方法について簡単に紹介する。
キーワード検索(Keyword Search)とは、一般的に広く使われている用語の意味では「キーワードを使って検索すること」全般を指す。単語や文章レベルでのキーワード検索では、文字列の一致やパターンマッチングに基づいて検索する。また、類似文書のキーワード検索では、単語の出現頻度などで計算するtf-idfという統計的尺度を使って、文書間の類似度に基づいて文書を検索する。これらの検索方法は、埋め込み表現間の類似度で検索するベクトル検索とは検索方法が異なる。
なお、キーワード検索は、SQLなどの専門的な文脈ではより限定的な意味で用いられる。例えばSELECT * FROM books WHERE title LIKE '%RAG%';というSQL文では、title列の文字列の一部が「RAG」にマッチするものを「キーワード検索」している。それに対して、SELECT * FROM books WHERE FREETEXT(title, 'RAG');というSQL文では、SQL Serverなどでサポートされている「フルテキスト検索」と呼ばれる高度なクエリ機能で検索している。ただし実際にフルテキスト検索するには、事前に検索対象のテーブルや列にフルテキストインデックスを作成しておく必要がある。
キーワード検索が主に文字列のパターンマッチングに基づいているのに対し、フルテキスト検索ではテキストの意味内容や構造を理解してより関連性の高い結果を提供する、という点に違いがある。
AOAIのキーワード検索は、上記の専門的な文脈においてはフルテキスト検索を意味する。よって、事前にフルテキストインデックスを作成する必要がある。AOAIのキーワード検索(=フルテキスト検索)については公式ドキュメント(関連性スコアリングのアルゴリズム)を参照してほしい。
また、AOAIのベクトル検索についての公式ドキュメントはこちら(関連性スコアリングのアルゴリズム)で閲覧できる。
上記で紹介した検索方法の中で、説明していないハイブリッド検索やセマンティック検索(=セマンティックランク付け)について簡単に言及しておく。
ハイブリッド検索は、キーワード検索とベクトル検索の良いとこ取りをしようとする検索方法である。AOAIのハイブリッド検索についての公式ドキュメントはこちら(関連性スコアリングのアルゴリズム)で閲覧できる。
セマンティック検索とは、一般的に広く使われている用語の意味では「単語や文章の意味的な理解に基づいて検索すること」全般を指す。その検索は基本的に、ディープニューラルネットワークによる言語理解モデルを利用して単語や文書間の関連性スコアを計算しランク付けを行う仕組みに基づく。意味的な類似性を捉えるベクトル検索も、このセマンティック検索の一種といえる。
AOAIにおけるセマンティック検索は、キーワード検索(厳密にはフルテキスト検索)の結果に対して再度ランク付けすることで、検索結果の品質を高める検索方法だ。同様に、AOAIにおけるハイブリッド検索+セマンティックランク付けは、ハイブリッド検索の結果に対して再度ランク付けすることで、検索結果の品質を高める検索方法である。AOAIのセマンティックランク付けについては、他の検索結果を改善する機能であるため、関連性スコアリングのアルゴリズムの資料のみが閲覧できる。
Copyright© Digital Advantage Corp. All Rights Reserved.