なぜRerankが必要なのか?

ハイブリッド検索は、異なる検索技術の利点を組み合わせることで、より良い検索結果を得る手法です。しかし、異なる検索モードでのクエリ結果は、統合や正規化(データを統一の標準に変換すること)を行う必要があります。そして、これらの結果を大規模モデルに提供するために、Rerankモデル(Rerank Model)が導入されます。

Rerankモデルは、候補ドキュメントリストとユーザーのクエリの意味的一致度を計算し、それに基づいて再度並び替えを行います。これにより、意味的なソートの結果を改善することができます。 この原理は、各候補ドキュメントとユーザーのクエリの関連スコアを計算し、高い関連性の順にドキュメントを並び替えたリストを返すことです。一般的なRerankモデルには、Cohere rerankやbge-rerankerなどがあります。

Rerankは通常、検索プロセスの最後のステップで行われます。これは、数百万のドキュメントとの関連性スコアを計算するのが非常に効率的ではないためです。そのため、Rerankは異なる検索システムからの結果を統合および並べ替えるのに非常に適しています

ただし、Rerankは異なる検索システムの結果の統合だけでなく、単一の検索モードにおいても有効です。例えば、キーワード検索の後に意味Rerankを導入することで、ドキュメントのリコール効果を改善できます。

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

注意が必要なのは、モデルのコンテキストウィンドウが大きくても、過剰なリコールセグメントが低関連性のコンテンツを導入する可能性があることです。RerankのTopKパラメータを多く設定しすぎると、回答の品質が低下する恐れがあります。

Rerankは、検索技術の代替手段ではなく、既存の検索システムを強化するための補助的なツールです。その最大の利点は、検索結果を改善するための簡単で低複雑度の手段を提供し、ユーザーが意味的関連性を既存の検索システムに取り入れることを可能にすることで、基盤の大規模な変更が不要になる点です。

Cohere Rerankを例にすると、アカウントを登録してAPIを申請するだけで、わずか2行のコードで接続できます。また、彼らは多言語モデルも提供しているため、異なる言語のテキストクエリ結果を一度に並べ替えることが可能です。

Rerankモデルをどのように設定するか?

Difyは現在、Cohere Rerankモデルをサポートしており、“モデルプロバイダー->Cohere”ページにアクセスしてRerankモデルのAPIキーを入力してください:

Cohere Rerankモデルを入手する方法

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

データセット検索モードでRerankモデルを設定する

“データセット->データセットの作成->検索設定”ページにアクセスし、Rerank設定を追加してください。データセットを作成する際にRerankを設定できるだけでなく、既存のデータセットの設定内でRerank構成を変更したり、アプリケーションのレイアウトに適用されているデータセット召回モードの設定でRerankを変更することもできます。

TopK: Rerank後に返される関連文書の数を設定します。

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

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

“キーワード配置->コンテキスト->設定”ページにアクセスし、複数の召回モードに設定されている場合は、Rerankモデルを有効にする必要があります。

複数の召回モードに関する詳細は、「複数の召回」をご覧ください。