# 論文閱讀 : ColBERT: Eicient and Eective Passage Search via Contextualized Late Interaction over BERT
## 摘要
### **1. 研究背景(Background)**
* 近期 **自然語言理解(NLU)** 的進展,帶動了 **資訊檢索(IR)** 的快速發展。
* 最主要的突破來自於 **使用深度語言模型(LMs,例如 BERT)微調用於文件排序(document ranking)**。
* 雖然效果非常好,但 **BERT-based ranking 模型的計算成本極高**:
* 每一筆 *query–document pair* 都必須經過一次大型神經網路
* 這讓效能較傳統 IR 模型高,但成本高出 **數個數量級(orders of magnitude)**
---
### **2. 問題(Problem)**
* 雖然 BERT 排序模型精準,但它無法效率地處理大量文件:
* 每個文件都要與 query 一起輸入模型 → **無法預先計算文件向量**
* 導致 **延遲高、成本高、不可擴展**
---
### **3. 研究貢獻:ColBERT(方法核心)**
論文提出 **ColBERT**,一種專門為「高效檢索」設計的 ranking 模型。
#### **(1) Late Interaction 架構**
* ColBERT 將 **query** 與 **document** 分開、獨立地用 BERT 編碼(encode)
* 之後才做一個 **廉價但強大的 late interaction 步驟**
* 用於捕捉 query 與 document 的 **細粒度(fine-grained)相似度**
#### **(2) 關鍵優勢:延遲但保留細粒度交互**
* 雖然互動步驟延後(late interaction),但仍保留:
* token-level granularity(比向量平均更細)
* 深度模型表徵能力(expressiveness)
#### **(3) 預先計算(pre-computation)能力**
* 因為文件不需要與 query 一起進模型:
* document embeddings 可以 **離線預先計算**
* 查詢階段只需:
1. 計算 query representation
2. 做輕量交互
→ **顯著提升查詢速度**
---
### **4. 更多優勢(Efficiency Contributions)**
#### **(1) 節省 re-ranking 成本**
* 比起傳統 BERT re-ranker
* ColBERT 的 inference 成本低得多
(原因:document embeddings 可離線、interaction 成本更低)
#### **(2) 支援 end-to-end 檢索**
* ColBERT 的 interaction 是 **可修剪(pruning-friendly)** 的
* 使其可以直接配合 **向量相似度索引(vector-similarity index)**
* 不需要 BM25/passage retrieval,再 rerank
→ **可以直接從大型資料庫做端到端檢索**
---
### **5. 實驗結果(Evaluation)**
* 使用兩個最新的 passage search datasets 評估
* 結果顯示:
#### **(1) 效果(Effectiveness)**
ˇ
* ColBERT 的效果:
* **與現有 BERT-based 排序模型相當**
* **優於所有非 BERT baseline**
#### **(2) 效率(Efficiency)**
* 查詢速度:快 **兩個數量級(100×)**
* 需要的 FLOPs:少 **四個數量級(10000×)**
## Introduction


### 1. **背景:神經排序模型的崛起**
近年來,資訊檢索(IR)領域出現大量神經排序模型,例如:
* DRMM
* KNRM
* Duet 系列
這些模型的特色是:
* 不依賴手工特徵(hand-crafted features)
* 使用 **embedding-based 表示法** 來建模 query 與 document
* 能直接捕捉 **local interactions(詞彙層級的細粒度關聯)**
進一步地,研究界開始將 **深度語言模型(ELMo、BERT 等)微調**來評估查詢與文件的相關性,提供:
* 深度上下文化的語意表示
* 解決 query-document 的 vocabulary mismatch 問題
(如使用者查詢用的詞與文件使用的詞不同)
這類基於 BERT 的 ranking 模型迅速達到 SOTA,並已被 Google 與 Bing 部署。
---
### 2. **問題:BERT 雖強大,代價十分昂貴**
雖然 BERT 在檢索效果上大幅領先,但其計算成本極高:
* 與傳統方法相比,**昂貴 100 到 1000 倍**
* 必須把 **每個 query–document pair** 都傳入 BERT 模型
* 基於 transformer 的互動式架構需要大量計算
論文引用測試(MS MARCO Ranking)顯示:
* BERT 讓 MRR@10 提升約 **7%**
* 但讓 query latency 增加到 **數萬毫秒(tens of thousands ms)**
這對搜尋引擎是嚴重問題:
* query latency 增加 100ms 就會影響 user experience 與收入
---
### 3. **現有嘗試:NLU + 傳統模型(BM25)**
為降低 BERT 成本,有些研究用 NLU 技術輔助 BM25,例如:
* doc2query:用生成模型擴增文件
* 用 NLU 預測 term importance 取代傳統 TF
這些方法確實降低 latency,但 **精準度比 BERT 弱許多**。
---
### 4. **提出方法:ColBERT = contextualized late interaction over BERT**
論文提出 **ColBERT**,核心理念是:
> 結合「細粒度互動式模型」的強大語意能力
> 與「表示式模型」的高效率
> 透過 **延遲互動(late interaction)** 同時達成效果與效率
#### **Late Interaction 概念**
1. Query(q)與 Document(d)**分開**由 BERT 編碼
2. 得到各自的一組 contextual embeddings(token-level 表徵)
3. 之後再以 **低成本且能 pruning 的互動運算** 計算關聯性
這樣可以:
* 保留細粒度 token-level matching 的優點
* 又能讓 document embeddings **離線預計算**
---
### 5. **與既有架構的比較:四種 Neural Matching Paradigms**
論文用 Figure X 對照四類模型:
#### (a) Representation-focused(向量化、整體式)
* q、d 各編碼為單一向量
* relevance = similarity(q, d)
* 好處:文件可離線編碼 → 快
* 壞處:失去細粒度語意互動能力
#### (b) Interaction-focused(互動式)
* 基於詞彙互動矩陣(interaction matrix)
* 交由 CNN / MLP / kernels 計算
* 細粒度高 → 成效較好
* 但要即時處理 q×d 全對映 → 成本高
#### (c) Deep interaction(transformer-based,如 BERT cross-encoder)
* 最強的互動能力
* 完整建模 q、d 內與跨句子 token interactions
* 但需每個 pair 都跑一次 BERT → 最昂貴
#### (d) ColBERT(Late Interaction)
* q embeddings 與 d embeddings 互動
* 用 **MaxSim**(逐 token 最大相似度)運算
* 互動延遲 → 可先編 d
* 維持大量細粒度 signal、便於加速與修剪
ColBERT 結合:
| 屬性 | 又有 |
| ------------------------- | ---------------------- |
| Representation-based 的高效率 | ✓ 文件可預先編碼 |
| Interaction-based 的高精準度 | ✓ token-level matching |
---
### 6. **Late Interaction 的能力:支援向量搜尋(vector similarity index)**
ColBERT 的 MaxSim 互動方式:
* 是「可修剪」、「高效率」的
* 能直接配合向量相似度索引庫(例如 FAISS 類似索引)
→ 能直接從數百萬文件中做 **end-to-end retrieval**
這比只做 re-ranking 的模型更能提高 recall。
---
### 7. **效能 & 實用性(從 Figure tradeoff)**
ColBERT 的效能表現:
* 查詢延遲在 **幾十到幾百毫秒**
* re-ranking 模式下:
* **170×** 速度提升
* **14,000×** 減少 FLOPs
* 文件編碼 9M passages:
* 在單機 4 GPU,僅需 **3 小時**
* 空間成本只需要數十 GiBs
* 維持 BERT-level effectiveness
---
### 8. **大量 ablation study 的結果**
研究發現:
* **late interaction 設計本身**
* **MaxSim 運算**
* **BERT 編碼器的特定設計選項**
都是 ColBERT effectiveness 的關鍵。
---
### 9. **主要貢獻(Contributions)**
1. **提出 Late Interaction paradigm**
用於高效且有效的 neural ranking。
2. **提出 ColBERT 模型**
使用 BERT-based query/document encoders
完整實作 late interaction。
3. **示範兩種使用方式**
* 作為 re-ranker(搭配 BM25 等傳統檢索)
* 作為 end-to-end vector retrieval(直接查整個庫)
4. **在 MS MARCO 與 TREC CAR 上完成全面實驗**
展示 ColBERT 的速度與效果優勢。
## method
---
### **1. ColBERT 的核心目的**
ColBERT(Contextualized Late Interaction over BERT)是一個在「效果」與「效率」間取得平衡的 IR 模型。其核心思想:
* **延遲(delay) query–document interaction**
* 使文件向量可以 **離線預算(pre-compute)**
* 查詢階段執行「便宜又可修剪」的互動運算
→ 可支援 **高效 re-ranking**
→ 也可支援 **大規模端到端向量檢索**
重點是:
即使 delay interaction,仍能保留類似 BERT cross-encoder 的細粒度效果。
---
### **2. 架構概述(Architecture)**
ColBERT 的整體架構(Figure: ColBERT-Framework-MaxSim)包含三個部件:
1. **Query encoder**:$f_Q$
2. **Document encoder**:$f_D$
3. **Late interaction module**(MaxSim-based relevance)
給定 query $q$ 與 document $d$,ColBERT 會:
* 用 $f_Q(q)$ 將 query 編成 **embedding bag**:
$$
E_q = { e_{q1}, e_{q2}, \dots }
$$
* 用 $f_D(d)$ 將文件編成另一 embedding bag:
$$
E_d = { e_{d1}, e_{d2}, \dots }
$$
這些 embeddings 都是 **contextualized**(透過 BERT encoder)。
---
# **3. Late Interaction(MaxSim)機制**
ColBERT 的 relevance score 基於:
### **對每個 query token embedding $v \in E_q$**
* 在整個文件 embedding bag $E_d$ 中找:
$$
\max_{u \in E_d} , \text{cosine}(v, u)
$$
### **最後將所有 query token 的最大相似度加總:**
$$
\text{score}(q,d) =
\sum_{v \in E_q}
\max_{u \in E_d} \text{cosine}(v, u)
$$
研究也評估了 **L2 distance** 作為替代(但 cosine 是主要)。
直觀理解:
* 每個 query token $t_q$ 會「搜尋」文件中最相關的 token embedding
* 最大相似度代表「最強匹配 evidence」
* 全部 query tokens 的匹配 evidence 加總 → 文件的最終分數
### **特性:**
1. **非常便宜(cheap)** 的互動運算(比 CNN、attention 等輕很多)
2. **高度可 pruning(適合向量搜尋)**
因為不需要完整 q×d interaction matrix
---
# **4. 比其他互動方法的優勢**
雖然更複雜的互動方式(CNN、attention)可用,但 MaxSim 有兩大優點:
* 計算成本很低(FLOPs 小)
* 更容易透過 vector-similarity indexes 做 **top-k pruning**
(不需逐個計算每份文件的完整互動矩陣)
論文的 ablation(在後面的實驗節)驗證:
* MaxSim-based late interaction 的確明顯優於其他替代設計
---
# **5. Query & Document Encoders**
ColBERT 使用同一個 **BERT 模型**,但用不同的特殊 token 來區分:
* Query: **[Q]**
* Document: **[D]**
免去多模型訓練的負擔,但仍讓模型意識到不同種類的輸入。
---
## **5.1 Query Encoder**
### **(1) Tokenization**
* 將 query 拆成 WordPiece tokens:
$$
q_1, q_2, \dots, q_l
$$
* 在 BERT 的 [CLS] 後面插入 [Q] token
* 若長度不足 $$N_q$$,填充 **[mask] tokens**
* 若超過 $$N_q$$,截斷
### **(2) Query augmentation**
* 透過 [mask] padding,讓 BERT 為填充位置產生 contextual embeddings
* 這提供了一種 **可微、可學習的 query expansion 或 term weighting 機制**
論文指出:
→ Query augmentation 是 ColBERT effectiveness 的關鍵。
### **(3) 線性壓縮層(dimension reduction)**
* 將 BERT hidden size(768)壓縮成較小維度 (m)
* 無 activation
* 目的:
* **控制文件向量的空間成本**
* 減少從 CPU → GPU 的傳輸成本
### **(4) Normalization**
* 將輸出 embeddings 做 L2 normalize
→ dot-product = cosine similarity,範圍 [-1, 1]
---
## **5.2 Document Encoder**
Document encoder 與 query encoder 類似,但有以下差異:
1. 文件前置 token:
* [CLS]
* [D]
2. 文件 **不使用 [mask] 填充**(避免不必要擴增)
3. 文件 embeddings 會經過 **punctuation filtering**
* 刪除標點符號的 embeddings
* 目標是減少 document embedding 數量
* 論文假設 punctuation embeddings 對排序無效
---
# **6. Encoder 總結(公式)**
給定:
* Query tokens:$q_0, q_1, ..., q_l$(含 [Q])
* Document tokens:$d_0, d_1, ..., d_n$(含 [D])
* # 表示 [mask] tokens
ColBERT 的 encoder 表示如下:
### Query embedding bag:
$$
E_q := \texttt{Normalize}(
\texttt{CNN}(
\texttt{BERT}([Q] ~ q_0 ~ q_1 ~ \ldots ~ q_l ~ \ldots)
)
)
$$
### Document embedding bag:
$$
E_d := \texttt{Filter}(
\texttt{Normalize}(
\texttt{CNN}(
\texttt{BERT}("[D] ~ d_0 ~ d_1 ~ \ldots ~ d_n)
)
)
)
$$
(備註:公式中的 CNN 其實是線性層 + normalization 的統稱,並非 convolution)
## ColBERT:Late Interaction
---
### **1. Late Interaction(延遲互動)**
給定:
* Query 的 contextualized embeddings:$E_q$
* Document 的 contextualized embeddings:$E_d$
ColBERT 定義 relevance score $S_{q,d}$ 為:
$$
S_{q,d} := \sum_{i \in [|E_q|]} \max_{j \in [|E_d|]} E_{q_i} \cdot E_{d_j}^{T}
$$
特點如下:
#### **(1) interaction = MaxSim(最大相似度)**
* 每個 query token embedding 與全文件 embeddings 做相似度比較
* 取最大 cosine similarity(因為 embeddings 已 L2 normalize)
* 對所有 query tokens 加總
#### **(2) 沒有 trainable parameters**
* MaxSim 本身不是可學的層(non-parametric)
* 整個互動機制是昂貴 BERT cross-encoder 的高效替代
---
### **2. Training(訓練方式)**
ColBERT 是 **端到端可微分(differentiable end-to-end)** 的。
#### **(1) 參數更新的部分**
訓練時會更新:
* BERT encoder(fine-tuning)
* 線性降維層(linear layer)
* 特殊 tokens 的 embedding:
* [Q]
* [D]
注意:
* Late Interaction(MaxSim)沒有參數,不需學習。
---
#### **(2) Loss:Pairwise softmax cross-entropy**
給定訓練三元組 :
$$
\langle q, d^+, d^- \rangle
$$
對正樣本與負樣本分別計算 score:
* $S_{q,d^+}$
* $S_{q,d^-}$
再以 **pairwise softmax cross-entropy** 最小化:
* 使模型偏好 $d^+$
* 排斥 $d^-$
這種做法跟 RankNet / pairwise ranking 類似。
---
### **3. Offline Indexing:文件向量的離線編碼**
ColBERT 的設計讓:
* 幾乎所有 document encoder 計算都可 **離線完成**
* 查詢階段只需:
* 編 query
* 用 MaxSim 做快速比對
#### Offline indexing 流程:
#### **(1) 文件批次處理**
* 將文件分批(利用 GPU)
* 對每一批跑 document encoder $f_D$
* 輸出 document embedding matrices
#### **(2) Padding 調整與 sequence length 限制**
* 在一個 batch 內,只 pad 到「該 batch 中最長文件」
→ 避免全 corpus 用固定長度 pad 造成浪費
→ 比 public BERT implementation 更有效率
#### **(3) Bucketing(依文件長度排序)**
* 將文件分成群組(例如 B=100,000)
* 每群組內排序文件長度
* 再分成小批次(例如 b=128)送入 GPU
→ 減少 padding 浪費,提高 throughput
#### **(4) CPU 前處理並行化**
WordPiece tokenization 非常耗時
→ ColBERT 將其分散到多個 CPU core 並行加速
#### **(5) Embeddings 儲存格式**
* embeddings 可用 float32 或 float16 儲存
* 儲存後即可:
* 直接重新載入 re-ranking
* 或給 vector-similarity index(如 FAISS)使用
---
### **4. Top-k Re-ranking(小規模 re-ranking)**
適用於:
* 有一小批候選文件(如 BM25 top-1000)
* 需高品質 re-ranking
流程如下:
#### **(1) 預載文件 embeddings**
* 將離線 index 的文件 embeddings 載入記憶體
* 每份文件為 matrix(大小:#tokens × embedding_dim)
#### **(2) 构建 3D tensor**
* 給定 query q,計算:
$$
E_q
$$
* 同時把 k 份候選文件整理為 3D tensor (D):
$$
D \in \mathbb{R}^{k \times L \times m}
$$
(L = 文件 padding 後長度,m = embedding dimension)
並傳到 GPU。
#### **(3) GPU 上做 batch dot-product**
對所有文件和 query embeddings 做矩陣比對(批次運算):
* 大幅快於逐份文件跑 BERT
* 得到 cross-match 矩陣(query tokens × doc tokens)
#### **(4) MaxSim + summation**
對每份文件:
1. 對 document token 維度做 max-pool(MaxSim)
2. 對 query token 維度加總(sum)
得到每份文件的 score。
#### **(5) 排序取前 k**
依 score 排序即可。
#### **為何超省?**
BERT cross-encoder 會:
* 將每份 (q, d) 拼接後投入 BERT
* Attention 成本 ≈ O$(|q|+|d|)^2$
ColBERT:
* 只跑一次 BERT(query encoder)
* 文件已離線編碼
* GPU 上只做 dot-product
→ 速度快許多、scale 到更大 k
---
### **5. End-to-end Top-k Retrieval(大型語料庫搜索)**
適用於:
* 文件量非常大(如 10M documents)
* 不能逐個文件做 MaxSim
ColBERT 的關鍵在於:
#### **MaxSim 是 pruning-friendly**
允許透過向量搜尋取代暴力全文件比對。
---
### **End-to-end Retrieval 流程**
#### **(1) 離線建索引:把所有文件 embeddings index 進 FAISS**
每個 document embedding 都會:
* 存成一條向量
* 維持 mapping:embedding → document ID
* 用 FAISS 建立大型向量索引(IVFPQ)
---
### **(2) Query search:兩階段 retrieval**
#### **Stage 1 — approximate filtering(近似過濾)**
對 query embeddings $E_q$ 中的每個 embedding:
* 在 FAISS 中做 vector similarity search
* 取得 top-(k') 相似的 document embeddings
例如:
* (k = 1000)
* (k' = 500)(每個 query token 找 500 個)
再將這些結果:
* 映射到對應 document IDs
* 合併、去重,得到最多 (N_q \times k') 個候選文件
這些文件 **高機率** 與 query 匹配良好。
---
#### **Stage 2 — Exhaustive refinement(精確 re-ranking)**
只針對 Stage 1 過濾出的 (K) 份文件:
* 執行 Section 4 的「Top-k re-ranking」流程
* 完整算 MaxSim score
* 排序取 k
---
## **FAISS 索引細節**
ColBERT 使用:
#### **IVFPQ(Inverted File with Product Quantization)**
* 空間分成 $P$ 個 cell(例如 1000 個)
* 每個 embedding 依 k-means 查找最近 cell
* 查詢時只搜索前 $p$ 個最接近的 cell(例如 10 個)
#### **PQ 壓縮**
* 每個 embedding 被切成 (s) 個子向量(例如 16)
* 每部分量化為 1 byte
* 相似度計算可在壓縮後空間進行
→ 速度快、記憶體需求更低
## Experimental Evaluation
---
### **1. 實驗欲回答的四個研究問題(RQs)**
論文透過實驗回答四個核心問題:
#### **RQ1 — Re-ranking 效果與效能平衡**
> 在典型的 re-ranking 設定下,ColBERT 是否能兼具高效率與高準確?
(對應 Section 5.1)
---
#### **RQ2 — End-to-end Retrieval 的可行性**
> ColBERT 是否能在巨量文件庫(數百萬級)上直接做端到端檢索?
(對應 Section 5.2)
---
#### **RQ3 — 模型各組件的貢獻**
> Late Interaction、Query Augmentation 等組件對效果的貢獻為何?
(對應 Section 5.3)
---
#### **RQ4 — Indexing 成本**
> ColBERT 的離線文件編碼成本、時間與記憶體需求為何?
(對應 Section 5.4)
---
---
### **2. Re-ranking 實驗結果(MS MARCO)**
(來自 Table 1)
#### **2.1. 結論摘要**
| 方法 | MRR@10 | Latency(ms) | FLOPs |
| ----------------- | --------------------- | -------------------- | ------------------ |
| BERT (Base/Large) | **效果最好** | **10,700–32,900 ms** | **97T–340T FLOPs** |
| 傳統神經模型(KNRM、Duet) | 中等 | 3–28 ms | 百萬~百億 FLOPs |
| **ColBERT** | **介於 BERT 與傳統神經模型之間** | **61 ms** | **7B FLOPs** |
#### **重點:**
* ColBERT 效果 **接近 BERT Base**(34.9 vs BERT Base 36.0)
* 速度 **快 170×**(61ms vs 10,700ms)
* FLOPs reduced **~14,000×**
→ 完美落在「高效能 × 高效率」交集區。
---
### **3. End-to-end Retrieval(直接查整個 880 萬文件庫)**
(Table 2)
#### **3.1. 結論摘要**
| 方法 | Recall@1000 | Latency |
| ---------------------- | ------------ | -------------- |
| BM25 | 81.4 | 62–87ms(取決於版本) |
| docTTTTTquery | 94.7 | 87ms |
| **ColBERT end-to-end** | **96.8(最高)** | 458ms |
#### **重點:**
* ColBERT(end-to-end)比所有基線的 **Recall** 都還高
* 雖然比 BM25 慢(458ms vs 62ms),但 Recall 提升巨大(96.8 vs 81.4)
* 適合需要高 recall 的應用(如 RAG, QA, 全文檢索)
---
### **4. Methodology(實驗方法)**
---
#### **4.1 Datasets & Metrics**
#### **MS MARCO(主要使用的 dataset)**
* 8.8M passages
* 1M real-world Bing queries
* 每個 query 只有 sparse relevant docs(通常 1 筆)
* 評估指標:**MRR@10**
#### 用到三個 query set:
1. 官方 dev set(~7k)
2. 官方 eval set(~7k,結果須提交給官方)
3. 額外 55k validation queries
* 作者取其中隨機 5k 當 local evaluation set
Local set 用於:
* 測 end-to-end retrieval 的效果
* 避免大量提交到 MS MARCO 官方 Leaderboard
---
#### **TREC CAR**
* Wikipedia-based synthetic dataset
* 29M passages
* ~3M queries(由 title + section heading 組成)
* Relevance = 屬於該 section 的 passages
* 評估使用官方 TREC 2017 CAR test set(2,254 queries)
---
### **4.2 Implementation(實作細節)**
#### **框架**
* Python 3
* PyTorch 1.x
* Transformers(HuggingFace)
#### **訓練設定**
* LR = **3e-6**
* Batch size = **32**
* Query embeddings per query = **N_q = 32**
* ColBERT embedding dim = **128**
#### **模型初始化**
* MS MARCO:使用 Google 官方 BERT-Base
* 訓練 200k iterations
* TREC CAR:使用 Nogueira & Cho 特製的 BERT-Large
(避免 Wiki 預訓練資料污染測試集)
* 訓練 125k iterations(較慢)
---
### **4.3 Similarity function**
* Re-ranking:使用 **cosine similarity**(因為 dot-product = cosine)
* End-to-end:使用 **L2 distance**(FAISS 在 L2 domain 更快)
---
### **4.4 FAISS Index Setting**
* Partitions (P = 2000)
* 搜索 p=10 個 partitions
* 每個 embedding 切成 16 個 sub-vectors(PQ 量化)
* 每 sub-vector 1 byte
* 二階段 ranking 的第二階段 index 用 16-bit 浮點值
---
### **4.5 硬體與延遲測量**
#### Re-ranking(GPU 密集)
* Tesla V100 (32GB) ×1
* CPU:Dual Xeon Gold 6132(28 cores / 48 threads)
* RAM:469GB
#### End-to-end & Indexing(CPU & multi-GPU 同時使用)
* 一台相同 CPU/RAM 的機器
* 4 × Titan V(12GB)
* 索引時最多可使用四張 GPU
* 查詢時每個 query 僅用一張 GPU(公平比較)
## ColBERT 實驗:品質–成本權衡(Top-k Re-ranking)
本節分析 ColBERT 在最常見的應用場景:
**re-ranking BM25 的前 k 個候選文件**時的效率與效果。
---
### **1. 實驗目的**
在 re-ranking 上比較 ColBERT 與多種模型:
#### **傳統神經匹配模型**
* KNRM
* Duet
* fastText + ConvKNRM
#### **BERT-based 模型(跨編碼器 cross-encoder)**
* BERT Base
* BERT Large
* BERT Base(論文作者依 ColBERT 訓練流程自行重訓版本)
比較項目:
* MRR@10(驗證集與官方評測)
* re-ranking latency(Tesla V100)
* FLOPs/query
---
### **2. 實驗方式與測量方式**
#### **2.1 MRR@10 衡量效果**
使用 MS MARCO 官方 Metric。
#### **2.2 Latency 測量**
* ColBERT:計入
* gather doc embeddings
* GPU transfer
* query tokenization
* query encoding
* late interaction scoring
* Baselines:只計 GPU scoring,不計 CPU preprocessing
(與 prior work 保持一致)
#### **2.3 FLOPs 計算**
使用 torchprofile 工具。
---
### **3. 主要結果(Table 1)**
表格顯示:
#### **(1) 神經排序的演進:KNRM → BERT**
* 從 2017~2019,MRR@10 提升超過 **16%**
* 但 BERT 代價極高(10,700ms ~ 32,900ms)
#### **(2) ColBERT 打破「越貴越準」的趨勢**

| 模型 | MRR@10 | Latency | FLOPs |
| -------------------------- | --------- | ------------- | -------- |
| BERT Base | 34.7–36.0 | **10,700 ms** | **97T** |
| BERT Large | 36.5 | **32,900 ms** | **340T** |
| **ColBERT (Base encoder)** | **34.9** | **61 ms** | **7B** |
#### 關鍵結論:
* **ColBERT 效果接近 BERT Base(甚至優於原論文中的 BERT Base)**
* **比 BERT Base 快 170×**
* **FLOPs 少 13,900×**
**ColBERT 做到「幾乎同樣效果」但「不到 1% 成本」。**
---
### **4. ColBERT 為何如此便宜?**
文中強調 ColBERT 的時間主要花在:
* gather / stack document embeddings
* 把 embeddings 傳到 GPU
真正的神經運算(包含 query encoding + MaxSim interaction)只花:
→ **13 ms**
而非幾十秒級的 cross-encoder。
#### 提到的可再優化方向(未在本論文做):
* 減少 query padding 長度
* 更小的 embedding dimension
* 向量量化(quantization)
* 若 GPU 記憶體足夠 → document embeddings 直接存 GPU
---
### **5. k 對成本與成效的影響(Figure 4)**

實驗:依 BM25 的 top-k 做 re-ranking,觀察:
* FLOPs(成本)
* MRR@10(效果)
比較 BERT Base(作者訓練版) vs ColBERT。
### **觀察:**
#### **(1) ColBERT 隨 k 增加的成本成長非常緩慢**
因為:
* **ColBERT 的 BERT 只跑一次(query)**
* 文件向量皆已離線算好
結果:
* k = 10 → BERT FLOPs = ColBERT 的 180×
* k = 1000 → BERT FLOPs = ColBERT 的 13,900×
* k = 2000 → BERT FLOPs = ColBERT 的 23,000×
#### **(2) ColBERT 在大 k 時仍能維持接近 BERT 的 MRR**
→ 成本與成效的差距愈拉愈大。
文中指出:
此巨幅 FLOPs 差異甚至讓 **CPU-only ColBERT re-ranking** 變得可行(雖未正式研究)。
---
### **6. TREC CAR 結果(Table 3)**
TREC CAR 使用 MAP 作為主要指標。
| 方法 | MAP | MRR@10 |
| ------------------ | -------- | -------- |
| BM25 | 15.3 | — |
| doc2query | 18.1 | — |
| DeepCT | 24.6 | 33.2 |
| BM25 + BERT Base | 31.0 | — |
| BM25 + BERT Large | 33.5 | — |
| **BM25 + ColBERT** | **31.3** | **44.3** |
#### **結論:**
* 在 TREC CAR 中,ColBERT 的 MAP 與 BERT Base 接近(31.3 vs 31.0)
* 顯著優於 doc2query、DeepCT
* 同樣達到「BERT 級別效果 + 遠低成本」的結論
---
### 總整理
#### **1. ColBERT 幾乎達到 BERT 的 re-ranking 效果**
* MS MARCO:34.9 vs BERT Base 36.0
* TREC CAR:31.3 vs BERT Base 31.0
#### **2. 速度壓倒性勝利**
* 170× faster than BERT Base
* 13,900× fewer FLOPs
#### **3. 更能擴展到高 k(大規模 re-ranking)**
* 成本成長遠小於 BERT
* 效果幾乎不減
#### **4. 成果顯示 Late Interaction 能保留 BERT 的語意能力**
* MaxSim + contextualized embeddings 的架構具高表達力
* 成為 cross-encoder 的高效替代
### ColBERT 實驗
#### End-to-end Retrieval、Ablation、Indexing(詳細整理)
---
### **1. End-to-end Top-k Retrieval(從整個 880 萬文件庫直接檢索)**
本節探討:
ColBERT 是否能「直接」在全 MS MARCO(8.8M docs)上取得前 1000 筆結果,而不是只 re-rank top-1000。
對應結果見 Table 2。
---
### **1.1 比較對象**
#### **Bag-of-Words 檢索(BM25)**
* MS MARCO 官方 BM25
* Anserini BM25(最佳公開基準之一)
#### **三種增強型 BM25 方法:**
1. **doc2query**
用 seq2seq 模型產生 synthetic queries 擴充文件內容
2. **DeepCT**
用 BERT 產生「語意校正後的 term frequency」
3. **docTTTTTquery**
用 T5 產生更高品質 synthetic queries 擴充文件
這三種方法本質仍是 **BM25 retrieval**,只是先修改文件(或其 term weight)。
---
### **1.2 Latency 的細節**
* 基於 Anserini 的模型使用多執行緒,但僅在「不同查詢之間」平行
* 測試 latency 時使用單執行緒(公平比較)
* DeepCT latency 以 BM25 latency 估計,因為其修改僅限 term weights
#### ColBERT end-to-end latency:
* 包含 FAISS filtering + 之後的 re-ranking
* FAISS 使用所有 CPU cores
---
### **1.3 主要觀察(Table 2)**
#### **(1) Anserini BM25**
* MRR@10 = 18.7(基線)
* Latency ≈ 62 ms(非常快)
#### **(2) document-expansion 方法的效果**
* doc2query → 顯著提升效果
* docTTTTTquery → 提升最明顯(增加 9% 以上 MRR@10)
且 latency 幾乎不增加,因為本質仍是 BM25。
#### **(3) ColBERT end-to-end 的效果**
* MRR@10 = **36.7(所有方法中最高)**
* Recall@50 = **82.9**
> 甚至超過 BM25 的 Recall@1000(81.4)
* Recall@200 = 92.3
* Recall@1000 = 96.8(接近完美)
#### **重點:**
> ColBERT 直接搜尋整個集合的效果 **比 BM25→ColBERT re-ranking 還更好**
> 因為 recall 大幅提升(找不到的文件就無法 re-rank)。
---
### **2. Ablation Studies(消融實驗)**
(Figure ablation.pdf)
目的:
了解 ColBERT 的效果來源,哪些組件最有貢獻。
---
#### **2.1 實驗設定**
* 主模型(E)MRR@10 = 34.9(12-layer BERT Base)
* 為降低成本,訓練一組只用前 **5 層 BERT** 的模型(D)
* 所有 ablation 模型也使用 5 層 BERT、訓練 200k iterations
---
### **2.2 消融項目與發現**
#### **(A) 移除 Late Interaction → 單向量表示**
* 用 BERT [CLS] 產生 query/document 單向量
* 用內積算 score
* 表現顯著低於 ColBERT
→ **證明 Late Interaction(token-level matching)至關重要**
---
#### **(B) 將 MaxSim 換成 Average similarity**
* performance 明顯下降
→ **證明「每個 query token 應慎選最佳匹配 token」的重要性**
→ MaxSim 保留了「重要 token 對齊」的能力
---
#### **(C) 移除 Query Augmentation(不使用 mask padding)**
* 效果下降
→ 此特性對 query expansion / term reweighting 很重要
---
#### **(D) 使用少層 BERT(5 layers)**
* 效果比 12 layer 略降
* 但仍能顯示 trends
→ 用於 ablation 的有效替代模型
---
#### **(E) End-to-end retrieval 的改善**
* End-to-end retrieval 把 BM25 完全繞開
* 可以找出 BM25 top-1000 之外的 relevant documents
→ **MRR@10 也獲益(因為找到了 BM25 不會拍進前 1000 的 relevant docs)**
---
### **3. Indexing Throughput 與 Footprint(編碼速度與儲存空間)**
本節衡量:
* offline indexing 的速度
* document embeddings 占用的空間
---
### **3.1 Indexing Throughput(Figure throughput.pdf)**
透過以下優化,ColBERT indexing 能大幅加速:
* batching
* bucket sorting(按文件長度分桶)
* multi-GPU
* CPU 並行 tokenization
結果:
* **MS MARCO 全 8.8M documents 可在約 3 小時內完成 encoding**
* 相較 BERT cross-encoder,ColBERT 只需編一次文件
(cross-encoder 每個 query 都要重新編百份文件)
---
### **3.2 Storage Footprint(Table footprint)**
比較不同設定的 memory usage 與效果:
| Setting | Emb Dim | Bytes/Dim | Space | MRR@10 |
| --------------- | ------- | --------- | ------- | ------ |
| Re-rank, Cosine | 128 | 4 | 286 GiB | 34.9 |
| End-to-end L2 | 128 | 2 | 154 GiB | 36.0 |
| Re-rank L2 | 128 | 2 | 143 GiB | 34.8 |
| Cosine | 48 | 4 | 54 GiB | 34.4 |
| Cosine | 24 | 2 | 27 GiB | 33.9 |
---
### **3.3 關鍵觀察**
#### **(1) 容量可大幅縮減**
* 286 GiB → 27 GiB(縮小 10×)
#### **(2) 效果下降極小**
* 從 MRR@10 = 34.9
* 到 MRR@10 = 33.9(僅下降 1%)
#### **(3) embedding dim 與 bytes/element 是最主要的空間成本來源**
結論:
> ColBERT 可在「保留高效果」的前提下,大幅調整 embedding 大小,使其更適合大型檢索系統的部署。
## Conclusions)
### **1. 研究貢獻總結**
論文提出 **ColBERT**,一種基於深度語言模型(尤其是 BERT)且具備 **contextualized late interaction** 的新型排序模型。
核心優點:
#### **(1) Query 與 Document 可獨立編碼**
* 使用 BERT 將 query / document 各自編成 **細粒度 contextual embeddings**
* 不需要像 cross-encoder 那樣將 query + document 同時餵入 BERT
→ 大幅降低運算成本
#### **(2) Late Interaction(延遲互動)**
* 使用 **便宜** 且 **pruning-friendly** 的 MaxSim 操作
* 只需 token-level 的點積與 max-pool
→ 可在大規模 corpus 中快速比對
#### **(3) 在保持語意表達力的同時極大地提升速度**
* 保留 BERT 的 contextual representation(效果佳)
* 但互動計算非常輕量(效能佳)
---
### **2. 支援 End-to-end 檢索**
因為文件 embeddings 可離線預先計算:
* ColBERT 可以直接從大型文本庫做 **端到端 neural retrieval**
* 不需 BM25 → neural re-ranking 的兩階段流程
這使其成為真正「大規模可用」的神經檢索系統。
---
### **3. 效能與效率(主要結果)**
實驗顯示:
#### **比 BERT-based cross-encoder models 快 170×**
* latency 顯著降低
#### **FLOPs 減少 14,000×**
* computation 成本極度下降
#### **品質影響非常小**
* 效果僅比 BERT Base 稍弱
* 但遠勝所有非 BERT baseline models
**→ ColBERT 成功達成高效能 × 高效率的最佳平衡。**