膨大なデータの中から必要な情報を見つけ出すことは、現代の情報社会において重要な課題です。従来の検索手法では、単純なキーワードの一致に頼ることが多く、ユーザーの意図や文脈を十分に反映した結果を得ることは困難でした。しかし、AI技術の進歩により、検索の精度と関連性が飛躍的に向上しています。
本記事では、主要な検索手法である「キーワード検索」「ベクトル検索」「セマンティック検索」「ハイブリッド検索」そして「セマンティックハイブリッド検索」について詳しく解説します。それぞれの検索方法の特徴や利点、最適な検索体験を実現するための知識を提供します。
目次
Retrieval-Augmented Generation(RAG)とは?
まず、Azure AI Searchの基盤技術とも言える「Retrieval-Augmented Generation(RAG)」について理解しておきましょう。
RAGは、ユーザーの質問に対して外部データベースから必要な情報を検索し、それをもとに回答を生成する手法です。これにより、膨大なデータベースの中から適切な情報を抽出し、より正確な回答を導き出すことが可能になります。
キーワード検索
キーワード検索は、最も基本的な検索手法であり、指定された単語やフレーズに基づいて関連するドキュメントを探し出します。この方法では、文書内に含まれる単語の頻度や出現位置に注目し、形態素解析を用いて文章を最小の意味単位に分解します。
キーワード検索は、TF-IDF(Term Frequency-Inverse Document Frequency)という指標がよく使用されます。これは、単語が文書内でどれほど頻繁に使われているか(TF)と、その単語が全体のドキュメント群の中でどれほど珍しいか(IDF)を組み合わせたものです。例えば、「猫」という単語が特定の文書で頻繁に使用され、他の文書ではあまり見かけない場合、その文書は「猫」に関する重要な情報を含んでいると判断されます。
TF(Term Frequency):文書内での単語の頻度
まずはTF、つまり「単語の出現頻度」から説明します。これは、ある単語が文書内にどれだけ登場するかを表す指標です。例えば、以下の2つの文書を考えてみます。
- 文書A: 「猫は可愛い。猫は家で飼うのに最適なペットです。」
- 文書B: 「犬は忠実で賢いペットです。」
ここで、「猫」という単語のTFを計算してみましょう。
- 文書Aでは「猫」が2回登場しています。
- 文書Bでは「猫」は一度も登場しません。
TFは次のように計算します:
\( TF=単語の出現回数文書内の総単語数TF = \frac{\text{単語の出現回数}}{\text{文書内の総単語数}}TF=文書内の総単語数単語の出現回数 \)
- 文書Aの総単語数が10語とすると、「猫」のTFは2/10 = 0.2。
- 文書Bでは「猫」が登場しないため、TFは0です。
IDF(Inverse Document Frequency):単語の希少性
次に、IDFについて説明します。これは、単語がどれだけ希少かを測る指標です。よく使われる単語(例えば「は」や「の」など)は重要なキーワードとは言えませんよね?IDFは、文書全体の中で珍しい単語により高い重みを与える役割を果たします。
IDFは以下の式で求められます:
\( IDF=
log(総文書数1+その単語を含む文書数)IDF =
\log\left(\frac{\text{総文書数}}{1 + \text{その単語を含む文書数}}\right)IDF \)
\( =log(1+その単語を含む文書数総文書数) \)
「1」を足すのは、ゼロ除算を避けるためです。
例えば、全体で4つの文書があり、そのうち2つに「猫」という単語が含まれているとします。この場合のIDFは:
\( IDF=log(41+2)=log(43)≈0.124IDF \)
\( = \log\left(\frac{4}{1 + 2}\right) \)
\( = \log\left(\frac{4}{3}\right) \approx 0.124IDF \)
\( =log(1+24)=log(34)≈0.124 \)
もし「猫」が1つの文書にしか登場しなければ、IDFはより高くなり、その単語の希少性が強調されます。
TF-IDFの計算とその意味
最後に、TFとIDFを掛け合わせて、単語の重要度を計算します。
\( TF-IDF=TF×IDFTF\text{-}IDF = TF \times IDFTF-IDF=TF×IDF \)
文書Aでの「猫」のTF-IDFは以下の通りです:
\( 0.2×0.124=0.02480.2 \times 0.124 = 0.02480.2×0.124=0.0248 \)
この値が高ければ高いほど、その単語は「文書A」において重要なキーワードであると判断されます。
まとめ:TF-IDFが検索に与える影響
このようにして計算されたTF-IDFの値は、検索エンジンが「どの文書がユーザーのクエリに最も関連しているか」を判断する際に利用されます。例えば、ユーザーが「猫」に関する情報を探している場合、TF-IDFが高い文書Aの方が、文書Bよりも検索結果の上位に表示されることになります。
TF-IDFの素晴らしい点は、単に単語の出現回数だけでなく、その単語の希少性も考慮していることです。これにより、ありふれた単語に惑わされず、本当に重要なキーワードを抽出できるのです。この考え方は、単純なキーワード検索だけでなく、自然言語処理や情報検索システム全般で広く使われています。
ベクトル検索
ベクトル検索は、従来のキーワード検索を超えた高度な検索手法です。この方法では、文書やクエリを高次元のベクトル空間にマッピングし、その空間内での類似度に基づいて検索を行います。例えば、食べ物の特徴を「甘み」と「価格」という軸で表現すると、リンゴやレモンといった食べ物はそれぞれ異なる位置に配置されます。これらをベクトルとして扱い、コサイン類似度を用いて類似度を測定します。
ベクトル検索は「文書の内容」そのものの意味的な表現をベクトル化し、それに基づいて検索を行う
コサイン類似度は、2つのベクトルがどれだけ同じ方向を向いているかを測る指標です。数式としては、2つのベクトルの内積を、それぞれのベクトルの長さの積で割ったものになります。この値が1に近いほど、2つのベクトルは似ていると判断されます。このようにして、ベクトル検索は単語の表面的な一致に頼ることなく、文書間の意味的な類似性を捉えることができます。
セマンティック検索
セマンティック検索は、検索クエリの意味や文脈を理解することで、より関連性の高い結果を提供する手法です。Azure AI Searchでは、Bingの深層学習モデルを利用し、単なるキーワードの一致だけでなく、クエリの背後にある意図まで解析します。例えば、「ジャガイモの育て方」を検索した場合、キーワード検索では「ジャガイモ」に関連する文書を表示しますが、セマンティック検索では「育て方」に焦点を当てた情報を優先的に表示します。
セマンティック検索では、まずBM25やRRFといった従来のランキング手法で初期検索を行い、その結果に対して深層学習モデルによる再ランキングを行います。このプロセスにより、クエリの意図に最も適したドキュメントが上位に表示されます。さらに、セマンティックアンサーやセマンティックキャプションといった機能を活用し、ユーザーに最適な情報を提示します。
ハイブリッド検索
ハイブリッド検索は、キーワード検索とベクトル検索を組み合わせた手法です。Azure AI Searchでは、これら2つの検索結果をRRF(Reciprocal Rank Fusion)というアルゴリズムを用いて統合します。RRFは、複数のランキング結果を融合し、それぞれの順位に基づいて最終的なランキングを決定します。
例えば、検索システムAで1位にランクされたドキュメントが、検索システムBでは2位にランクされた場合、RRFを用いることでそのドキュメントは総合的に高い評価を得ます。このようにして、キーワード検索とベクトル検索の長所を活かしつつ、より精度の高い検索結果を提供します。
セマンティックハイブリッド検索
セマンティックハイブリッド検索は、ハイブリッド検索にセマンティック検索の再ランキングを加えた最先端の検索手法です。この方法では、まずキーワード検索とベクトル検索を行い、その結果をRRFで統合します。その後、セマンティック検索による再ランキングを行い、最も関連性の高い結果を導き出します。
検索意図を加味したセマンティック検索
+
キーワード検索+ベクトル検索のハイブリッド検索
具体的には、Azure OpenAI ServiceのEmbeddings APIを利用してクエリをベクトル化し、そのベクトルを用いてAzure AI Searchに登録されたドキュメントを検索します。最終的な検索結果は、キーワード、ベクトル、およびセマンティックの各手法の強みを活かしたものとなります。この複合的なアプローチにより、ユーザーの検索意図に最も適した情報を提供できるのが、セマンティックハイブリッド検索の特徴です。
Azure AI Searchのセマンティックハイブリッド検索は、単なる情報の取得にとどまらず、ユーザーの意図を深く理解し、最適な回答を導き出すことを可能にします。これにより、検索体験の質が飛躍的に向上し、より正確かつ有用な情報を得ることができるのです。