時間推理是 RAG 的弱點——MRAG 如何用計分規則解決時序問題

GuanLin’s Latent Space
記錄每一個學習的瞬間,分享技術心得與成長歷程

這篇文章是「Advanced RAG 架構思考」系列的第四篇技術解析,對應的綜述概覽在這裡。本篇聚焦 MRAG(arXiv:2412.15540),完整拆解 TEMPRAGEVAL benchmark 的設計動機、MRAG 三模組架構,以及時序計分規則的具體實現邏輯。


前言
#

「2021 年 5 月 6 日,英國首相是誰?」

正確答案是 Boris Johnson。他在 2019 年 7 月 24 日就任,2022 年 9 月才離職。所以 2021 年 5 月 6 日,他確實在任。

但如果你的 RAG 系統去搜尋這個問題,它很可能找到 Nicola Sturgeon 的相關文件——因為她在 2021 年 5 月 6 日蘇格蘭議會選舉中獲勝的新聞,正好包含「2021 年 5 月 6 日」這個精確日期,而 RAG 系統的日期匹配機制把它識別為「高度相關的文件」。

系統輸出:「Nicola Sturgeon」。

這是一個自信、清晰、完全錯誤的答案。更麻煩的是,如果你不知道正確答案,你很難判斷它是錯的——畢竟它提供了一個「真實事件」(Sturgeon 確實在那天贏得選舉)作為依據。

這就是 NTU 和 NYU 的 MRAG 論文(arXiv:2412.15540)要解決的問題:時間敏感問題的可靠性危機


核心問題:為什麼時序推理這麼難
#

日期匹配 ≠ 時間推理
#

這是 MRAG 論文最重要的洞見,也是最容易被低估的點。

「日期匹配(Date Matching)」是現有 Retriever 的行為:找到文件中有相同日期的那些段落。

「時間推理(Temporal Reasoning)」是問題真正需要的:理解「截至 2021 年 5 月 6 日,最近一任英國首相」意味著找到 2021 年 5 月 6 日之前最近一次任職記錄,而不是找包含「2021 年 5 月 6 日」這個字串的文件。

這兩件事完全不同。前者是字串匹配,後者需要邏輯推理。

實驗驗證:現有 Retriever 的時序推理能力幾乎為零
#

論文設計了一個控制實驗:固定文件的時間戳為「1959 年 3 月 23 日」,然後讓查詢的時序關係(before / as of / after)和查詢年份在 1958 到 1965 年之間變化,測試三種不同類型的 Retriever 如何對這組查詢-文件配對評分。

結果(文件時間戳固定為 1959 年 3 月 23 日,查詢年份在 1958-1965 年間變化):

  • Contriever(雙編碼向量 Retriever):對「查詢與文件年份相同」的配對評分最高,當查詢年份與文件月份/日期相同但年份不同時,評分也異常偏高。對「before」和「after」等不同時序關係的反應模式幾乎一樣,完全無法區分時序方向。
  • MiniLM(Cross-Encoder Reranker):行為和 Contriever 類似,對精確日期匹配有強烈偏好,無法理解時序方向(before/after)的區別。
  • GEMMA(LLM Embedding Reranker):稍好,對「after」關係能給晚期日期較高分,但對「before」和「as of」仍然無法正確區分——含有早期日期的文件得分低到可能被排除在檢索結果之外,而這些文件恰恰是「截至某年的最近一次」問題的正確答案。 所有現有方法都有一個共同問題:它們對「日期不存在」的文件評分極低,即使這些文件的語意完全相關。

這個控制實驗揭示了一個根本性的架構缺陷:現有的 Retrieval 方法根本沒有設計來理解時序邏輯,它們只是在做模糊的日期相似度計算。


TEMPRAGEVAL:一個嚴格的診斷工具
#

在提出解法之前,MRAG 論文先做了一件重要的事:建立一個能精確量化這個問題的 benchmark。

現有 Benchmark 的局限
#

Benchmark評估項目問題
SITUATEDQA時間敏感問答時間限制和答案直接對應,簡單日期匹配就能騙過評測
TIMEQA複雜時間限制問題由模板合成,不自然;沒有 Evidence 標注,無法評估檢索品質
MenatQA時序推理基於 TIMEQA 改造,繼承了合成問題的問題

TEMPRAGEVAL 的三個差異化特性

  1. Evidence 標注(Gold Evidence Annotation):人工標注每個問題對應的 Wikipedia 段落,讓 Retrieval 評估更精確
  2. 自然語言問題(Natural Questions):問題由人工改寫,而不是模板生成,更接近真實使用場景
  3. 複雜時序限制(Complex Temporal Constraints):刻意避免簡單日期匹配的捷徑,強制要求真正的時序推理

TEMPRAGEVAL 的建構流程
#

第一步:選取源問題

從 SITUATEDQA 和 TIMEQA 兩個資料集中,選取可以在 Wikipedia 中找到對應時間戳的問題-答案對。

第二步:人工設計時序擾動

標注員(具備 SQL/Python 程式設計背景的 STEM 研究生)為每個問題設計「時序擾動」,組合以下三個維度:

維度可選值
隱含條件(Implicit Condition)None / first / earliest / last / latest
時序關係(Temporal Relation)as of / from-to / until / before / after / around / between / by / in / on / since
替換日期(Alternative Date)避免與文件中日期直接匹配的日期

範例(SITUATEDQA 原始問題):

Q: 「Arnolfini Portrait 在 1842 年 7 月至 11 月間由誰擁有?」 A: 「National Gallery」

設計擾動後:

Q: 「Arnolfini Portrait 在 1700 年後最後一個擁有者是誰?」 A: 「National Gallery」(仍然是正確答案,因為 National Gallery 從 1842 年起持有至今)

這個擾動版本迴避了「1842」這個精確日期,要求系統推理「1700 年後最晚的擁有者記錄」。

第三步:人工標注 Gold Evidence

對每個問題,標注員從 Contriever + GEMMA 召回的 top-20 段落中,找出真正能回答問題的段落。如果 top-20 中沒有,則手動搜尋 Wikipedia 找到對應頁面。約 12.7% 的問題需要手動搜尋。

最終 TEMPRAGEVAL 包含 1,000 個問題(TIMEQA 子集 500 個 + SITUATEDQA 子集 500 個),每個問題有至多 2 個人工標注的 Gold Evidence 段落。

效能下降的量化
#

這是 MRAG 論文的核心動機之一。對同樣的 Retrieval 系統(Contriever + GEMMA),比較原始問題和時序擾動後問題的性能:

指標原始問題時序擾動後減少比例
Answer Recall @1(SituatedQA)85.8%54.7%-31.1%
Evidence Recall @1(SituatedQA)45.0%20.3%-24.7%

Top-1 答案召回率從 85.8% 暴跌到 54.7%,下降超過 31%。Evidence Recall 幾乎腰斬。

這個數字量化了「時序擾動讓現有最好的 Retrieval 系統失效的程度」——而這些「擾動」並不是刻意刁難,它們代表了現實世界中真實存在的問題表達方式。


MRAG 三模組架構
#

MRAG 三模組:問題分解、檢索與摘要、語意-時序混合排名
MRAG 把問題拆分成語意(MC)和時序(TC)兩個維度,透過乘法組合得到最終評分

MRAG 的設計邏輯很清晰:它需要一個能夠「進行時序推理」的機制,而不只是做更好的語意匹配。

模組一:問題處理(Question Processing)
#

MRAG 用 LLM 把時間敏感問題分解為兩個正交的維度:

主要內容(Main Content, MC):問題的核心語意,去除時間限制後的部分。

「截至 2021 年,誰是最近一次贏得美國超模大賽的人?」 → MC:「誰贏得了美國超模大賽?」

時間限制(Temporal Constraint, TC):問題中的時序條件。

→ TC:「截至 2021 年,最近一次(latest … as of 2021)」

為什麼要分離?

因為這兩個維度需要完全不同的評估機制:

  • MC 決定了語意相關性(哪些段落在說「超模大賽的勝者」)
  • TC 決定了時間相關性(哪些段落記錄的是截至 2021 年的最近一次獲勝)

把它們混在一起讓同一個向量模型處理,必然導致其中一個被弱化。

模組二:檢索與摘要(Retrieval and Summarization)
#

第一步:基於 MC 的向量搜尋

用 MC(不包含時間限制)做向量搜尋,召回與問題語意最相關的段落。之所以不包含 TC,是因為我們不希望搜尋被「截至 2021 年」這個時間描述影響,而是純粹基於「超模大賽勝者」這個語意。

第一點五步:語意重排(Reranking)

檢索到候選段落後,再用一個獨立的 reranker 模型(同樣以 GEMMA embedding 衡量與 MC 的語意相似度)對這些段落重新排序,取出 top-k 段落。這一步和上一步是分開的兩個環節:第一步用較輕量的檢索器(如 Contriever)從全部語料中快速撈出候選集合,這一步再用更精細的模型對候選集合做語意上的精排。

第二步:句子切割(Sentence Segmentation)

把每個召回並重排後的段落切割成獨立句子。

為什麼?因為一個段落可能包含多個不同年份的資訊:

「America’s Next Top Model 第 24 季於 2018 年 1 月 9 日首播……它在 2017 年拍攝……比賽的勝者是 Kyla Coleman。」

這個段落包含「2017」(拍攝年份)和「2018」(播出年份)兩個時間資訊。如果整段落一起處理,「2017」可能干擾時序評分,讓系統認為這個段落記錄的是 2017 年的事件,而不是 2018 年。

句子切割後,「它在 2017 年拍攝」和「比賽的勝者是 Kyla Coleman」成為獨立的評分單元,後者可以配合「January 9, 2018」的句子一起給出更準確的時序評分。

第三步:LLM 摘要生成(Query-Focused Summarization)

對 top-k 段落,讓 LLM 生成一個專注於問題的摘要句:

「Kyla Coleman 是 2018 年美國超模大賽的勝者。」

這一步的目的是:把散落在段落各處的關鍵資訊(「美國超模大賽」、「勝者」、「Kyla Coleman」、「2018 年」)整合成一句包含完整時間資訊的摘要,方便後續的時序評分。

論文顯示摘要 top-5 段落是最佳配置,再多的段落可能引入 LLM 幻覺(把不存在的事實「摘要」進去)。


模組三:語意-時序混合排名(Semantic-Temporal Hybrid Ranking)
#

這是 MRAG 最核心的創新。對每個候選句子,計算兩個分數:

語意分數(Semantic Score)
#

用 MC 和句子的向量相似度來衡量語意相關性。使用 GEMMA Embedding 模型。

時序分數(Temporal Score)
#

這部分是規則推理,而非向量計算。

第一步:TC 分類

把 TC 分類到六個預定義的約束類型:

約束類型含義範例
last - before - TT 之前最近一次「截至 1981 年的最近一場」
last - after - TT 之後最近一次「2000 年後最近的記錄」
last - between - T1, T2T1 和 T2 之間最近一次「1979 到 1999 年間最近一次」
first - before - TT 之前最早一次「2018 年之前最早的記錄」
first - after - TT 之後最早一次「2015 年後最早的記錄」
first - between - T1, T2T1 和 T2 之間最早一次「2015 到 2020 年間最早的記錄」

第二步:選擇對應的評分函數

MRAG 時序評分函數曲線:last-before-1981 示意
約束類型「last-before-1981」:論文舉例,記錄「1970」的句子評分約 0.9(圖中曲線示意,待依此例重繪確認)

每個約束類型對應一條預定義的樣條曲線(Spline Function),函數的橫軸是句子中的時間戳,縱軸是時序評分(0 到 1)。

last - before - 1981 為例(找 1981 年前最近的記錄):

  • 橫軸:文件中的時間戳
  • 曲線形狀:距離 1981 年越近(但不超過 1981)的時間戳,評分越高;違反約束方向(晚於 1981 年)的時間戳,評分明顯下降 論文給出的具體例子:一個記錄「1970」的句子,對 last - before - 1981 約束,時序評分約 0.9(接近 1981 且在其前)。論文沒有給出違反約束方向時的具體評分數字。從曲線圖的座標軸範圍來看(縱軸最低約為 0.2,而非 0),違反方向的評分可能是收斂到一個非零的基線值(約 0.5 左右),而不是趨近於 0——這一點論文沒有明確說明,僅能從示意圖的軸範圍推測。

第三步:提取句子中的時間戳

從每個候選句子中提取時間資訊(如「2018 年」、「1970」、「January 9, 2018」),轉換為標準化的年份數值。

第四步:計算最終分數

1
Final Score = Semantic Score × Temporal Score

論文中時序分數的計算方式是連續的樣條曲線(spline),不是二元的 0/1 判斷:每個約束類型(如 last - before - 1981)對應一條預先定義的曲線,時間戳離約束邊界(1981 年)越近且方向正確,分數越接近 1;偏離約束方向越遠,分數越趨近於 0;曲線的形狀本身就涵蓋了「部分符合」的中間情況,不需要額外的覆蓋比例規則。

乘法組合確保:只有「語意相關 AND 時間正確」的句子才能得高分。任一維度分數很低(語意無關或時間明顯不符),最終分數也會被拉低——這正是前言 Boris Johnson 案例的根本修復。

第五步:選擇最終段落

根據每個段落中最高分句子的分數,對段落進行重排,選出 top-k 段落傳給後續的答案生成模組。

注意:傳給答案生成模組的是原始段落,而不是摘要句子。摘要只用於提升時序評分的準確性,最終答案生成需要完整的背景資訊。


主要實驗結果
#

檢索性能對比
#

方法TimeQA AR@1TimeQA ER@1TimeQA AR@5TimeQA ER@5
BM2517.5%4.2%39.0%14.1%
Contriever18.8%9.6%49.9%28.7%
Cont. + GEMMA46.7%26.0%82.5%66.6%
MRAG(top-5 摘要)58.6%37.1%90.0%74.3%
方法SituatedQA AR@1SituatedQA ER@1SituatedQA AR@5SituatedQA ER@5
Cont. + GEMMA54.7%20.3%82.6%45.3%
MRAG(top-5 摘要)61.3%31.1%89.0%59.2%

端到端 QA 性能對比
#

方法TimeQA EMTimeQA F1SituatedQA EMSituatedQA F1
Direct(Llama3.1-8B,無檢索)16.0%23.9%42.8%45.0%
RAG-Concat(標準 RAG)44.0%52.8%60.0%62.7%
MRAG-Concat49.2%59.2%65.8%68.0%
Self-MRAG54.2%65.6%66.4%68.2%

MRAG 相對標準 RAG 的提升:

  • TimeQA EM:+5.2%(44.0% → 49.2%)
  • SituatedQA EM:+5.8%(60.0% → 65.8%)
  • 加上 Self-Reflection 機制後,TimeQA EM 進一步提升到 54.2%

消融實驗:每個步驟貢獻多少
#

步驟候選數量SituatedQA AR@1SituatedQA ER@1
Chunk 向量檢索(基線)21M chunks22.6%6.8%
+ Chunk 關鍵詞排名→ 1,00029.2%12.4%
+ Chunk 語意排名→ 10055.3%22.9%
+ 句子關鍵詞排名→ 500 句55.3%23.4%
+ 語意-時序混合排名→ 200 句61.3%31.1%

最後一步(加入時序評分)帶來了:AR@1 +6%,ER@1 +7.7%。這是在已經做了三輪過濾(關鍵詞排名 + 語意排名 + 句子關鍵詞排名)之後的額外提升,說明時序評分解決的不是「找到相關段落」,是「在相關段落中找到時間正確的那個」。


案例研究:MRAG 如何解決具體問題
#

案例一:同年份的干擾
#

問題:「截至 1988 年,兩個隊友在同一賽季中誰打出最多全壘打?」 正確答案:M&M Boys(Mickey Mantle 和 Roger Maris)在 1961 年合計 115 支全壘打

GEMMA 的 top-1 結果:包含「Bobby Bonds 和兒子 Barry Bonds 2007 年的父子全壘打記錄」的段落——它包含「1988」這個年份(說「直到 1988 年的 José Canseco」),所以被高排名。但這個段落說的是父子記錄,不是隊友記錄。

MRAG 的 top-1 結果:包含「M&M Boys 是唯一在同一賽季兩人都加入 50 全壘打俱樂部的隊友,在 1961 年合計打出 115 支」的段落——沒有「1988」這個字串,但語意完全匹配「隊友全壘打紀錄」,且時序評分顯示 1961 年在截至 1988 年的範圍內,評分高。

案例二:LLM 摘要的成功與失敗
#

成功案例

問題:「截至 2021 年,最近一次贏得美國超模大賽的是誰?」 原始段落:「第 24 季在 2018 年 1 月 9 日首播……它在 2017 年拍攝……勝者是 Kyla Coleman」 摘要:「Kyla Coleman 贏得了 2018 年的美國超模大賽」 效果:把「2018」(播出年份)集中在摘要中,時序評分正確高

失敗案例

問題:「截至 2010 年,Ducks 最後一次奪得 Stanley Cup 是哪年?」 正確答案:2007 年 原始段落:「Ducks 和 Sharks 是勁敵,這份對抗主要源自兩隊在 2009 年與 2018 年季後賽(Stanley Cup playoffs)的交手——Ducks 在 2009 年贏了那一輪系列賽,但 Sharks 在 2018 年扳回一城」 摘要(錯誤):「Anaheim Ducks 在 2009 年贏得了 Stanley Cup」

這裡的關鍵背景是:NHL 的 Stanley Cup 是整個季後賽打完所有輪次後才頒發的總冠軍獎盃,季後賽本身分好幾輪,每輪兩隊打一個「系列賽」,贏一輪系列賽只代表晉級,不等於拿到 Stanley Cup

原始段落講的其實是 Ducks 和 Sharks 這兩隊在季後賽中交手的對抗史(2009 年 Ducks 贏了那一輪、2018 年 Sharks 贏了那一輪),完全沒有提到 Ducks 曾經拿下 Stanley Cup 冠軍。但段落裡出現了「Stanley Cup playoffs」這個詞組,LLM 在摘要時把「贏了系列賽」和「Stanley Cup」兩者混在一起,跳過了「只是打贏某一輪」這個限定,直接幻覺出「2009 年贏得 Stanley Cup」——把「贏一輪季後賽」錯誤升級成「拿到總冠軍」。更根本的問題是,這個段落本身就不包含正確答案 2007 年的任何資訊,也就是說,這其實是「檢索到不含答案的段落」加上「LLM 在錯誤基礎上又幻覺」的雙重失誤,最終導致時序評分被導向錯誤的 2009 年,而非正確的 2007 年。

這個失敗案例說明了 LLM 摘要的一個系統性風險:LLM 可能根據語意聯想引入幻覺資訊。MRAG 的緩解策略是只對 top-k 段落做摘要(而不是所有召回結果),並在最終答案生成時使用原始段落而非摘要,防止錯誤傳播。


計算成本分析
#

方法每查詢延遲(秒)
MiniLM(Cross-Encoder)0.14
GEMMA(LLM Embedding Reranker)1.03
MRAG2.33

MRAG 的延遲分解:

  • 問題處理(問題分解):0.06 秒
  • 檢索與摘要(向量搜尋 + LLM 摘要):1.23 秒
  • 語意-時序混合排名(句子切割 + 評分):1.04 秒

MRAG 約是標準 GEMMA Reranker(1.03 秒)的 2.3 倍

這個成本是合理的嗎?取決於使用場景:

  • 如果 5% 的查詢需要時序推理,可以建立問題分類器,只對時序敏感問題啟用 MRAG
  • 如果系統是批次處理(而非實時),2.33 秒的延遲完全可接受
  • 如果系統需要低延遲(<500ms),需要考慮使用更小的 LLM 做摘要生成

人工評估:AR@k 和 ER@k 之間的真相
#

論文進行了一個很有洞見的人工評估,值得特別提出。

  • AR@k(Answer Recall):召回結果中包含正確答案字串的比例,它是上限估計——因為一個段落可能偶然包含答案字串,但實際上無法支持這個答案(例如 1988 年的一篇文章提到了「Barry Bonds 1988 年的表現……直到 Mantle/Maris 在 1961 年的記錄」,包含了答案但上下文是錯的)。
  • ER@k(Evidence Recall):召回結果中包含人工標注 Gold Evidence 的比例,它是下限估計——因為可能存在其他也能回答問題的段落,但沒有被人工標注。

真正的「實際檢索性能(Ground Truth Recall, GR@k)」在 AR 和 ER 之間。

論文對 200 個隨機樣本做了人工評估:

TEMPRAGEVAL 人工檢索性能評估:Standard vs MRAG
TEMPRAGEVAL 人工評估:MRAG 與 GEMMA Baseline 在 TimeQA 及 SituatedQA 上的 GR@k 曲線與 AR/ER 邊界對比

結論:MRAG 的 GR@k 曲線(紫色線)始終在 GEMMA baseline 的 GR@k 曲線(綠色線)之上,而且 MRAG 的灰色區域(AR 和 ER 之間)在圖中比 GEMMA 更高。這說明 MRAG 不只是指標數字變好看,是真的找到了更多相關的段落。


錯誤分析:問題出在哪裡
#

論文對 TimeQA 和 SituatedQA 上各 50 個 GEMMA 失敗案例、各 50 個 MRAG 失敗案例(共約 200 個案例)做了人工根因分類,分為三類:

  • 檢索錯誤(Retrieval):top-5 內找不到任何相關段落,問題出在檢索沒撈到對的東西。

  • 閱讀理解錯誤(Reader):模型明明拿到了正確段落,卻推理錯誤,答錯了。

  • 格式錯誤(Format):答案內容其實正確,只是輸出格式跟標準答案不符。 三個重點:

  • 不論哪個系統,多數錯誤都來自閱讀理解,不是檢索:兩個資料集、兩種系統的失敗案例中,閱讀理解錯誤始終佔多數,說明檢索方式整體品質其實都不差,瓶頸更多在生成端。

  • MRAG 讓檢索錯誤明顯下降:在 TimeQA 和 SituatedQA 上,MRAG 失敗案例中「檢索錯誤」的占比都低於 GEMMA baseline,驗證了 MRAG 在檢索層面確實有改善。

  • 檢索問題被壓低後,瓶頸自然轉移到閱讀理解:MRAG 失敗案例中閱讀理解錯誤的相對占比反而比 GEMMA 更高,這是檢索錯誤被解決後的自然結果,不代表 MRAG 讓模型的推理能力變差。 這個結果說明:MRAG 已經把系統的瓶頸從「找不到正確段落」轉移到了「LLM 無法正確推理已找到的段落」。這其實是一個好的信號——它意味著在 MRAG 的基礎上,進一步改善答案生成(如用更強的推理模型、更好的 Prompt 策略)可以帶來更多提升。


工程落地的五個思考
#

一、時序敏感問題的識別
#

不是所有問題都需要 MRAG。建立一個輕量的「時序敏感分類器」,識別問題中是否包含時序限制(「截至」、「在…之前/之後」、「最近一次」、「當時」等),只對這類問題啟用 MRAG 路徑。

這可以顯著降低系統的平均延遲,同時保留時序推理能力。

二、時序約束的提取品質
#

MRAG 依賴 LLM 正確提取問題的 TC 和句子的時間戳。在實際應用中:

  • MC/TC 分解用小型 LLM(Qwen-7B)通常就足夠,不需要大型模型
  • 時間戳提取可以用正則表達式 + 小模型組合,提高召回率
  • 對於包含相對時間表達(「五年前」、「去年」)的問題,需要特別的解析邏輯

三、語料庫的時間覆蓋範圍
#

MRAG 的效果強依賴於語料庫中「各時間點的事件都有充分記錄」。如果語料庫對某個時間段(如 1990-2000 年)的覆蓋稀疏,即使 MRAG 正確判斷時間相關性,也可能因為找不到對應時期的文件而失敗。

建議:在 Data Pipeline 中加入「時間覆蓋率分析」,識別語料庫中時間分布的空洞,並針對性補充文件。

四、LLM 摘要的幻覺控制
#

如案例研究所示,LLM 摘要可能引入幻覺。幾個緩解策略:

  • 限制摘要句的長度(不超過 50 個詞),防止 LLM 過度推理
  • 對摘要句中的時間資訊,與原始段落做核對驗證
  • 只對「高語意相關」的段落做 LLM 摘要(設置語意相關性閾值),避免對不相關段落的幻覺摘要污染時序排名

五、知識衝突的處理
#

論文附錄中有一個重要的觀察:當 LLM 的参數化知識(內置知識)和檢索到的段落衝突時,RAG 系統傾向於相信檢索結果(這通常是正確的),但如果檢索結果不準確,反而會被錯誤的外部信息覆蓋正確的内置知識。

建議:在答案生成 Prompt 中加入明確的指示,讓 LLM 對明顯有疑問的段落(如「這個段落的時間資訊和問題不一致」)表達不確定性,而不是盲目採用。


結論
#

MRAG 論文的最深刻洞見,是關於「什麼問題應該用什麼工具解決」的設計哲學。

語意向量搜尋非常擅長回答「這些段落在說什麼主題」的問題。但它先天無法回答「這些段落記錄的是時間 T 之前還是之後的事件」——因為時序邏輯是關係型的、規則型的,不是語意型的。

把時序判斷強加給語意模型,就像請一位語文老師去改數學考卷。判斷一篇作文寫得好不好、用詞精不精準,是語文老師的專業,他做得很好;但考卷上出現一題「x > 5 是否成立」,這已經不是語意理解的問題,而是規則運算的問題——語文老師在這裡沒有任何專業優勢,因為這根本是另一套完全不同的能力。

MRAG 的貢獻是識別了這個工具選擇問題,並給出了一個乾淨的解法:用語意模型做語意相關性評估,用計分規則做時序邏輯評估,兩者相乘得到最終分數。

這個分工的設計思路,和 TableRAG(SQL 負責計算,LLM 負責語意)、UniversalRAG(路由負責模態選擇,各模態 Encoder 負責各自的搜尋)是一致的。

不要試圖讓一個工具做所有事情。識別每個子問題的最佳工具,讓它們各司其職。


系列文章導航
#


延伸資源
#


系列終章:四維一體的企業級 RAG 拼圖
#

讀完這四篇,用一張概念圖收尾。企業級 Advanced RAG 系統,沒有單一技術能包治百病,得靠多個維度各司其職:

篇次框架核心擊破的 RAG 難點解決的方法
01TableRAG缺乏全局視角、無法做表格統計SQL 精確計算
02MixRAG層級表格切塊後結構破碎H-RCL 結構打平 + 雙階段檢索
03UniversalRAG多模態雜處時的空間偏誤模態感知路由器
04MRAG語意搜尋對時序邊界無能為力時序計分規則 + 雙軌排名

組合起來的架構大概是這樣:用 UniversalRAG 在最前端做模態分流,用 MixRAG 的 H-RCL 理念保存層級表格的上下文,遇到跨時間軸的問題啟動 MRAG 的時序規則過濾,一旦定位到表格需要計算時,切換到 TableRAG 的 SQL 執行路徑。

TableRAG 和 MRAG 的底層邏輯是一樣的:純語意向量搜尋無法處理數值與邏輯運算,所以需要引入規則推理作為補充。UniversalRAG 解決的是空間模態的路由,MRAG 解決的是時間維度的對齊——這四篇各自補了一個不同的缺口。