延續「從 Notebook 到 Production:Latency、Cache、Drift 與監控」,這篇聚焦「最後排行榜:哪些技術真的有效,哪些只是變複雜」:先定義變因與停止線,再由實驗結果檢驗原本的直覺。
公布完整 leaderboard、negative results、最佳 trade-off 與仍未解決問題;強調工程結論,而非宣稱「這套方法一定最好」。
Ablation 可以從 BM25/Dense baseline 開始,依序加入 fine-tune、hybrid、domain signal、rerank,再接 generation。每次只變一層,保留 config、seed、artifact hash 與 metric。
進 production 後還要看 latency、cache hit、資料 drift、query drift 與 index freshness。最後排行榜應同時列品質、延遲與成本,才能回答「哪個方案值得留下」。
不要只留下最佳結果。BM25、Dense、Fine-tuned Dense、Hybrid、Hybrid+Rerank、完整 RAG 都應保留在同一張 leaderboard,另外附 latency、index/build cost 或模型大小。Negative result 不是失敗,反而能證明哪些複雜度沒有換到實質收益。
這裡以「彙整所有方法的品質、延遲、算力與複雜度」為比較目標,只保留 baseline、candidate 與逐項差值;evaluate 再接到實際評測程式。
METRICS = ('validated leaderboard', 'confidence', 'cost', 'limitations')
baseline = evaluate("baseline", metrics=METRICS)
candidate = evaluate("candidate", metrics=METRICS)
for metric in METRICS:
delta = candidate[metric] - baseline[metric]
print(f"{metric}: {delta:+.4f}")
驗證可從「彙整所有方法的品質、延遲、算力與複雜度」開始。比較前先凍結 corpus、query set、qrels、資料切分與評測程式,確保實驗只改動目標元件。若 index、候選數或前處理同時改變,最後的分數差異就無法歸因,容易把資料變動誤認成模型進步。
這篇優先比較:validated leaderboard、confidence、cost、limitations。除了整體平均,也要保留逐題結果與 query 類型,分辨改善集中在哪些情境、哪些案例反而退步。品質指標還要和 latency、記憶體、索引大小或單次成本一起閱讀,才能判斷提升是否值得帶進 production。
每次實驗都應能追回資料版本、模型、index、config 與評測程式版本。上線前再以未參與調參的案例做一次回歸測試,並保留最差案例供 error analysis。若品質提升不足以抵銷延遲、成本或維護複雜度,維持較簡單的 baseline 通常更可靠。
結果應先看逐題變化,再看整體分數。若平均值上升,卻只來自少數容易題,或關鍵 query 類型持續退步,仍不適合直接替換 baseline。每個明顯升降的案例都應回到候選文件、排名與輸入特徵,確認變化符合原先假設。
離線評測通過後,還要檢查線上條件:新文件加入後是否需要重建 index、cache 是否造成舊結果、查詢分布是否漂移。只有資料生命週期也能被管理,實驗中的品質提升才可能持續。
判讀不只看最大或最漂亮的數字。這一天真正要回答的是:排行榜只收可重現 run,並保留負面結果。
如果核心指標改善,但錯誤率、尾端延遲、資源成本或恢復能力變差,這代表取捨,而不是無條件進步。相反地,沒有改善也不是無效結果;至少能排除一條看似合理、實際上不值得增加複雜度的路。
今天的工程判斷是:排行榜只收可重現 run,並保留負面結果。無論結果支持或否定原本假設,都必須保留完整條件,才能和下一天的實驗串在一起。
系列到這裡告一段落,最後留下的是可重跑的判斷方式,而不是一張只適用於單一環境的答案。