# Generation Augmented Retrieval for Open Domain Question Answering
## 1. Introduction
### 甚麼是 Open domain question answering (OpenQA) ?
* 在不能假設使用者的問題範圍已經事先定義好下,回答出任何領域的問題
* 特點 :
* 不限領域:問題可能來自歷史、電影、科學、運動、醫學…任何主題
* 需要知識檢索:模型不能只靠內建知識,常常需要搜尋資料庫或網頁
* 回應流程:問問題 → 系統找資料 → 系統抽取答案 → 回答
### 常用於 OpenQA 的架構 : ==Retriever-Reader Architecture==
1. 在這個架構中,檢索器(Rretriever)首先使用問題作為查詢來檢索一小部分文件
2. 然後閱讀器(reader)會閱讀這些文件以提取或生成答案
* 檢索器(Retriever)的準確性分常重要,由於不可能檢查整個文件集中的所有資訊,檢索的準確性會限制(特別是提取式)閱讀器(reader)的最終表現
### 傳統檢索方法的優缺點
* 稀疏方法 (Sparse Methods): 早期 OpenQA 系統使用如 TF-IDF 和 BM25 等基於稀疏表示的經典檢索方法
:::success
優點 : 稀疏方法輕量且高效
:::
:::danger
缺點 : 無法執行語義匹配,並且若段落之間沒有詞彙重疊(lexical overlap)時,則無法檢索相關段落
:::
* 密集方法 (Dense Methods): 最近的方法(例如 DPR)基於密集表示,學習將查詢和段落嵌入到潛在的向量空間中
:::success
優點 : 能檢索語義相關但詞彙不同的段落
:::
:::danger
計算成本更高,並且由於它們將整個文本序列壓縮成固定大小的向量,可能導致資訊損失
:::
* 近年,使用有使用文本生成 query reformulation 的研究,但這些研究主要針對其他檢索任務
* 重寫為獨立於上下文的(context-independent)查詢
* 重寫成格式良好(well-formed)的查詢
:::danger
限制 :
* 這些方法需要特定領域的 data 或外部資源,這些資源不可用或沒辦法很好轉換到 OpenQA
* 有些使用需要長時間訓練的方式 (RL) ,此方法並不適合用於需要高效的 OpenQA 任務
:::
### ==Generation Augmented Retrieval (GAR)==
* 生成增強檢索(GAR) : 透過文本生成來增強查詢
* GAR 利用預訓練語言模型(PLM)來生成啟發式發現(heuristically discovered)的上下文,並將這些生成的上下文附加到原始問題上
* 啟發式發現 : 用啟發式方法(heuristics) 找到的一個近似、實用、但不一定最優的答案
* GAR 採用序列到序列 (seq2seq) 學習,以問題作為輸入,並生成各種相關的上下文作為輸出,輸出的上下文由 **answer、sentence、titel** 組成 :
* answer : 要回答的 answer
* sentence : 在文章內含有 answer 的句子
* title : 在文章內含有 answer 段落的 title
* 將 answer、sentence、title 和原本的 query 組合成 generation augmented query

* 上圖為 generated query contexts 範例,圖片中 `{}` 內的內容為事實
* 圖片中也顯示使用多個不同的生成上下文可以避免錯誤的答案
* GAR 證明,為單一查詢生成多個不同的上下文並融合它們的檢索結果,能夠持續帶來更好的檢索準確性。這些生成的上下文能顯式地表達原始查詢中未呈現的搜索意
### GAR 的主要優勢
1. 稀疏與密集檢索的差距縮小: 使用稀疏表示 (BM25) 的 GAR 達到了與最先進的密集檢索方法(如 DPR)相當或更好的性能,同時在訓練和推論方面更輕量且更高效
2. 互補性: 由於稀疏和密集表示通常是互補的,GAR 可以輕鬆地與 DPR 結合,透過融合兩者的檢索結果,實現比單獨使用任一方法都更高的性能
3. 最先進的效能: 在 Natural Questions (NQ) 和 TriviaQA 數據集上,當結合提取式閱讀器時,GAR 實現了提取式 OpenQA 的最先進性能。當使用相同的生成式閱讀器時,GAR 的表現也始終優於其他檢索方法
## 2. Related Work
### Conventional Query Expansion
* GAR 和 query expansion (QE) 都在沒有外部監督的情況下,使用相關上下文來擴展查詢
:::success
GAR 更具優勢的原因 :
* GAR 使用儲存在 PLM 中的知識來擴展查詢,而不是使用檢索到的段落
* GAR 擴展的方式是通過文本生成學習到的,傳統 QE 通常是簡單地從檢索到的段落中提取
:::
### Recent Query Reformulation
* Recent Query Reformulation : 利用生成模型針對其他檢索任務進行了查詢重塑
:::danger
Recent Query Reformulation 方面的研究無法用於 OpenQA 的原因 :
1. 需要外部資源: 需要外部資源來形成重塑的查詢。這些資源在 OpenQA 中可能不存在或是難以很好地轉移到 OpenQA 任務中
2. 訓練過程耗時: 訓練過程的時間過於耗時,例如強化學習(RL)
* 例如,Nogueira and Cho (2017) 報告的訓練時間為 8 到 10 天
:::
:::success
GAR 更具有優勢的原因:
* 資源與監督需求較低 :
* GAR 僅使用預訓練語言模型(PLM)中儲存的知識和可自由存取的領域內上下文作為生成目標
* GAR 不需要外部資源(external resources)
* GAR 不需要下游回饋(downstream feedback),例如透過強化學習(RL)進行的監督
* 訓練效率更高 : GAR 利用標準的序列到序列學習(seq2seq)且不涉及耗時的訓練過程 (RL)
:::
### Retrieval for OpenQA
* 現有的 OpenQA 稀疏檢索方法,僅依賴於問題(query)本身的資訊
:::success
GAR 更具有優勢的原因:
* GAR 則透過提取 PLM 內部的資訊,將檢索擴展到與問題相關的上下文 => 能得到更多資訊
* 在保留了稀疏表示的簡單性和效率下,幫助稀疏方法實現與密集方法相當或更優的性能
:::
### Generative QA
* 生成式問答是通過 seq2seq 學習來生成答案,而不是直接提取答案片段
:::info
目標差異:
* GAR 專注於檢索 (retrieve) 階段,目標是生成有助於檢索的相關上下文
* 生成式問答(Generative QA)則是專注於閱讀 (reader) 階段,目標輸出是所需的最終答案
:::
* 因此 GAR 與 Generative QA 是正交的,可以互交搭配使用
## 3. Generation-Augmented Retrieval
### 3.1 Task Formulation (任務方程式)
$$D\subset C$$
* $C$ : 整個 collection of Documents
* $D$ : $C$ 中的一小部分 documents
* GAR 的任務是增加 retriever 的效果以及效率,以此來最終影響 reader 的表現
### 3.2 Generation of Query Contexts (生成的上下文)
* GAR 生成的目標主要有三種
1. **The default target (answer)**
* 預設目標是該任務的標籤,在 OpenQA 中即是答案
* 答案顯然有助於檢索包含該答案的相關段落
* 不同於閉卷問答(closed-book QA)直接使用生成的答案,GAR 將它們視為查詢的上下文用於檢索
:::success
優點:即使生成的答案只是部分正確(甚至不正確),只要它們與包含正確答案的段落相關(例如共同出現),仍可能對檢索有所助益
:::
2. **Sentence containing the default target**
* 段落中包含答案的句子,被用作另一個生成目標
* 類似於使用答案作為生成目標
:::success
優點 : 即使生成的句子不包含答案,由於它們的語義與問題或答案高度相關,仍然有助於檢索相關段落
:::
3. **Title of passage containing default target**
* 使用相關段落的標題作為生成目標
* 若 GAR 能夠學會問題與哪些 documents 相關,那麼使用生成的標題來增強查詢,將能更容易地檢索到這些相關段落
:::success
使用多個生成目標的原因
* 在實驗(Sec. 6.2)中證明,擁有多個生成目標是有益的,因為融合它們的檢索結果能夠持續帶來更好的檢索準確性
* ==文本生成中的幻覺(hallucination)可能導致生成的查詢上下文包含不忠實或非事實資訊,並在檢索過程中引入雜訊==
* 但實驗表明,總體而言它們是有益而非有害的,因為 GAR 顯著改進了檢索和問答性能
* 由於我們生成了三個不同(互補)的查詢上下文並融合了檢索結果,幻覺內容的干擾得到了進一步緩解
:::
### 3.3 Retrieval with Generation-Augmented Queries (使用GAR進行檢索)
* 在生成查詢的上下文之後,我們將它們附加到原始查詢上,形成生成增強查詢
:::danger
不能只使用生成的上下文進行查詢的原因
* 部分生成的答案並不相關
* 僅包含正確答案的查詢(而沒有原始問題),可能會檢索到與上下文不相關的 false-positive 段落
:::
### 多個上下文的處理方式
* 如果存在多個查詢上下文(生成了多於一種上下文),GAR 會執行以下步驟 :
1. 分別檢索: 對於每個生成的上下文(例如,答案、句子、標題),都將其附加到原始問題上,形成一個「生成增強查詢」(generation-augmented query)。然後,使用這些不同的增強查詢進行單獨檢索。
2. 融合結果: 最後,GAR 會融合這些單獨檢索的結果,例如,從每個來源的頂級檢索段落中取相等數量的段落
* 這種多樣性有助於緩解文本生成中可能出現的「幻覺」(hallucination)問題,因為不同上下文的互補性減輕了生成不準確內容所帶來的干擾
## 4. OpenQA with GAR
### 4.1 Extractive Reader
* 論文中使用 DPR 用的 extractive reader
* $D=[d_1,d_2,...,d_k]$ : 檢索到的段落列表
* $S_i = [s_1, s_2,...,s_N]$ : 段落 $d_i$ 中按範圍相關性分數 $S_i$ 排名的前 N 個 spans
* DRP reader 使用 BERT-base 進行特徵學習 (representation learning)
* Extracrive Reader 的流程
1. 根據所有檢索到的段落 $D$ 的 `[CLS]` toekn 去估算每個段落 $d_k$ 的**段落相關性分數 $D_k$**
2. 根據每個 span 的開始和結束 token 去計算**範圍相關性分數 $S_i$**
3. 選擇來自具有最高**段落相關性分數**的段落中,具有**最高範圍相關性分數**的 span 作為答案
### Passage-level Span Voting
::: danger
提取式問答系統中的問題
1. 獨立評估導致證據不足:
傳統或許多現有的提取式問答方法(例如 : DPR)會獨立地測量從不同檢索段落中提取的候選答案範圍(span)的機率
2. 未充分利用多段落的集體信號:
雖然閱讀器從多個段落中檢索資訊,但這些方法並沒有充分利用所有檢索到的段落中具有相同字面意義的文本範圍 (span) 的集體訊號
:::
:::success
論文中提出了 ==Passage-level Span Voting== 機制用於**解決傳統提取式問答方法獨立測量不同檢索段落中答案 span 提取機率的問題**
* 此方式會總和來自不同檢索段落,但具有字面意義上完全一致的 span 的預測結果
* 如果一個 span 在不同的段落中被多次認為是答案,那麼它更有可能是正確答案
* GAR 計算正規化分數
$$p(S_i[j])=softmax(D)[i]\times softmax(S_i)[j]$$
* $p(S_i[j])$ : 表示在段落 $d_i$ 的第 $j$ 個 span
* GAR 會收集所有檢索段落中具有相同 surface string 的 span 的分數,作為整體的段落等級(passage-level)的分數
:::
### 4.2 Generative Reader
* 使用 seq2seq 架構
* 輸入 : question + top-retrieved 段落
* 輸出 : 所需的答案
* 常見的 generative reader : SpanSeqGen 、 Longformer
* 論文中使用 BART-large 作為生成式閱讀器,將 question 與 top-retrieved 段落串聯起來,直到達到其長度限制為止
## 5. Experiment setup
### 5.1 Datasets
* 論文中使用的資料集 : Natural Questions (NQ) 和 TriviaQA (Trivia)

### 5.2 Evaluation Metrics (評估指標)
* **Top-k 檢索準確度(Top-k retrieval accuracy)**:用於評估檢索器的性能
◦ 定義:在 top-k 個檢索到的段落中,包含至少一個正確答案的 span 的 question 與全部 question 的比例
◦ 這取決於 extractive reader 能夠回答的 question 數量的上限
* **精確匹配分數 (Exact Match, EM)**:用於衡量 reader 的性能
◦ 這是指在經過字串正規化(例如去除冠詞和標點符號)之後,預測的答案範圍與(其中一個)真實答案完全相同的 question 所佔的比例
### 5.3 Compared Methods (比較方式)
* 論文主要與 BM25 和 DPR 進行比較,它們分別代表了 OpenQA 中稀疏和密集檢索最常用的最先進方法
* 在 query expansion 方面
* GAR 是第一個專門為 OpenQA 設計的查詢擴展方法
* GAR 會與經典的無監督查詢擴展方法 RM3 進行比較
* 在 passage reading 方面
* 論文中將配備 GAR 的提取式和生成式 reader 與現有方法進行比較
### 5.4 Implementation Details
* 略
## 6. Experiment Result (實驗結果)
### 6.1 Query Context Generation
* 實驗展示生成的 **答案 / 含答案句子 / 文章標題** 都與真實資料高度相關(ROUGE 分數高)
* 加入生成的 context 後,**Query 與正確 passage 的詞重疊明顯提升**
* 即使生成的 answer 錯誤,sentence 或 title 常能補救 → 整體表現仍顯著提升
### 6.2 Generation-Augmented Retrieval
* GAR 對 BM25 的提升
* BM25 top-100(NQ):**78.1%**
* GAR top-100(NQ):**85.3%**
=> **GAR 使 BM25 的檢索能力大幅提升**
* GAR vs DPR(Dense Retrieval)
* NQ:k ≥ 100 時 **GAR ≈ DPR**
* Trivia:多數 k 下 **GAR > DPR**
* 實驗結果
* GAR + DPR 能夠兩者互補 → 達到最高檢索準確度
* 同時使用 answer + sentence + title => 效果最佳
* GAR 在 Who / When / Where / What 等所有類型都優於 BM25
* GAR + DPR 在所有類型幾乎都是第一名
### 6.3 Passage Reading
* 提取式問答(Extractive QA)
* **NQ**
* BM25:37.7
* DPR:41.5
* **GAR:41.8**
* **GAR + DPR:43.8(SOTA)**
* **Trivia**
* BM25:60.1
* DPR:57.9
* **GAR:62.7(SOTA)**

* 生成式問答(Generative QA )
* **NQ**
* BM25:35.3
* GAR:38.1
* **GAR + DPR:45.3(> RAG 44.5)**
* **Trivia**
* GAR > 大多數 generative baseline

* 在生成式設定中,結合 GAR 與 DPR(GAR + DPR)比單獨使用這兩種方法或使用 DPR 作為輸入的基準模型顯著提高性能
* 因為生成式閱讀器僅接受少量段落作為輸入,而當 k 值很小時,GAR 在 NQ 上並未顯著優於密集檢索
* Generalizability(泛化能力)
在沒有訓練集重疊的問題(No Overlap)上:
* Extractive:
* DPR:19.3
* **GAR + DPR:23.9**
* Generative:
* RAG:24.8
* **GAR + DPR:27.0**
=> **GAR 提升“真正沒看過問題”的表現,而不是靠記憶。**

### 6.4 Efficiency(效率)
* GAR 由於使用稀疏表示進行檢索,且不涉及強化學習(RL)等耗時的訓練過程,因此是高效且可擴展的
* GAR 以極低成本達到接近甚至超越 DPR 的效果
| 階段 | DPR(Dense) | GAR(Sparse) |
| ------------ | -------------- | ------------- |
| 訓練 retriever | 24 hr(8 GPU) | 3–6 hr(1 GPU) |
| 建立索引 | 17.3 hr(8 GPU) | 0.5 hr(CPU) |
| 檢索 | 30 min(GPU) | 1–2 min(CPU) |
## 7. Conculsion
* 論文提出了生成增強檢索(Generation-Augmented Retrieval, GAR)
* 證明了由預訓練語言模型(PLMs)顯著豐富查詢語義能夠提高檢索準確度
* 使用稀疏表示(Sparse Representations)的 GAR,其性能表現與基於原始查詢的密集表示(Dense Representations)的最先進方法相似或更優
* GAR 可以很容易地與密集表示方法結合起來,產生甚至更好的結果
* GAR 在提取式開放領域問答(extractive OpenQA)設定下取得了最先進的端到端性能,並在生成式設定下也取得了具競爭力的性能