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 在生成答案時有更完整的參考。
如何使用Progress Agentic RAG來識別知識缺口
RAG Prompt Labs的重要性
Progress Agentic RAG 的 AI 治理與可稽核性優勢
想了解更多嗎?
如果您想進一步了解 Agentic RAG (Nuclia),或希望我們協助您導入相關解決方案,歡迎填寫表單與我們聯繫,獲得技術支援與即時交流。
👋 期待與您見面!