クロスエンコーダとは

クロスエンコーダとは、問い合わせの文と候補の文書を「一緒に」AIモデルへ入れ、両者の関連度を直接スコアにする方式のことです。精度が高い反面、計算が重く遅いという性質があります。検索の精度を最後に仕上げるリランキングでよく使われます。

バイエンコーダとの違い

よく対比されるのがバイエンコーダです。バイエンコーダは、問い合わせと文書を別々にベクトル化してから近さを測る方式で、文書側を前もって計算しておけるため大量の検索を高速にこなせます。一方クロスエンコーダは、問い合わせと文書を毎回ペアで読み込んで関連度を測るため、両者のかみ合わせまで細かく見られて精度は高いものの、事前計算ができず一件ずつ計算が要ります。

だから「最後の少数」にだけ使う

重いので全文書には使えません。そこで実務では、まずバイエンコーダで候補を高速に絞り、最後に残った少数だけをクロスエンコーダで精密に並べ替えるという分業が定番です。速さと正確さを役割分担で両立させる発想で、リランキングの後段を担う場面が代表的です。

Topic同じ作業で「65時間」と「5秒」の差

文章を意味で比べるツールSBERTの公式資料では、1万件の文から最も似たペアを探す作業を比べています。クロスエンコーダだと約65時間かかる計算が、バイエンコーダならわずか約5秒で済むそうです。クロスエンコーダは精度こそ高いものの、全件にかけると現実的でないほど時間がかかる、という使い分けの理由が、この時間差にはっきり表れています。

クロスエンコーダに関するよくある質問

バイエンコーダとは何が違うのですか?
バイエンコーダは問い合わせと文書を別々にベクトル化して近さを測るため高速ですが、クロスエンコーダは両者を毎回ペアでまとめて読み込み、関連度を直接スコアにします。かみ合わせまで細かく見るので精度は高い反面、事前計算ができず計算が重くなります。
なぜ全文書には使わないのですか?
重すぎて現実的でないためです。文章比較ツールSBERTの公式資料では、1万件から最も似たペアを探す作業がクロスエンコーダだと約65時間、バイエンコーダなら約5秒とされます。そこで、まず高速な方式で候補を絞り、最後の少数だけをクロスエンコーダで精密に並べ替える分業が定番です。
どんな場面で使われますか?
検索の精度を最後に仕上げる「リランキング(並べ替え)」の後段でよく使われます。高速な検索で集めた候補の上位だけをクロスエンコーダで精密に並べ直し、本当に関連の高いものを上に持ってくる役割です。