← 概念辨析に戻る

Concept Contrast Fable

双エンコーダとクロスエンコーダ

先に結論:一つは質問と文書を別々にエンコードして距離を比べる。速度は速いが精度は限られる。もう一つは質問と文書を一緒にエンコードする。精度は高いが計算量が多い。どちらを選ぶかで、あなたの RAG システムが速くて粗いか、遅くて正確かが決まる。

一つは質問と文書を別々にエンコードして距離を比べる。速度は速いが精度は限られる。もう一つは質問と文書を一緒にエンコードする。精度は高いが計算量が多い。どちらを選ぶかで、あなたの RAG システムが速くて粗いか、遅くて正確かが決まる。

寓話

壁越しに詩を唱和することと、顔を合わせて詩を味わうこと

城南に詩社があり、毎月一度、詩の評会を開いていた。最初のやり方は簡単だった。投稿者は紙に詩を書き、審査する者も紙に自分の好みのスタイルのキーワードを書く。スタッフは二つの紙の束をそれぞれ二つの封筒に入れ、評詩房へ送り、キーワードの類似度で並べ替え、上位二十首を選ぶ。この過程は速く、一午後で数百首を処理できた。

しかし問題が起きた。ある詩に「明月松間照」と書かれ、キーワードが「月」「松」に一致し、トップ10に入った。審査員が見てみると、それは打油詩で、たまたまその言葉を使っただけだった。また、全体が絶妙な詩があったが、作者が使った言葉がやや珍しく、キーワードが一致せず、直接除外された。

社長は違和感を覚えた。次の詩評会で彼はやり方を変えた:各詩と各審査員の好みの説明書を並べ、一字一句照らし合わせて読み、詩全体の意境・構造・典故が合うかを見る。正確率は大幅に上がり、良い詩はもう漏れず、悪い詩はもう混ざらない。しかし代償も明らかだった——以前は午後一つで数百首を評せたが、今は午後一つで数十首しか評せない。

社長は振り返り会を開き、二つの方法にそれぞれ名前をつけた。第一を「壁越しの詩の唱和」と呼び、詩と評語を別々に処理し、最後に距離を比べるだけにした。第二を「向かい合っての詩の品評」と呼び、詩と評語を結びつけて細かく審読した。

後に詩社は組み合わせ用法を模索した。一次選抜は壁越しの詩合わせで、数百首から素早く五十首の候補プールを引き出す。精選は対面での詩の品評で、この五十首を細かく並べ替え、上位十首を選ぶ。

このプロセスを一年間運用した後、評詩会の評判は一段上がった。入選する詩の品質は安定し、審査の時間も制御不能にならなかった。詩社には「壁越しに候補を定め、対面で順位を定める」という言葉が広まった。

後に誰かが社長に、なぜすべての投稿を対面での詩の品評で直接処理しないのかと尋ねた。社長は言った。無限の時間と計算力があればもちろん可能だが、我々にはない。良い方法は限られた資源を最も価値のある部分に使うべきだ。

その後、師匠は速い目の弟子にまず十枚を選ばせ、次に細かい目の弟子に一枚ずつ照合させた。速さと丁寧さの分業により、似顔絵屋はついに人を受け止められ、正確に選べるようになった。

双方向エンコーダ (Bi-Encoder)

クエリとドキュメントをそれぞれ独立にベクトルへ符号化し、ベクトル類似度(コサイン距離など)でマッチングする。符号化は事前計算・キャッシュでき、検索は極めて速いが、クエリとドキュメント間の細粒度の相互作用情報は失われる。

クロスエンコーダー (Cross-Encoder)

クエリと文書を連結して一緒にモデルへ入力し、モデルがアテンション機構の中で双方の相互作用関係を同時に考慮できるようにする。精度は双方向エンコーダよりはるかに高いが、クエリ-文書の各ペアごとに完全な推論が一度必要で、事前計算できず、計算コストが高い。

物語の対応

  • 壁越しに詩を詠む:Bi-Encoder、それぞれを符号化し、類似度を高速計算する。
  • 対面で詩を味わう:Cross-Encoder、入力を連結し、細粒度で相互作用を評価。
  • キーワードがたまたま一致した戯れ歌:Bi-Encoder の意味の漂流、ベクトルは似ているが実際には無関係。
  • 珍しい言葉の良い詩が除外される:Bi-Encoderは稀な表現の再現率が不足している。
  • 初回選別+精選の組み合わせフロー:Bi-Encoder で粗く並べ替え → Cross-Encoder で精密に並べ替え、古典的な RAG の二段階検索戦略。

プロジェクトに落とし込む

RAG システムでどちらか一方を選ぶ必要はない。標準的な方法はこうだ:Bi-Encoder が第一段階の検索を行い、膨大な文書から Top-K(通常 50〜200)を召回する。Cross-Encoder が Top-K を再ランキングし、Top-N を大規模モデルに渡す。このパイプラインのコストパフォーマンスは、どちらか一方だけを使う場合をはるかに上回る。調整が必要なのは K 値だけだ——K が小さすぎると Cross-Encoder が救い戻せる良質な文書を取りこぼし、K が大きすぎると Cross-Encoder のコストが制御不能になる。

京ICP备2026014272号