The RAG 指南

設定 RAG (Retrieval-Augmented Generation) 模型的最佳實務

導言

人工智慧(AI)的快速發展,徹底改變了我們與資訊互動的方式,開啟了更精準、動態、且具情境感知系統的新可能性。

在這領域中最具前景的進展之一,就是 Retrieval-Augmented Generation(RAG,檢索增強生成)。

什麼是 RAG?

RAG 是一種前沿方法,結合了大型語言模型(LLMs)與資料檢索系統的力量。

這種混合模型能透過即時存取受控的知識來源,在生成類似人類語言的同時,提供更可靠、更靈活、並且更符合脈絡的回應。

RAG 彌補了傳統 AI 模型與搜尋型系統之間的落差。

傳統 AI 模型完全依賴模型內部既有的知識,而搜尋型系統則是直接從資料庫抓取資料。透過在生成任務中加入檢索機制,RAG 能夠產出更穩健、脈絡更精準的結果,解決單純生成模型的一些核心限制。

RAG 的應用範圍

這種融合開啟了廣泛的應用可能性,包含:

  • 更智慧的對話代理
  • 進階文件摘要
  • 個人化內容產生
  • 即時決策支援系統

RAG 基本原則

兩步驟流程概覽

RAG 是一個結合檢索系統與生成模型的兩步驟流程。

第一步是檢索階段

根據使用者的查詢,從知識來源擷取相關資訊。這個檢索過程通常透過語意搜尋演算法,將查詢與現有資料比對,並回傳最相關的文字區塊;也可以搭配關鍵字搜尋的結果。

第二步是生成階段

大型語言模型(LLM)會同時處理檢索到的資訊與使用者查詢,生成連貫且具脈絡性的回應。

LLM 利用檢索脈絡來提供更精準的答案。使用者的查詢與檢索到的內容會被組合在同一個提示(prompt)中,並且明確指示 LLM 只能使用這些檢索內容來生成答案,如此可避免模型依賴自身的既有知識。

可調整的關鍵參數

這兩個步驟可以依不同參數來調整:

1.檢索脈絡的數量

檢索的文字區塊越多,LLM 能利用的資訊就越多來生成答案。
但過多的脈絡也可能帶來無關或雜訊資訊。必須找到適當的平衡,通常要依你處理的資訊類型來決定。
有些問題的答案非常明確,只需要單一文字區塊即可;而有些問題則需要更廣泛的脈絡。

2.檢索結果的排序

需要對文字區塊排序,確保 LLM 使用最相關的內容。
語意搜尋與關鍵字搜尋的結果會有不同分數,且無法直接比較。建議做 re-ranking(重新排序),依使用者查詢來重新評估相關性。

3.使用的 LLM 類型

模型越強大,答案越精準,但計算成本也更高。
需要在答案品質與計算成本間進行效益分析,並找到最佳平衡點。

4.提示(Prompt)的品質

Prompt 是 LLM 用來生成答案的文字,應該精心設計,確保能正確引導 LLM。
清楚、精簡的 Prompt,還要明確強調 LLM 只能使用檢索到的脈絡來生成答案。

想了解更多嗎?

如果您想進一步了解 Agentic RAG (Nuclia),或希望我們協助您導入相關解決方案,歡迎填寫表單與我們聯繫,獲得技術支援與即時交流。

👋 期待與您見面!

評估 RAG Pipeline 的品質

為什麼需要持續評估?

當你調整完參數並完成 RAG pipeline 的設定後,接下來需要對其品質進行評估。這不是一次性就能完成的工作,而是一個需要持續監控與微調的過程。

原因在於:

  • 知識庫的內容會隨著新資源的加入而變動,導致原本正確的答案可能變得錯誤。
  • 同時,使用者的問題也會演變,經常擴展到你的資源尚未充分涵蓋的主題。

REMi 評估模型

由於這是一項複雜且關鍵的任務,Progress 提供了 RAG Evaluation Metrics(REMi)。
這是一個經過微調的開源 LLM,能有效簡化 RAG pipeline 的評估。

REMi 會考量 RAG pipeline 的主要輸入與輸出,包括:

  • Query(查詢):使用者提出的問題,模型需要回覆的部分
  • Context(脈絡):檢索步驟取得的資訊,應與使用者問題相關
  • Answer(答案):語言模型在收到查詢與脈絡後生成的回應
  • Answer relevance(答案相關性):生成的答案與使用者問題是否相關?
  • Context relevance(脈絡相關性):檢索到的脈絡是否與使用者問題相關?
  • Groundedness(基礎扎實度):生成的答案是否確實有依據於檢索的脈絡?

透過結合這些指標,REMi 能提供對 RAG pipeline 品質的全方位檢視。

常見情境與修正方向

情境 1:

脈絡相關性高,但答案相關性與基礎扎實度低。

這代表模型產生了「無法驗證」的答案。語意搜尋雖然成功檢索到相關脈絡,但模型仍未能生成正確且有根據的答案。

建議修正方式:更換使用的 LLM。

情境 2:

答案相關性高,但脈絡相關性與基礎扎實度低。

這代表模型產生了「無法驗證」的答案。LLM 雖然回覆了看似相關的內容,但答案並不是根據知識庫中的資訊而來。

建議修正方式:先檢查知識庫是否缺少必要資訊;若資訊已存在,則需要調整搜尋與 RAG 的策略參數。

情境 3:

基礎扎實度高,但答案相關性與脈絡相關性低。

這種情況下,模型產生了「不相關」的答案。LLM 確實依據檢索到的脈絡生成回覆,但回覆與使用者的問題並不相關。
這通常發生在檢索到錯誤的脈絡時,模型依舊會根據這些資料生成答案,而忽略了查詢中的細節。

建議修正方式:重新檢視檢索策略,特別是語意搜尋的門檻設定與提示(prompt)的設計。需明確告知模型「僅能使用提供的脈絡」以及「不可使用外部知識」。

擴充脈絡資訊的重要性

為什麼要擴充脈絡?

RAG 的核心目標,是為問題找出「最適合回答的文字區塊」。
語意搜尋通常能找到與查詢最接近的內容,但部分關鍵資訊可能出現在文字區塊的前後脈絡,而沒有被一起檢索出來。

因此,在初始檢索的基礎上,加入額外內容,可以提升答案的完整性與正確性。

相鄰文字區塊

當資訊切分在多個文字區塊(chunks)中時,可以將「檢索到的區塊」與其相鄰段落一起提供給 LLM。

適用情況

  • 文件有固定結構
    (如:問題描述在前、解決方案在後)
  • 使用者多半只描述問題,而非解決方法

說明

使用者支援文件常見以下情況:

  • 「問題描述」段落與查詢語意最接近 → 會被檢索到
  • 「解決方案」段落語意不同 → 不會自動被檢索到

透過自動加入後續 2–3 個段落,LLM 能取得完整資訊來源。
但加入過多段落會產生雜訊,因此需要在「完整度」與「不相關內容」間取得平衡。

若文件篇幅不大,也可以直接檢索整份文件,以確保提供足夠脈絡。

後設資料(Metadata)延伸脈絡

加入後設資料(如標題、作者、分類等),能補足檢索未涵蓋的資訊。

範例

  • 問題:誰發現宇宙主要由氫組成?
  • 脈絡:被檢索到的內容:
    • 「她是那位天才,發現宇宙主要由氫組成。」
  • 參考:但真正的答案(人物姓名)其實出現在該文件的標題中。

因為標題不像內文那樣出現 universe 或 hydrogen,所以語意搜尋不會查到標題。

在脈絡中加入標題,可讓 LLM 得出正確答案。

可加入的後設資料

  • 標題(Title)
  • 作者(Author)
  • 發布日期(Published date)
  • 標籤(Labels)
  • 分類(Tags)

後設資料能讓 LLM 更清楚內容來源與主題,避免資訊不足造成錯誤答案。

資料擴增(Data Augmentation)

資料擴增能從現有內容衍生更多資訊,其中最常見的方式是產生摘要。

摘要(Summaries)應用方式

在文件匯入時,先用摘要模型為每份文件產生摘要。
當文字區塊被檢索到時,再將摘要一起提供給 LLM。

範例

  • 使用者問題:哪一種榔頭最適合在家具上固定布料?
  • 文件標題:《Upholstery hammer》
  • 文字區塊只提到「適用於固定布料」但沒描述工具本身
  • 加上摘要後 → LLM 可產生更完整、更正確的答案

其他資料擴增類型

資料擴增也能產生:

  • 額外見解(如:安全領域的操作風險提醒)
  • 結構化 JSON(如:品牌列表、價格列表)

此類額外資訊可補充檢索內容,讓 LLM 在生成答案時有更完整的參考。

想了解更多嗎?

如果您想進一步了解 Agentic RAG (Nuclia),或希望我們協助您導入相關解決方案,歡迎填寫表單與我們聯繫,獲得技術支援與即時交流。

👋 期待與您見面!



    You cannot copy content of this page