リランク

再順位が必要な理由は?

混合検索は、異なる検索技術の利点を組み合わせることで、より良いリコール結果を得ることが可能ですが、異なる検索モードでのクエリ結果はマージおよび正規化(データを一貫性のある標準範囲または分布に変換することで、比較や分析、処理をより効率的に行うこと)を行う必要があります。そのため、これらの結果を大規模モデルに渡す際には、評価システムとして再順位付けモデル(Rerank Model)を導入することが求められます。

再順位付けモデルは、候補ドキュメントのリストとユーザーのクエリの意味的な一致度を計算し、その一致度に基づいて再並べ替えを行うことで、意味的な順位付け結果を向上させます。その基本的な原理は、ユーザーのクエリと各候補ドキュメントとの関連スコアを算出し、関連性の高い順に並べ替えたドキュメントリストを返すことです。一般的な再順位付けモデルには、Cohere RerankやBGE Rerankerなどがあります。

ほとんどの場合、再順位付けの前にプリ検索が行われます。これは、数百万のドキュメントに対して関連性スコアを計算することが非常に非効率だからです。そのため、再順位付けは通常、検索プロセスの最終段階に設けられ、異なる検索システムからの結果をマージおよびソートするのに非常に適しています

しかし、再順位付けは異なる検索システムの結果を統合するだけでなく、単一の検索モードにおいても、意味的な再順位付けを導入することでドキュメントのリコール効果を効果的に向上させることが可能です。たとえば、キーワード検索の後に意味論的な再順位付けを適用することができます。

具体的な実践においては、複数のクエリ結果を正規化するだけでなく、大規模モデルに渡すセグメント数を制限することが一般的です(これは、再順位付けモデルのパラメータで設定可能なTopKで指定します)。これは、大規模モデルの入力ウィンドウにはサイズ制限があるため(通常、4K、8K、16K、128Kトークン)、適切なセグメント戦略とTopK値を選ぶ必要があるからです。

重要なのは、モデルのコンテキストウィンドウが非常に大きい場合でも、過剰なリコールセグメントが関連性の低いコンテンツを導入する可能性があり、その結果として回答の質が低下する可能性があるため、再順位付けのTopKパラメータは必ずしも大きい方が良いとは限らないという点です。

再順位付けは検索技術の代替手段ではなく、既存の検索システムを強化するための補助ツールです。最大の利点は、シンプルで低複雑度な方法で検索結果を改善し、ユーザーが意味的関連性を既存の検索システムに組み込むことを可能にし、大規模な基盤の変更を必要としない点です。

Cohere Rerankの例を挙げると、アカウントを登録し、APIを申請するだけで接続が可能です。また、彼らは多言語モデルも提供しており、異なる言語のテキストクエリ結果を同時にソートすることができます。

Rerank モデルの設定方法

Difyは現在、Cohere Rerankモデルをサポートしており、「モデルプロバイダー-> Cohere」ページに進んで、RerankモデルのAPIキーを入力してください。

Cohere Rerank モデルの取得方法

https://cohere.com/rerank にログインし、ページ内で登録してRerankモデルの利用資格を申請し、APIキーを取得してください。

データセット検索モードでの Rerank モデルの設定

「データセット->データセットの作成->検索設定」ページに進み、Rerank設定を追加してください。データセットの作成時だけでなく、既存のデータセットの設定内でもRerankの構成を変更し、適用されたデータセットのリコールモード設定でRerankの構成を調整することができます。

TopK: Rerank後に返される関連ドキュメントの数を設定します。

スコア閾値: Rerank後に返される関連ドキュメントの最低スコアを設定します。Rerankモデルを設定した後、TopKとスコア閾値の設定はRerankステップでのみ有効です。

データセットの複数召回モードでの Rerank モデルの設定

「キーワード編成->コンテキスト->設定」ページに進み、複数召回モードに設定されている場合はRerankモデルをオンにしてください。

複数の召回モードについての詳細は、複数リコールを参照してください。

Last updated