Azure AI Searviceの各検索クエリについて調べる
Azure AI Searviceとは
LLMに追加の情報を渡す際に、ドキュメント等のコンテンツを検索する回答の精度が上がる。
その検索に用いるためのRAGの構築ができる。
データの取り込みからコンテンツのベクトル化、クエリ実行まで実施できる。
同様のサービスだと、AWSのOpenSearch, GoogleのVertex AI Matching Engine, Pineconeなどがある。
主なタスク
"インデックスの作成" と "クエリの実行"が主なワークロード
インデックスとはドキュメントや画像などのコンテンツを検索サービスに読み込んで検索可能な状態にすること。
RDBでいうテーブルの概念に近いです。
インデックス作成方法とクエリ実行は別途記事で解説します。
参考:
何が検索結果を決めるのか
検索手法とランキング手法の2つが主に決め手です。
Azure AI Searviceの検索手法
AI SeaviceでRAGを構築する上で主に2つの検索手法があります
- 全文検索
- ベクトル検索
また、上記検索手法を組み合わせる
ハイブリッドサーチ(全文とベクトルのハイブリッド)
があります。
さらに、後述するセマンティックランカーというランキング手法を組み合わせて
ハイブリッドセマンティックランカーという手法を用いることができます。
各手法の詳細
全文検索
主にキーワード検索で使用する。
ランキング手法: BM25確率モデル
クエリと文書の間のキーワードの一致度を評価する。
単純な単語の検索に有用。RAGに組み込む場合はベクトル検索と組み合わせる。
ベクトル検索
クエリ埋め込みを生成し、ベクトルがクエリのベクトルに最も近いドキュメントを検索する
クエリに誤字があったり長い文章でも、類似度で検索できるのRAGに用いられる。
ランキング手法:
クエリとドキュメントのコサイン類似度
ハイブリッド検索
全文検索とベクトル検索のハイブリッド
全文検索とベクトル検索双方のランクが高かったものがハイブリッド検索でも評価が高くなるので
検索結果が安定する。
ランキング手法:
RRFという全文検索とベクトル検索の数値を融合してスコアリングする。
全文検索でもベクトル検索でも上位に来ているものが評価される。
ハイブリッドサーチ+セマンティックランカー
(セマンティック ハイブリッド検索)
セマンティックランカーを使うと、クエリの意味や意図を汲み取ってハイブリッドサーチの結果をリランキングすることができる。
セマンティック検索は、単純なキーワード検索ではなく長文、質問文などに有効なのでLLMと相性がいい。
最も効果的なRAGの構築方法
長い形式のコンテンツをチャンク化して、
ハイブリッド検索 (キーワードとベクトル検索を組み合わせた) を使用し、
セマンティックランキングの有効化
が有効とのことです。
参考:
各検索クエリのベンチマークスコア
キーワードクエリ以外はハイブリッド + セマンティックランカーが最も高いスコアを出しています。
生成AIを使用する人がキーワード単体で検索することはほぼないと思われるので
ハイブリッド + セマンティック ランカーが有効です。
ただしセマンティック ランカーの実行時間は他と比較して遅いらしいのでテストして確認してみようと思います。
Discussion