📖 機器閱讀理解 (MRC)

BiDAF → BERT → RAG · 博物館導覽機器人 · 120 天踩坑 · BERT vs LLM 選型

作者TonTon Huang Ph.D.投入時間:2018/10/15–2019/02/10(~120 天)|更新:2026-07-28

機器閱讀理解(MRC)要解決的問題是:「給機器一篇文章和一個問題,讓它找出答案」。比如展場導覽機器人,參觀者問「這件藏品是哪個朝代的?」,機器必須從展品說明書中定位並抽取出「明朝」這個答案。

MRC 是 NLP 領域中公認難度最高的任務之一,因為它同時需要語意理解、跨句推理、段落定位、答案抽取四種能力。2018 年 BERT 問世後才真正讓 MRC 達到實用水準。

~120 天
研發投入
SQuAD
基礎數據集(機翻)
DRCD
台達電繁中數據集
RAG
2024+ 最佳架構

MRC:最需要 LLM 的 NLP 任務,但傳統方法仍有一席之地

💡 核心論點:MRC 是五大 NLP 任務中傳統方法 vs LLM 界線最模糊的一個。固定知識庫(FAQ、產品說明)→ BERT+RAG;開放域問答(需要多步推理、跨文件融合)→ LLM(GPT/Gemini)。
比較維度 BERT 微調(封閉知識庫)固定域首選 LLM + RAG(開放域)複雜推理首選
知識庫大小適合 <10 萬文件,索引後快速檢索可接入任意規模知識庫,向量數據庫配合
答案必須在文本內是,抽取式 MRC(Extractive)答案是原文片段生成式 MRC,可融合多篇文章、生成摘要性答案
多步推理困難:需要跨文件的推理依賴LLM 天然支援多步推理
幻覺風險幾乎無:答案限定在原文內有:LLM 可能生成文件中不存在的答案
延遲GPU ~50ms,CPU ~500msAPI round trip 1–5s + 生成時間
成本一次微調,邊際成本接近零每次問答消耗 Token(含文件 context)
✅ 2026 黃金組合:Bi-encoder 召回 + BERT reranker + LLM 生成答案
BGE Embedding → FAISS 向量搜尋 → 召回 Top-5 文件 → BERT cross-encoder 精排 → GPT-4o 生成最終答案並附上引用來源。既保留效率,又有 LLM 的語言流暢性。

BiDAF → QANet → Transformer-XL → BERT

BiDAF
雙向注意力流
Ruminating
多層注意力
Match-LSTM
序列匹配
QANet
純 CNN+Transformer
BERT
統一表示
RAG + LLM
2024+
🔷 BiDAF(Bidirectional Attention Flow, 2016)
arXiv:1611.01603 | 當時 SQuAD 排行榜第一
同時計算「文章-問題」和「問題-文章」雙向注意力,讓模型能同時關注問題相關的文章段落。引入 Character Embedding 解決 OOV(未登錄詞)問題。是 2016–2018 年 MRC 的標準基線模型。
🧮 QANet(2018,Google Brain)
arXiv:1804.09541 | 推論速度提升 13x
完全拋棄 RNN,改用純 CNN + Transformer。資料增強(Data Augmentation)是亮點:用機器翻譯把文章翻成其他語言再翻回來,生成語意相同的多元訓練數據。推論速度比 RNN-based 模型快 13 倍,是 BERT 問世前 SQuAD 最強模型。
⚡ Transformer-XL(2019,Google Brain)
arXiv:1901.02860 | 解決長文本限制
引入「循環機制」讓 Transformer 可以記憶前一個片段的狀態,解決固定窗口的長文本問題。對於需要跨段落推理的長篇文章(如百科全書條目)尤為重要。但 BERT 問世後基本退出主流 MRC 競爭。
🏆 BERT for MRC(2018,Google)
arXiv:1810.04805 | MRC 時代的分水嶺
BERT 在 SQuAD 2.0 上直接超越人類水準,徹底改變 MRC 格局。架構上極簡:把問題和文章拼接輸入([CLS] 問題 [SEP] 文章 [SEP]),輸出兩個 Linear 層分別預測答案的起始和結束位置。只需微調幾個 epoch 即可。

中文 MRC 數據集:從 SQuAD 到 DRCD

⚠️ 核心痛點:2018 年做中文 MRC,幾乎沒有可用的繁體中文數據集。只能把英文 SQuAD 翻譯成中文使用,但翻譯品質影響模型效果,且簡繁轉換問題讓台灣場景更麻煩。
數據集 語言 規模 特點 台灣適用性
SQuAD 1.0/2.0 英文 10 萬+ 問答對 維基百科文章,2.0 含 unanswerable 問題 ⚠️ 機翻後可用,但品質有落差
CMRC 2018 簡體中文 1.8 萬+ 問答對 中文維基百科,哈工大/科大訊飛 CodaLab 評測 ⚠️ 簡體為主,繁體場景需轉換
DRCD 繁體中文 3 萬+ 問答對 台達電子研究院開發,維基百科為來源 ✅ 台灣最佳選擇
自建 Wiki 標注 繁體中文 視場景而定 用 ChineseAnnotator 自行標注領域語料 ✅ 最適合特定場景

博物館/展場導覽機器人 (2018–2019)

這是當時的核心應用場景:博物館展場內的導覽機器人,參觀者對著機器人說「這件青花瓷是哪個朝代的?」,機器人需要:

  1. ASR:語音轉文字,得到「這件青花瓷是哪個朝代的」
  2. 文本相似度:找到最相關的展品說明文件(80/20 法則)
  3. MRC:從說明文件中抽取「明朝(1368–1644)」作為答案
  4. TTS:合成語音播放給參觀者
⚠️ 多文件 MRC 的挑戰:一個問題可能需要參考多個展品說明才能完整回答(如「館內有哪些宋代文物?」),這是「多文件推理」問題,2019 年的 BERT 處理這種情況效果仍有限。這也是 2024 年 RAG 流行的原因之一。
⚠️ 繁體中文數據的永恆之痛:SQuAD 是英文,機翻成繁中後,翻譯品質良莠不齊;CMRC 是簡中,繁簡轉換後詞彙用語不自然。最終需要用 DRCD + 自建標注才能解決台灣場景問題。
✅ QANet 的數據增強技巧:把展品說明用 Google Translate 翻成英文,再翻回中文,得到語意相同但用詞不同的版本,與原版一起作為訓練數據。有效提升了小數據集的模型泛化能力。

RAG(檢索增強生成):MRC 的現代解法

2023 年後,RAG(Retrieval-Augmented Generation)成為 MRC 問題的主流解決方案:把相關文件檢索出來,餵給 LLM 生成答案,既解決了 LLM 知識截止日期的問題,也減少了幻覺風險。

💡 RAG vs 傳統 MRC 的關鍵差異:
傳統 BERT MRC:答案必須是原文的片段(Extractive),答案範圍受限,但結果高度可信
RAG + LLM:答案可以是多文件融合後的摘要(Generative),更自然、更完整,但有幻覺風險,需要引用來源驗證
✅ 何時選傳統 BERT MRC:
• 知識庫已建立且更新頻率低(如展品說明、產品規格)
• 答案必須是原文的精確片段(法律條文引用、合約條款)
• 幻覺風險不可接受(醫療、法律場景)
• 部署環境無法連接外部 API
✅ 何時選 RAG + LLM:
• 需要跨文件融合信息(如「比較這兩個展品的差異」)
• 知識庫持續更新,不方便頻繁微調
• 答案需要自然語言解釋,而非原文片段
• 已有 GPT/Gemini API 預算且體驗優先
📖

探索更多 NLP 任務