RAG 與知識庫

Cross-Encoder 交叉編碼器是什麼?更準但更慢的比對方式

Cross-Encoder(交叉編碼器)是一種把「查詢」與「文件」串接在一起、輸入到同一個模型裡的打分機制,讓模型直接學習兩者的互動關係,輸出一個相關性分數。它比分開編碼的雙塔做法精準得多,但每一組問題與文件都要各算一次,成本高、速度慢,所以通常只用在候選文件已經縮小之後的重排序階段。
Cross-Encoder 交叉編碼器是什麼?更準但更慢的比對方式:文章重點卡

Cross-Encoder 交叉編碼器是什麼?更準但更慢的比對方式

知識庫撈出來的十份資料裡,只有一份真的答得到問題,剩下九份都只是「字面上有點像」。

交叉編碼器就是負責在最後一關把那一份挑出來的機制。它慢,但它準。

你將學到什麼

一句話定義

把問題跟文件綁在一起深度比對,輸出相關性分數的打分機制。

白話比喻

初選看履歷關鍵字,決選是把人找來面試,一題一題對著問。

用在哪一步

檢索召回之後的重排序階段,只處理少量候選文件。

代價是什麼

逐對計算、耗算力、速度慢,不適合拿來做大規模初步檢索。

定義

Cross-Encoder(交叉編碼器)是一種將查詢(問題)與文件(段落)串接在一起、輸入到同一個 Transformer 模型中的機制,讓模型直接學習兩者的互動關係,輸出相關性分數。

運作方式分三步:輸入串接把問題與文件綁在一起、模型深度編碼同時理解兩者、輸出一個相關性分數。

它不只看文件內容,而是理解問題和文件之間的真正關係。

跟雙塔編碼器差在哪

項目Cross-Encoder 交叉編碼器Bi-Encoder 雙編碼器
輸入方式查詢加文件串接在一起查詢與文件分開編碼
互動方式深度語義互動,逐對分析向量相似度計算,獨立比較
相關性判斷非常精準較粗略
計算成本高,較耗算力也較慢低,效率高、速度快
適用場景重排序,精準挑選最佳答案初步檢索召回,快速找出候選文件

在 RAG 流程中的位置

第一步用向量搜尋或 BM25 做文件檢索,撈出前 K 筆候選文件。

第二步進入 Re-ranking 重排序,用交叉編碼器逐一與問題配對打分。第三步輸出分數最高的前幾筆,作為最終送進模型的依據。

實際用例

問「AI 如何應用在醫療影像診斷」,候選文件裡有一份談深度學習分析 X 光與電腦斷層影像、一份談影像壓縮技術、一份談醫療產業市場規模。

三份都含有「醫療」與「影像」,用 Embedding 相似度不一定分得出來,交叉編碼器則會把第一份的分數拉得明顯高於另外兩份。

常見誤解常見誤解是既然它比較準,那就整套都用它。實際上不可行:交叉編碼器要逐對計算,對整個知識庫跑一次的成本無法承受,而且需要較強的運算資源、也不適合對即時性要求很高的應用。正確用法永遠是先召回再重排,讓便宜的方法過濾大量、昂貴的方法決定順序。
本文源起本文內容出自酒Ann 的「AI 實戰陪跑班」課程教材,由酒Ann 編寫成彙編條目。想系統性搞懂 AI 名詞,歡迎追蹤 酒Ann 的 Facebook

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

它跟雙塔編碼器差在哪?
雙塔(Bi-Encoder)把查詢與文件分開編碼成向量,再算向量相似度,速度快但判斷比較粗略,適合從大量資料裡快速找出候選。交叉編碼器則把兩者串接後一起送進模型做深度語義互動,判斷非常精準,但每一組都要重算,成本高很多。
為什麼它比較準?
因為它能建立查詢與文件之間的交互關係,理解語境、同義詞、指代、省略、邏輯關聯這些複雜語義。雙塔是各自變成一個向量之後才比對,資訊在編碼那一步就已經壓縮掉了,交叉編碼器則是在完整看過兩邊文字的情況下打分。
實務上怎麼搭配使用?
標準做法是兩段式:先用向量搜尋或關鍵字檢索召回前 K 筆候選文件,再用交叉編碼器對這些候選逐一打分做重排序,取出最相關的前幾筆送給模型。根據資源選擇合適的模型大小,也可以搭配快取提升效率,在延遲可接受的範圍內追求最高精度。