iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
生成式 AI

從 RAG 到 Agentic RAG:30 天打造本機智慧檢索系統系列 第 20

Day 20: RAG無法找回正確的資料該怎麼辦? 淺談embedding model fine-tuning

  • 分享至 

  • xImage
  •  

前言

在我們繼續往Agentic RAG前進前,筆者想先補充一個RAG場景常遇到的痛點-Retrieval找不回正確的資料,這個問題會導致RAG系統參考不到正確的資料或是參考到了太多雜訊的資料,導致系統失敗。
造成這個問題的原因可能有許多種,今天我們會介紹一下可能的場景,並針對embeding model的優化策略做一些說明。

🔍為什麼 RAG 找不回正確資料?——問題與解法對照表

問題類別 常見原因 解法建議
資料層面 文件未正確分段、段落過長或無語義邊界 使用語義斷句或基於標點/標題的 chunking;控制段落在 200–500 tokens
文件未涵蓋查詢主題或內容過舊 定期更新資料庫,建立資料版本管理;可記錄來源與時間戳
Embedding 層面 使用的 embedding 模型語言不符(如中文語料用英文模型) 選擇與語料一致的模型(如 BGE-M3、Taiwan LLM Embeddings)
embedding模型不了解領域專有名詞 使用字詞擴充或是fine-tuning模型
查詢與文件 embedding 分散在不同空間(維度或版本不一致) 確保 embedding 模型版本固定,並在 pipeline 中設置版本標記
檢索層面 相似度門檻設太低/太高導致召回錯誤 透過實驗調整 top-k 與相似度閾值;可使用重排序(re-ranking)
Qdrant / 向量資料庫未建立正確索引或未正規化 使用 cosine / dot-product 一致的設定,並啟用 HNSW 索引優化
Query 層面 使用者輸入模糊、過短或含多義詞 增加 query 擴增(query expansion)或語義改寫(paraphrasing)
未使用 query embedding cache 導致重算不一致 實作 exact-match + semantic cache,確保穩定輸入向量
LLM 層面 模型回傳幻覺、未使用檢索結果 檢查 prompt 模板:確保指示模型「僅依據提供資料回答」
檢索結果過多導致上下文稀釋 控制 context 長度(通常 2–4 段最有效),可引入上下文加權策略

由上表可以了解到,RAG系統是許多元件組合而成,因此問題往往不是只有一個原因,而解決方案也不會只有一個,今天筆者將針對Embedding層面中-embedding模型不了解領域專有名詞這個場景做進一步的說明。


🧭Embedding 模型不了解領域專有名詞的原因與原理

當 embedding 模型「不了解領域專有名詞」時,根本原因通常在於 訓練語料缺乏該領域的語義分佈

Embedding 模型(例如 BERT、BGE、E5 等)在預訓練階段會學習「詞語在上下文中的語義關係」。
若模型主要學習的是一般泛用的網路語料,那麼像特定領域的專有名,或是公司內部的特殊代碼等情境,
這類專業詞彙在訓練資料中幾乎不存在,模型就無法形成穩定、語義一致的向量表示。

因此:

  • 在語義空間中,專業詞之間的距離被錯誤拉遠。
  • 即使兩個詞在實際語意上高度相關(如「腎功能指數」與「Creatinine level」),模型也可能認為它們毫不相干。
  • 最終導致檢索階段「找不回正確資料」。

後面筆者將提供兩個在過去專案進行中有幫助的解決方法。


🧩方法一:詞對照表擴充法(Concept Expansion)

在實務中,最簡單有效的方式是建立一個 專有名詞對照表,於查詢階段自動展開。

💡 實作範例

term_expansion = {
    "HQLA": "HQLA (High Quality Liquid Asset),高品質流動性資產,用於衡量銀行流動性風險。",
    "RAG Agent": "RAG Agent 結合檢索 (Retrieval) 與生成 (Generation) 的智能代理。",
}

query = "解釋HQLA在監理報告中的用途"
expanded_query = query.replace("HQLA", term_expansion["HQLA"])

當使用者輸入:

HQLA對銀行的重要性?

系統會自動轉成

HQLA (High Quality Liquid Asset),代表高品質流動性資產,常用於衡量銀行流動性風險,對銀行的重要性?

這個方法類似在 prompt 中進行語意補全,讓模型更能理解專業上下文,可以讓RAG更靈活適應專業領域。

🔬 方法二:Embedding Fine-tuning(以BGE-m3為例)

若你的場景不只有專有名詞,還有許多特定專業領域內容例如縮寫、代碼等情境,要透過對照表去擴充可能相當複雜,這樣的狀況下可以考慮對 bge-m3 進行微調。

因筆者參考論文 《Efficient Fine-tuning Methodology of Text Embedding Models for Information Retrieval: Contrastive Learning Penalty (CLP)》實際操作,以下整理一些資訊和大家討論

對比式學習(Contrastive Learning)

在針對 embedding 模型(如 bge-m3) 進行 fine-tuning 時,最常見的策略是 對比式學習 (Contrastive Learning, CL)
其核心目標是讓模型能夠在向量空間中:

  • 拉近 語意相似的樣本(Positive pairs)
  • 推遠 語意不相似的樣本(Negative pairs)

這種方法在句向量訓練中被證明能顯著提升檢索與語意匹配效能。
以下是幾個與 CL 相關的主要研究方向與技術改進:

對比式學習技術發展比較表

方法論 主要概念 核心貢獻
Contrastive Learning (CL) 拉近正樣本距離、推遠負樣本距離。 建立基礎語意空間結構,為句向量訓練的核心方法。
Informative Negatives (ANCE) 使用模型檢索出的 Top-k 近似但非正解的「困難負樣本 (hard negatives)」。 加速模型收斂,讓模型學會更精確的語意區分。
Contrastive Learning Penalty (CLP) 在訓練中加入懲罰項,使負樣本仍保留與查詢的局部語意關聯性。 避免破壞原有語意拓撲,維持 embedding 空間的穩定性。
Mixture of Experts (MoE) 透過 gating 機制分派輸入至不同的「專家模型」。 提升多語言、多任務的泛化能力,常見於大型多語模型(如 bge-m3)。

Contrastive Learning Penalty (CLP) 概念

傳統的對比式學習雖能有效區分語意,但若負樣本過於相似,模型可能被迫「硬拉開」兩個其實具有關聯的語意。
這會導致 embedding 空間失衡,甚至破壞語意鄰近關係。

CLP (Contrastive Learning Penalty) 透過在 loss 函數中引入懲罰項,
讓模型在分離負樣本時仍考慮其與正樣本之間的語意距離,保持語意拓撲的連續性。

📘 簡單理解:

CLP 的目的不是讓所有負樣本都「遠離」,
而是根據語意相似度「適度拉開」距離。
如此 embedding 空間能更真實反映語言語意的連續性。


🧩 應用於 bge-m3 Fine-tuning 的思路

該論文最後在 bge-m3 的微調過程中,提供以下思路做為建議:

  1. 以 Contrastive Learning 為主幹
    • 使用成對的 (query, positive, negative) 結構資料。
  2. 導入 ANCE
    • 從現有語料中動態挖掘「困難負樣本」。
  3. 加入 CLP 懲罰項
    • 維持 embedding 空間穩定性,避免語意漂移。
  4. 必要時使用 MoE 結構
    • 若語料跨多語言或多任務,可利用 gating 強化泛化表現。

👉 我的建議:

  • 只使用CL很容易造成語意偏移,例如原先目的是要增加專有名詞和相關詞的相關性,卻會在訓練完後導致該專有名詞和許多不相關的詞也同步拉高關聯度,因此加入CLP是有必要的。
  • 樣本數至少要過3000筆,建議搭配LLM模型去生成pair。
  • 找到正確適合的負樣本很重要,但這很吃領域專業,建議搭配該領域專家一起進行樣本準備,不然LLM生成的樣本品質通常不太好。

💡小結

找不到正確資料的問題其實蠻好判斷,如果你的場景有一些專有名詞,很可能就是要對embedding這部份來去下手,而處理方法建議採漸進式的方式:

  1. 初期階段:採用「詞擴充表」方案,快速提升查詢理解度。
  2. 中間準備階段:收集檢索錯誤案例,累積正負樣本對,增加可能的場景樣本。
  3. 後期:累積足夠專有語料後,進行 bge-m3 的 contrastive fine-tuning,產出企業自己專屬的領域embedding model。

📚參考資料

EFFICIENT FINE-TUNING METHODOLOGY OF TEXT EMBEDDING
MODELS FOR INFORMATION RETRIEVAL: CONTRASTIVE
LEARNING PENALTY (CLP)

BGE-M3


上一篇
Day 19: AI Agent為何如此神奇? 一起來認識MRKL (唸Miracle)
系列文
從 RAG 到 Agentic RAG:30 天打造本機智慧檢索系統20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言