# 論文閱讀 : jina-reranker-v3: Last but Not Late Interaction for Listwise Document Reranking ## 摘要 ### 1. **研究問題:神經文件檢索的效率與效果權衡** 作者指出神經檢索面臨根本性的 trade-off: ### 🔹 Cross-encoders * 透過 **joint query–document processing** 關聯查詢與文件 * 因此 retrieval 效果最好 * 但需 **每對 Query–Document 都跑一次 forward pass → 成本極高** ### 🔹 Embedding models(Bi-encoders) * Query 與 Document **分開編碼** * 只需做向量相似度即可檢索 → **效率高** * 但缺乏 **細粒度 token-level 互動訊號** → 效果較差 ### 🔹 Late interaction models(例如 ColBERT) * 查詢與文件仍分開編碼 * 在編碼後才透過 token-level 相似度做互動 * 試圖結合效率與效果兩者的優點 --- ### 2. **作者提出的方法:(LBNL: Last But Not Late Interaction)** 論文提出一種新的互動方式: #### 🔹 新概念:Last but not late (LBNL) 此方法的核心創新包含兩點: #### **(1) Last — 使用每篇文件的最後一個 token 作為 contextual embedding** * 當 Query 與文件一起進入模型後 * 模型在編碼後取每篇 document 的 **最後一個 token** 作為該文件的最終表示 * 相當於讓整篇文件被 Query 重新 contextualize #### **(2) Not late — 互動發生在編碼期間,而非編碼後** 與 late interaction 的最大差別在於: | 方法 | 互動發生時間 | | ------------------------------ | ------------------------------------------------- | | **Late interaction (ColBERT)** | Query/document 先獨立 encode → 之後再做 token similarity | | **本論文 LBNL** | Query **與所有 documents 放在同一個 context 中,編碼時就互動** | 因此: * 查詢與所有文件在模型內互相注意(causal attention) * Cross-document、Query–Document 互動在編碼期間直接發生 * 這種 **listwise 排序方式** 無法用分別編碼模型達成 * 也是本方法的核心創新 --- ### 3. **技術特點總結** 作者強調的技術突破: #### ✦ Causal attention 讓 Query 與多文件同時互動 #### ✦ 每篇文件以 “last token” 表示,保留 contextualized 信息 #### ✦ 模型不是 pairwise,也不是 bi-encoder,而是 listwise #### ✦ 比 late interaction 模型更早互動,因此稱為 **“not late”** --- ### 4. **實驗結果(摘要)** 模型在多項 benchmark 取得 SOTA: #### BEIR(reranker 任務) * **61.85 nDCG@10** → 所有評測模型中最高 * 比前一版 **Jina Reranker v2** 高 **4.79%** #### 多跳檢索(HotpotQA) * 78.58 #### 事實驗證(FEVER) * 94.01 #### 多語系與跨語系檢索 * MIRACL(18 種語言):66.83 * MKQA(26 語言 Recall@10):67.92 #### Code retrieval(CoIR) * 70.64 總結:在多項任務均展現領先性能。 ## Related Work 本章回顧與文件重排序(document reranking)相關的技術類別,特別依據**互動方式**與**訓練目標**進行分類,並對傳統、late interaction 模型與 LLM reranker 系列進行比較。 --- ### 1. 傳統 Learning-to-Rank 方法(L2R) #### 🔹 類別 傳統的 L2R 根據學習目標分為三類: 1. **Pointwise**(逐文檔) * 每篇文件獨立預測 relevance score * 代表研究:~\citep{bruch2023efficient} 2. **Pairwise**(成對比較) * 目標為比較兩文件的相對相關性 * 代表方法:RankNet ~\citep{burges2005learning} 3. **Listwise**(整體排序) * 優化整個排名列表的全域最佳化目標 #### 🔹 Cross-encoders 的地位 * 如 BERT-based rerankers ~\citep{nogueira2019passage} * 透過**完整的 Query–Document 全交互(full interaction)**取得高效能 * 但因每個 Query–Doc pair 都需要獨立 forward pass → 成本高、無法擴展到大型檢索系統 #### 🔹 近期比較研究 * ~\citep{dejean2024thorough} 發現: * **LLM-based reranker 的 zero-shot 表現令人印象深刻** * 但 **傳統 cross-encoders 仍然在多種 retrieval 場景中保持強勢競爭力** --- ### 2. Late Interaction Models(例如 ColBERT 系列) 此類方法的目標是在效率與表現間取得平衡。 #### 🔹 ColBERT 典型機制 * Query 與 Document **各自獨立編碼**(bi-encoder) * 產生 multi-vector 表示(每個 token 一個向量) * 利用 token-level 的 **MaxSim** 進行相似度計算 * 優點: * 文件向量可預先計算、預先儲存(高效率) * 保留 token 級精細匹配訊號(高效果) #### 🔹 近期擴展發展 1. **Matching 機制分析、token pruning 理論研究** * ~\citep{liu2024analysis} * 提供對 late interaction 原理的深度理解 2. **LITE(Learnable Late Interaction)** * ~\citep{ji2024efficient} * 引入可學習的 late interaction 機制 3. **Jina-ColBERT-v2** * ~\citep{jha2024jina} * 將 ColBERT 擴展到多語系場景 4. **PyLate Framework** * ~\citep{chaffin2025pylate} * 提供訓練與部署 late interaction 模型的框架 5. **Late Chunking** * ~\citep{gunther2024late} * 先用 transformer 處理完整文件 * 之後再依 chunk boundary 切分 * 能保留跨 chunk 的 contextual 資訊 * 主要應用於 **retrieval(非 reranking)** --- ### 3. LLM-powered Rerankers(大型語言模型的排序能力) 近年 LLM 推動新的 reranking 家族,包含 discriminative 與 generative 方法。 --- #### 3.1 Generative Ranking Methods #### 🔹 RankGPT ~\citep{qin2023large} * 透過 prompt 讓 LLM **直接生成排序結果(ranked list)** * 利用 LLM 的 reasoning 能力 * 缺點:需較大的模型才能比得過傳統方法 --- ### 3.2 Fine-tuning Approaches ### 🔹 RankVicuna ~\citep{pradeep2023rankvicuna} * 將現有 LLM 微調成 relevance scoring 模型 --- ## 3.3 Efficiency-focused Rerankers 1. **FIRST ~\citep{wu2024first}** * 單 token 解碼加速 inference 2. **PE-Rank ~\citep{qin2024leveraging}** * 使用 passage embedding * 可降低延遲約 **4.5×** --- ### 3.4 新型訓練方法 1. **ERank ~\citep{cai2025erank}** * 將 supervised fine-tuning 與 reinforcement learning 結合 * 提升 rank 質量 2. **Qwen3 Embedding 系列 ~\citep{yang2025qwen3embedding}** * 展示更複雜、階段化的多階段訓練流程 3. **DeAR ~\citep{abdallah2025dear}** * 使用 dual-stage reasoning * 結合 distillation * 特別擅長 cross-document 分析 ## Model Architecture ![image](https://hackmd.io/_uploads/SkjcPSObWg.png) 本節介紹 \model{} 的架構特色,重點在於其「和現有方法完全不同的新型互動方式」。 --- ### 1. 模型互動方式:核心創新 \model{} 的主要創新是: ### 🔹 **提供與現有方法(cross-encoder、bi-encoder、late interaction)不同的新型互動機制** 具體做法為: * **Query 與多篇文件(documents)被放入同一個共享的 context window 中** * 模型能在編碼過程中一次性處理所有資料(listwise interaction) * 這讓模型能在編碼階段就進行: * Query–Document interaction * Document–Document interaction 這種方式是其他類型的 reranker(尤其是 bi-encoder 或 late interaction)無法做到的。 --- ### 2. 基礎模型(Backbone) \model{} 是基於 **Qwen3-0.6B** 進行改造: | 組件 | 規格 | | ------------------ | --------------- | | 模型大小 | 0.6B 參數 | | Transformer layers | 28 層 | | Hidden dimension | 1024 | | Attention heads | 16 | | 最大 context length | **131K tokens** | **超長 context(131K tokens)是本方法的關鍵基礎**,因為需要把 Query + 多篇 Documents 都塞在同一個序列裡。 --- ### 3. 共享 Context Window 的運作方式 \model{} 在 inference 時: * 同時把 Query 與多篇 Documents 放入 transformer 序列 * 使用 causal attention 讓 Query 可以「看到」所有文件 * 文件間也能彼此交互影響 * 最後從每篇 document 的最後一個 token 抽取 contextual embedding(上一段 Introduction 有提到) 這形成一種 **listwise、跨樣本的互動式 reranking**。 --- ### 4. 輕量級 MLP Projector 為了將 contextualized embeddings 轉成適合排名任務的向量,模型額外加入一個小型 MLP: #### 🔹 MLP 結構 * Input: 1024 維 * Layer1: 512 維 * Layer2: 512 維 代表架構: **1024 → 512 → 512** 用途包括: * 降維 * 將 contextual representation 轉為 ranking-friendly embedding * 保持推理成本低(輕量級設計) ![image](https://hackmd.io/_uploads/ByXADHuZZx.png) ## Training(Loss Functions) \model{} 使用多目標(multi-objective)訓練流程,將 InfoNCE 排序損失與多種輔助損失結合,以提升不同情境下的排名品質。整體訓練目標由四部分組成。 --- ### 1. **整體 Loss 結構** 完整損失函數如下: $$ \ell = \ell_{\mathrm{rank}} \cdot 0.45 \cdot \ell_{\mathrm{disperse}} \cdot 0.85 \cdot \ell_{\mathrm{dual}} \cdot 0.85 \cdot \ell_{\mathrm{similar}} $$ 各 loss 的權重代表作者認為的相對重要性: | Loss 類型 | 權重 | 功能 | | ---------------------- | ------ | ---------------------------- | | **Ranking Loss** | *1.0* | 核心排序訊號 | | **Disperse Loss** | *0.45* | 防止 embedding 崩塌,增加多樣性 | | **Dual Matching Loss** | *0.85* | 強化 Query ↔ Document 之間的雙向一致性 | | **Similarity Loss** | *0.85* | 確保文件語義一致性、強化語義 robustness | --- ### 2. **Ranking Loss(InfoNCE)— 核心訓練訊號** 主體損失為 InfoNCE(contrastive learning),用 Hard Negatives 形成強分辨能力。 $$ \ell_{\mathrm{rank}} = - \frac{1}{N}\sum_{i=1}^N \log \frac{e^{s(q_i, d_i^+)/\tau}}{ e^{s(q_i, d_i^+)/\tau} + \sum_{k=1}^{K} e^{s(q_i, d_{i,k}^-)/\tau}} $$ #### 符號說明: | 符號 | 含義 | | ------------------ | ----------------------- | | $q_i$ | Query embedding | | $d_i^+$ | Positive document | | $d_{i,k}^-$ | 第 k 個 negative document | | $s(\cdot,\cdot)$ | Cosine similarity | | $\tau$ | Temperature | | N | 批次大小 | | K | negatives 數量 | 此 loss 的功能: * 拉近 Query 與 Positive Doc * 推開 Query 與 Hard Negatives * 提供最核心的 ranking 訓練訊號 --- ### 3. **Disperse Loss — 防止 embedding collapse** 為避免 embedding 向量聚在一起(representation collapse),作者加入 **dispersive loss**: $$ \ell_{\mathrm{disperse}} = \frac{1}{N} \sum_{i=1}^N \log\frac{1}{K} \sum_{k=1}^K \bigg( e^{s(d_i^+, d_{i,k}^-)/\tau} + \sum_{k'=k}^{K-1} e^{s(d_{i,k}^-, d_{i,k'+1}^-)/\tau} \bigg) $$ 其核心概念: #### 🔹 這個 Loss 推動文檔 embeddings 彼此「遠離」 * 增加點與點之間的多樣性 * 避免模型把所有 documents 壓成相似向量,導致 InfoNCE 失去判別力 --- ### 4. **Dual Matching Loss — 加強 Query↔Document 雙向一致性** 形式與 ranking loss 相同,但: #### 🔹 Query embedding 的取法不同 * 作者在 Query 結尾插入特殊 token **〈query_token〉** * Dual loss 則使用 Query 序列 **前方的 tokens** 生成 Query embedding * 目標是建立: $$ \text{Query → Document} \quad \text{與} \quad \text{Document → Query} $$ 兩個方向的分數一致性(bidirectional consistency) #### 功能: * 讓排序對 Query token 標記位置不敏感 * 降低模型只依賴 Query 某一處 embedding 的風險 * 提升 ranking 在不同 prompt/masking 下的穩健性 --- ### 5. **Similarity Loss — 維持語義一致性** 採用 CoSent 函數(Cosine Sentence Loss, ~\citep{huang2024cosent})。 #### 🔹 做法 * 對每篇文件 $d_i$ 做一次 text augmentation,得到 $d_i^{*}$ * 將 $(d_i, d_i^{*})$ 當作 positive pair * 其他 documents 當作 negative samples 目的: * 讓模型學到 **「不同字面表現但語義相同的文件,其 embedding 應非常接近」** 例如: | 原文 | 增強後 | | --------------------------- | -------------------------------------- | | “What is LBNL interaction?” | “Explain the LBNL interaction method.” | 模型需理解兩者語義相同。 #### 功能: * 增強模型對 paraphrase 的魯棒性 * 減少文件因語言風格等表層差異而錯誤判斷為不同語意 ## Multi-Stage Training 作者採用了 **三階段、漸進式(progressive)訓練策略**,目標是隨著複雜度逐步提升,使模型在多語言、長文本、跨領域、代碼與多 retrieval 系統中都具備穩健且高品質的 ranking 能力。 --- ### 1. **Stage 1:Foundation Specialization(基礎專精階段)** #### 目標: 在不動 backbone 的前提下,先讓模型取得跨領域、多語言與多任務的基本能力。 #### 設定方式: * **基礎模型:Qwen-base(預訓練模型)** * **Fine-tuning:LoRA** * rank ( r = 16 ) * (\alpha = 32) * 套用於: * 所有 attention layers * 所有 FFN layers * **backbone 完全凍結** #### 訓練格式: * 每個 query 搭配 **16 篇文件(1 positive + 15 negatives)** * 每篇 document: * 最長 **768 tokens** * padding/truncation 一律到 768 tokens * 整體序列長度: $$ 16 \times 768 = 12,288 \text{ tokens} $$ #### 訓練資料來源(跨領域) * **BGE-M3**:15 種語言 → 多語言能力 * **Cornstack**:code retrieval * **Biomedical datasets**:biomedical domain retriever * **FollowIR** instruction following dataset 整體來看,Stage 1 是以「凍結 backbone + 多專用 LoRA 配置」打造多語言、多領域的基礎能力。 --- ### 2. **Stage 2:Context & Hard Negative Mining(上下文擴張 + 全面硬負例挖掘)** 此階段大幅增加模型處理複雜資料的能力,包括: #### (1) 上下文擴張(Context Extension) 包含兩種擴張方式: ##### 🔹 (a) 單篇文件長度擴展至 8,192 tokens * 資料來源:**MLDR**(long-document retrieval dataset) * 目的:讓模型更能理解超長篇章 → 有助於 BEIR、HotpotQA、多跳 reasoning ##### 🔹 (b) 增加 negative 數量:15 → 45 每個 query * 在 **維持總序列長度 < 131K tokens** 的前提下實現 * 增加 ranking 的難度 → 強化模型 discriminative 能力 --- #### (2) 全面硬負例(hard negative)挖掘 + 多系統合作 利用多個 retrieval 系統進行跨系統 hard negative 挖掘: * BGE 系列 * Jina * GTE 系列 * E5-Large 每個 query **最多採樣 25 個 hard negatives** 使用「非常低的 temperature = 0.05」讓 hard negatives 的分佈更尖銳、對比更明顯。 ### 使用的資料集: * MS-MARCO * mMARCO(多語言版) * domain-specific synthetic QA pairs(人工生成 QA) ### 同時進行多領域強化(不同子模型): | 子系統 | 功能 | | -------------------- | -------------- | | **jina-en-v2** | 強化英文 retrieval | | **miracl-v2** | 多語言 retrieval | | **cornstack-v2** | code retrieval | | **context-chunk-v3** | 長文本 retrieval | Stage 2 聚焦在「難負例 → 長文本 → 多語言 → 多系統 hard negative」的全面 robustification。 --- ### 3. **Stage 3:Model Ensemble & Optimization(模型合併與最終優化)** #### 目標: 把不同專精領域的模型整合成一個泛用但強力的 reranker。 ### 合併方式(Linear model merging) * 將 Stage 1 + Stage 2 訓練得到的多個專門模型: * biomedical model * instruction-following model * multilingual model * code retrieval model * long-context model ... 等 * **以線性加權方式 merge** ### 模型權重範圍: $$ \text{merge weight} \in [0.25,, 0.65] $$ 目的: * 根據不同 domain 的重要性與效果調整其貢獻 * 保留多專精模型的長處 * 最後得到一個兼具多領域能力、效能高且泛化強的 reranker --- ### 4. **超參數演化(Hyperparameter evolution)** 作者特別指出三階段使用不同超參數策略,反映多目標最佳化需求。 --- #### Stage 1:Foundation(基礎階段) * **學習率:5e-5(較 aggressive)** * **負樣本數量:15 negatives** 快速建立多語言、多領域基礎能力 --- #### Stage 2:Context Scaling & Hard Negatives * **batch size:60 → 6(原因:長文 8K token 太大)** * **learning rate:6e-6(更保守)** 避免上下文變長後模型不穩定 --- ### Loss Weight(依 domain 調整) | Loss | 範圍或固定值 | | --------------- | ----------- | | dispersive loss | **0.45** | | dual matching | 0.65 ~ 0.85 | | similarity loss | 0.75 ~ 0.85 | 根據不同領域的資料特性動態調整 --- ### 小結:三階段訓練策略的本質 **Stage 1:能力基底(多語言、多領域、多形式)** → LoRA + 凍結 backbone,以高效率建立 broad foundation **Stage 2:難度提升(長文本 + 大量 hard negative + 多系統挖掘)** → 擴展 context、增加 negatives、全面強化模型辨識能力 **Stage 3:多專精整合(Linear merging)** → 把各領域強項合併成最終通用型模型 ## Summary of Experimental Results --- ### 1. Overall:\model{} 在多項檢索任務中展現 SOTA 或接近 SOTA 的強勢表現 ![image](https://hackmd.io/_uploads/BJoG1P_bZe.png) * 在 **BEIR(英文檢索)** 取得 **61.85 SOTA** → 打破所有既有 reranker 紀錄 → 比前代模型提升 **+4.79** * 在 **多語言 MIRACL** 中取得 **66.5** → 雖略低於多語專精模型,但跨語系穩定度高 * 在 **跨語言 MKQA** 取得 **67.92** → 接近 multilingual SOTA(68.19) * 在 **Code Retrieval(CoIR)** 取得 **70.64** → 具備其他模型少有的 code-domain competence --- ### 2. English BEIR:全面領先、細項任務表現極強 ![image](https://hackmd.io/_uploads/BkzQ1PdWZg.png) * **HotpotQA(多跳推理)**:78.58 * **FEVER(事實驗證)**:94.01 * **Natural Questions**:74.28 * **ArguAna(argument retrieval)**:73.43 **原因:LBNL listwise interaction 能在 encoding 階段融合多文件訊息,是 bi-encoder / cross-encoder 做不到的。** --- ### 3. Multilingual:高語言穩定性 + 難語言特化能力 ![image](https://hackmd.io/_uploads/H1qm1wuW-l.png) * MIRACL 平均:**66.50** * 在高難度語言中表現亮眼: * Thai:**81.06** * Arabic:**78.69** * Korean:**73.83** 特點:跨語族(Indo-European、Sino-Tibetan、Uralic…)**性能差異極小**。 顯示三階段訓練策略具備強跨語言泛化能力。 --- ### 4. 模型大小 vs 效能:顯著的參數效率 與更大型模型比較: | Model | Params | BEIR | | ------------ | -------- | -------------- | | mxbai-large | 1.5B | 61.44 | | **\model{}** | **0.6B** | **61.85 (更高)** | **使用 2.5× 更少參數 → 效能反而更好** 來源: * LBNL shared forward-pass * 512D ranking projector * Qwen3 backbone 的強 contextualization --- ### 5. Document Ordering Robustness(文件順序魯棒性) 測試三種文件排列: | Order | BEIR | | ---------- | ------------- | | Random | **62.24(最高)** | | Descending | 61.85 | | Ascending | 61.45 | 模型對文件輸入順序 **不敏感** → 表明 LBNL self-attention 能自動聚焦 relevant evidence。 --- ### 6. Cross-Lingual QA(MKQA) * \model{}:**67.92** * Jina multilingual reranker:68.19 **僅落後 0.27**,但參數更小、架構更高效。 --- ### **Final Conclusion(總結)** **\model{} 透過 LBNL listwise interaction + 三階段訓練策略,達成:** * **英文檢索 SOTA(BEIR)** * **跨語言一致性高(MIRACL)** * **跨語言 QA 競爭力(MKQA)** * **高 code 檢索能力(CoIR)** * **遠優於同尺寸模型,也能超越更大模型 1.5B(2.5× 參數效率)** **是一個兼具效能、效率、跨領域能力的 next-gen reranker。**