LLMs as a Reranker for RAG
Rewriter → Retriever
Query Rewriter (查詢重寫)
解決 query 太短、語意不足、詞彙不匹配(vocabulary mismatch)
常見輸出格式包含「改寫成更精準問題 / 關鍵字 / 直接生成一段 answer-like passage(HyDE 類)」
e.g. 改寫成更精準的問題
例:發票開立規則 → 發票開立有哪些檢核規則?
e.g. 產生關鍵字(keywords)=> 適合 BM25 / sparse retrieval
例:發票規則 → 開立、驗收單、字軌、期別、簽章、上傳存證
生成一段「像答案」的 passage(HyDE 類)
概念是:先讓 LLM「假裝回答」一次,產生比較長的語意內容,再拿這段去做向量檢索,讓 embedding 更有訊號。
Retriever (檢索器)
Retriever 就是第一階段負責 從大量文件中撈出 Top-K 候選文件 的元件
e.g. 用 LLM 做 Data Augmentation(資料增強)
- pseudo query:從文件反推「可能的使用者問法」
- soft relevance label:給 query-doc 一個「相關程度分數」(不是硬 0/1)
- triplets:產生
(query, positive_doc, hard_negative_doc)用來訓練對比學習
GitHub - RUC-NLPIR/LLM4IR-Survey: This is the repo for the survey of LLM4IR.
Reranker
Supervised Learning (監督式學習)
學「這對 (query, answerchunk) 是否可靠/相關」,常見型態:
- Cross-Encoder / monoBERT 類:輸入
(q, doc),直接輸出 relevance 分數 - monoT5 類:把 rerank 當成生成
true/false或分數
Unsupervised Learning (非監督式學習)
用 LLM 靠 prompt 直接判斷哪篇比較相關,常見做法:
- pointwise:每篇各自打分
- pairwise:兩兩比較誰更相關
- listwise:一次輸入 TopK,輸出排序(你做的 LLM rank INDEX 很像這個)
優點:快上線、零訓練資料
缺點:成本高、穩定性/一致性比較難控
Data Augmentation(資料增強)
用 LLM 產生 rerank 訓練資料,不一定直接 rerank,而是幫生資料:
- 生成更多 query-doc 標註
- 生成 hard negatives
- 生成解釋/理由當 supervision
Listwise reranker
LLM/模型不是「一篇一篇打分數」,而是一次看整份候選清單,直接輸出排序結果
常見方式對比:
- Pointwise:每個 (query, doc) 各自算相關分數,再排序
- Pairwise:比較 docA vs docB,判斷誰更相關
- Listwise:把 doc1..docK 當成「整體」一起排序(通常更貼近真實排序任務)
在 LLM rerank 裡,Listwise 很常見的做法是 prompt 類似:
給你 Query + 多個候選文件(帶 INDEX),請輸出最相關的排序/TopK
Reasoning-intensive Rerankers
這是更進一步:不只排序,還要求模型「先推理再排序」
核心假設:
很多 query-doc 的相關性不是表面詞匹配,而是要經過推理(例如條件判斷、規則對齊、跨句整合)才能判斷「到底對不對」。
所以這類 reranker 會做類似:
- 先產生「判斷理由 / 證據鏈 / 逐條對齊」
- 再根據推理結果做排序或挑 Top1
- 逐步比對條件、規則、矛盾
- 針對 query 做 evidence checking
- 用 chain-of-thought / self-consistency 提升排序可靠性