ハイブリッド検索
ハイブリッド検索の必要性
RAG(Retrieval-Augmented Generation)の検索フェーズにおける主要な手法は、セマンティックな関連性に基づいてマッチングを行うベクトル検索です。この技術の原理は、外部ナレッジベース内の文書を意味的に完全な段落または文に分割し、それをコンピュータが理解できる一連の数字(多次元ベクトル)に変換し、ユーザーのクエリも同様に変換することにあります。
コンピュータは、ユーザーのクエリと文の間の微妙な意味的関係を検出することができます。例えば、「猫はネズミを追いかける」と「子猫はネズミを狩る」は、「猫はネズミを追いかける」と「私はハムを食べるのが好きだ」と比べて、より高い意味的関連性を持っています。最も関連性の高いテキストコンテンツを見つけた後、RAGシステムはそれを大規模なモデルに対するユーザーのクエリの文脈として提供し、質問に答える手助けをします。
ベクトル検索は、複雑なセマンティックテキストの検索を可能にするだけでなく、いくつかの他の利点も持っています:
意味的に類似した語の検索(例:ネズミ捕り/チーズ、Google/Bing/検索エンジン)
異言語理解(英語の入力と中国語のマッチングなど)
マルチモーダルな情報の理解(テキスト、画像、音声、映像等の類似性マッチングをサポート)
誤り訂正(スペルミスや不明瞭な表現の処理)
ベクトル検索は上記のシナリオにおいて明確な利点を持っていますが、特定の状況ではパフォーマンスが低下することがあります:
人名や製品名の検索(例:イーロン・マスク、iPhone 15)
略語や特定のフレーズの検索(例:RAG、RLHF)
特定のIDを検索する場合(例:
gpt-3.5-turbo
、titan-xlarge-v1.01
)
これらの弱点は、従来のキーワード検索が得意とする領域であり、以下の点で優れています:
完全一致(製品名、個人名、製品番号など)
短い文字列との一致(ベクトル検索は短い文字列に対して性能が低下するが、多くのユーザーは短いキーワードのみを入力する傾向がある)
低頻度語の一致(低頻度語はしばしば重要な意味を持つことがあります。例えば、「一緒にコーヒーを飲みませんか?」という場合、「have」や「coffee」の方が「you」や「like」より重要です)
ほとんどのテキスト検索シナリオでは、最も関連性の高い潜在的な結果を候補として表示することが主な目標です。ベクトル検索とキーワード検索はそれぞれ異なる利点を持っており、ハイブリッド検索は両者の強みを組み合わせ、その弱点を補うことが可能です。
ハイブリッド検索では、データベースに事前にベクトルインデックスとキーワードインデックスを構築しておく必要があります。ユーザーのクエリが入力されると、両方の検索手法を使用して文書から最も関連性の高いテキストが取得されます。
"ハイブリッド検索"には厳密な定義が存在しません。本稿では、ベクトル検索とキーワード検索の組み合わせを例示しています。他の検索アルゴリズムの組み合わせもまた、"ハイブリッド検索"と呼ぶことができます。例えば、エンティティの関係性を検索する際に知識グラフ技術を組み合わせることが可能です。
異なる検索システムは、テキスト(段落、文、単語)間の様々な微妙な関係を見つける能力に優れており、完全な関係、意味的関係、主題的関係、構造的関係、エンティティ関係、時間的関係、イベント関係などが含まれます。すべてのシナリオに適した単一の検索モードは存在しません。ハイブリッド検索は、複数の検索システムを組み合わせることにより、異なる検索技術間の補完性を実現します。
ベクトル検索
定義:クエリ埋め込みを生成し、そのベクトル表現に最も類似したテキストセグメントを取得します。
TopK: ユーザーのクエリに最も類似したテキストフラグメントを選定する際に使用されます。システムは、選択されたモデルのコンテキストウィンドウサイズに基づいて、フラグメントの数を動的に調整します。デフォルト値は3です。
スコア閾値: テキストフラグメントをフィルタリングするための類似性のしきい値を設定するために使用されます。つまり、設定されたスコアを超えるテキストフラグメントのみを対象とします。システムのデフォルト設定では、このオプションはオフになっており、リコールされたテキストフラグメントの類似性値はフィルタリングされません。オプションを有効にすると、デフォルト値は0.5です。
Rerankモデル: "Model Providers"ページでRerankモデルのAPIキーを構成した後、リトリーバル設定でRerankモデルを使用することができます。
Last updated