Resonance Lab · W03 Main Report

賭檢索增強會完勝,結果自己打臉:Qwen3-8B 零樣本以 0.885 血洗 TF-IDF 的 0.5325

週一賭「Route B(TF-IDF 檢索)會大幅打敗 Route A(零樣本)」——這場考試的題目是 GPT-3.5 讀著特定 Wikipedia 段落出的,理論上沒有檢索的話模型就只能瞎猜。實測結果整個反過來。

回顧週一的假設

賭的是「檢索增強才有解」——沒有檢索,模型只能靠參數內記憶硬猜。地板是 20 萬次蒙地卡羅模擬驗證過的隨機猜測基準:0.367。

結果對比表

route分數說明
Route A(零樣本,無檢索)0.88500Qwen3-8B(GGUF Q4_K_M),本地 M1,296.1 秒跑完 200 題
Route B(TF-IDF RAG)0.53250270K 篇 Wikipedia STEM 語料庫檢索 + 相似度評分,Kaggle CPU kernel
隨機猜測地板0.367理論值 11/30,20 萬次蒙地卡羅模擬驗證

賽前賭檢索會贏,結果零樣本用 0.885 打贏 TF-IDF 檢索的 0.5325,整整贏了 0.3525 分。

關鍵發現

反轉一:沒有檢索,模型反而答得更好。 Qwen3-8B 零樣本直接拿下 0.885,逼近滿分,遠高於原本預期的「只能瞎猜」。合理解釋有兩個:這批 STEM 選擇題本身在模型預訓練語料的常見知識範圍內,不需要外部段落也答得出來;或者 GPT-3.5 出題時混淆選項的難度不夠高,模型光靠常識就能排除干擾項。

反轉二:TF-IDF 檢索反而拖累分數。 Route B 雖然遠贏隨機猜測地板(0.5325 vs 0.367),但比零樣本整整低了 0.3525。原因不難理解:Route B 沒有 LLM 做推理去消化檢索到的內容,純粹用 TF-IDF 相似度幫 5 個選項打分排序——檢索到的段落只要字面上跟某個干擾選項相似,就會誤導排序。這是「有檢索」跟「有沒有 reasoning 消化檢索內容」的差距,不是檢索這件事本身沒用。

反轉三:高分背後不是背答案。 0.885 這麼高的零樣本分數,很自然會讓人懷疑是不是背過答案——train.csv 從 2023 年上線起就公開,Qwen3-8B(2025 年發布)的訓練資料很可能涵蓋這批已流傳兩年多的 Q&A。用兩個獨立訊號查證:逐字接龍探測(給題目開頭,看模型能不能一字不差接出選項原文)0/30 命中,30 題裡最高相似度只有 0.368,遠低於 0.90 的命中門檻;perplexity 配對 t 檢定(原文 vs 手寫改寫版)得到 t=-2.677,單尾 p=0.994,方向甚至跟「背過」的預測相反。兩個訊號都落在「沒有污染證據」——0.885 是真材實料的科學知識,不是背答案。

結論與適用場景

  1. 這類科學選擇題,先試零樣本再加檢索。 檢索增強不是萬靈丹——如果底層模型本身在該領域知識夠紮實,粗糙的檢索反而會引入雜訊,拖累答對率。
  2. 簡單的 TF-IDF 檢索需要搭配 reasoning,不能只靠相似度排序。 Route B 的分數之所以不如預期,問題不在「有沒有檢索」,而在「檢索到的內容有沒有被消化」——這正是下週要優化的方向。
  3. 懷疑高分是背答案時,直接設計可驗證、門檻先講好的測試去查,不要用猜的。 逐字接龍加 perplexity 配對比較這兩個訊號,任何人都能在自己的模型上重跑一遍。

本週剩餘拆解預告

週四拆解記憶體污染檢測的完整方法論——逐字接龍怎麼設計判定門檻、perplexity 配對 t 檢定怎麼跑;週五講一段技術冒險:試著把 Route A 也送上 Kaggle 拿排行榜分數,結果一頭撞進 GGUF 量化模型在 transformers 底下解量化到一半整個 kernel 崩潰的故事,以及這對「為什麼 llama.cpp 能在本地又快又省記憶體」這件事的啟發。