The Evaluation and Variants of RAG
5/11/2025
近期大型語言模型(Large Language Models, LLMs)崛起,其自然語言處理能力在理解、翻譯、總結、擬人口吻方面有著令人耳目一新的表現,使用者主要透過提問(Query)或下達指令方式,與大型語言模型交流,不過在問答過程中,使用者或許會發現模型所給予的答覆可能存在資料偏誤、時效性、資料幻覺、字數限制等問題,以至於獲得答非所問的結果。為了解決大型語言模型在理解上的缺陷,檢索增強生成(Retrieval-Augmented Generation, RAG)的引入,可使模型從外部資料庫提取特定專業知識,利用額外知識生成合適的回覆或完成特定任務。
本文將主要說明 RAG 之原理及其重要性、作業流程,並簡介 “Building and Evaluating Advanced RAG” 課程中所提及之 RAG 的評估指標(Triad metric),試比較 LlamaIndex 與 LangChain 之差異,最後說明 RAG 的兩個衍生模型 — — Sentence window retrieval 與 Auto-merging retrieval。
✨ Inspired by “Building and Evaluating Advanced RAG” of DeepLearningAI.
✨ 團隊成員來自國震中心與台大土木合設AI研究中心(NCREE — NTUCE Joint Artificial Intelligence Research Center)
本文將主要說明 RAG 之原理及其重要性、作業流程,並簡介 “Building and Evaluating Advanced RAG” 課程中所提及之 RAG 的評估指標(Triad metric),試比較 LlamaIndex 與 LangChain 之差異,最後說明 RAG 的兩個衍生模型 — — Sentence window retrieval 與 Auto-merging retrieval。
✨ Inspired by “Building and Evaluating Advanced RAG” of DeepLearningAI.
✨ 團隊成員來自國震中心與台大土木合設AI研究中心(NCREE — NTUCE Joint Artificial Intelligence Research Center)
RAG 基礎作業流程下圖說明 RAG 介入 LLMs 前後的流程差異:

RAG 使用時機
大型語言模型在實作過程或多或少面臨以下數個問題,而 RAG 在這些問題中得給予一定程度的幫助:
source: https://www.nightfall.ai/ai-security-101/retrieval-augmented-generation-rag
RAG 的關鍵流程
以下五個階段構成了 RAG 作業流程開發的主軸,確保各項案例應用能夠有效地執行並滿足使用者需求。
(1) Loading
針對不同的應用需求,使用者須提供相應的外部知識(如文本文件、網站、資料庫或API等),並將此資料匯入到系統中。
(2) Indexing
索引階段之目的為建立一種供外部資料可被有效查詢的架構,對於大型語言模型而言,文本資料或額外的詮釋資料(metadata)主要被轉為向量(vector)嵌入,妥善進行索引建置有助於建立系統性架構,提升後續資料搜尋速度。
(3) Storing
接著是存儲階段,一旦資料經過索引處理,便需要將索引和其相關資料儲存起來,以避免未來發生重複索引的情況。
(4) Querying
查詢階段則涉及利用 LLMs 和 LlamaIndex 結構,以多種方式對索引資料進行檢索,可以是子查詢、多步驟查詢或混合策略。
(5) Evaluation
最後,評估階段是整個流程中的關鍵,此階段涉及對查詢與回應效率的檢驗,比較不同策略並提供客觀指標,以顯示回應查詢的準確度、可靠度以及速度。
LlamaIndex 簡介與其和 LangChain 差異在”Building and Evaluating Advanced RAG” 課程中使用多次LlamaIndex框架,此框架是一款專注於檢索的開放資源工具,透過大型語言模型來簡化查詢過程,便捷地檢索出與用戶輸入相關的文件,其特點包括對文件、程式碼、網站進行索引,透過簡單的查詢與大型語言模型互動,提供排序演算法和過濾功能,故LlamaIndex適合建立專注度高的搜尋案例,有著相對較低的學習曲線,且只需要基本的 Python 和大型語言模型知識。
相對而言,LangChain 是一個旨在簡化大型語言模型驅動應用開發的開源框架,提供了一套全面的工具包來構建更複雜的互動應用,包含文本和資料來源的索引、全面的模型互動和微調,以及透過提示鏈、組件和語言模型行為進行客製化,亦能進行鏈結語言模型調用和跨任務推理,並提供建立互動式用戶介面的工具,LangChain的學習曲線較陡峭,需要更深入的大型語言模型和軟體開發技能,以及更多的開發時間。
因此,在框架的選擇上,需根據使用者欲建立的應用案例類型及願意投入的技術精力和開發能力而定,以下便以圖示與表格簡述LlamaIndex 與 LangChain 之間的關係:
大型語言模型在實作過程或多或少面臨以下數個問題,而 RAG 在這些問題中得給予一定程度的幫助:
- Knowledge cutoff
- Hallucination risks
- Contextual limitations
- Auditability
source: https://www.nightfall.ai/ai-security-101/retrieval-augmented-generation-rag
RAG 的關鍵流程
以下五個階段構成了 RAG 作業流程開發的主軸,確保各項案例應用能夠有效地執行並滿足使用者需求。
(1) Loading
針對不同的應用需求,使用者須提供相應的外部知識(如文本文件、網站、資料庫或API等),並將此資料匯入到系統中。
(2) Indexing
索引階段之目的為建立一種供外部資料可被有效查詢的架構,對於大型語言模型而言,文本資料或額外的詮釋資料(metadata)主要被轉為向量(vector)嵌入,妥善進行索引建置有助於建立系統性架構,提升後續資料搜尋速度。
(3) Storing
接著是存儲階段,一旦資料經過索引處理,便需要將索引和其相關資料儲存起來,以避免未來發生重複索引的情況。
(4) Querying
查詢階段則涉及利用 LLMs 和 LlamaIndex 結構,以多種方式對索引資料進行檢索,可以是子查詢、多步驟查詢或混合策略。
(5) Evaluation
最後,評估階段是整個流程中的關鍵,此階段涉及對查詢與回應效率的檢驗,比較不同策略並提供客觀指標,以顯示回應查詢的準確度、可靠度以及速度。
LlamaIndex 簡介與其和 LangChain 差異在”Building and Evaluating Advanced RAG” 課程中使用多次LlamaIndex框架,此框架是一款專注於檢索的開放資源工具,透過大型語言模型來簡化查詢過程,便捷地檢索出與用戶輸入相關的文件,其特點包括對文件、程式碼、網站進行索引,透過簡單的查詢與大型語言模型互動,提供排序演算法和過濾功能,故LlamaIndex適合建立專注度高的搜尋案例,有著相對較低的學習曲線,且只需要基本的 Python 和大型語言模型知識。
相對而言,LangChain 是一個旨在簡化大型語言模型驅動應用開發的開源框架,提供了一套全面的工具包來構建更複雜的互動應用,包含文本和資料來源的索引、全面的模型互動和微調,以及透過提示鏈、組件和語言模型行為進行客製化,亦能進行鏈結語言模型調用和跨任務推理,並提供建立互動式用戶介面的工具,LangChain的學習曲線較陡峭,需要更深入的大型語言模型和軟體開發技能,以及更多的開發時間。
因此,在框架的選擇上,需根據使用者欲建立的應用案例類型及願意投入的技術精力和開發能力而定,以下便以圖示與表格簡述LlamaIndex 與 LangChain 之間的關係:


Triad metric
在 RAG 介入 LLMs 問答作業流程後,如何對問答系統進行成果檢驗,以精進模型問答表現是為重要課題,以下將說明評估RAG問答系統表現的三個建議指標。
在 RAG 介入 LLMs 問答作業流程後,如何對問答系統進行成果檢驗,以精進模型問答表現是為重要課題,以下將說明評估RAG問答系統表現的三個建議指標。

在 RAG 問答系統中的運作方式可以分為三大部分,第一為使用者的提問(Query),第二為經由RAG系統梳理出的知識來源片段(Context),第三為LLM透過知識片段來回答使用者提問的回答(Response)。因此為了評估RAG問答系統的表現提出了三個指標,第一個指標為文本相關性(Context relevance),評估知識來源(Context)與提問(Query)的相關性,確保知識來源確實與提問相關;第二個指標為真實性(Grouondness)用以評估LLM的回答(Response)是否真的基於知識來源(Context)而非LLM的幻覺所致,確保回答的真實性;第三個指標為回答相關性(Answer Relevance),評估LLM的回答(Response)與使用者的提問(Query)的相關性,確保回答內容確實為使用者所需。

上述三個指標在古典NLP的做法中常見以consine similartiy、BLEU或ROUGE來作為計算分數的核心指標;在BERT問世後,也有以BERT為核心來對三個指標評分的設計取代古典NLP作法;而在LLM擁有一定推理能力的現在,設計評分prompts讓LLM來對上述三項指標進行評分為更具代表性及靈活性的方法(如下圖trulens所使用的以LLM評分的prompt)。

Advanced retrieval model
本階段將針對 “Building and Evaluating Advanced RAG” 課程所提及的 RAG 相關進階模型作簡述與比較。
Sentence window retrieval
本階段將針對 “Building and Evaluating Advanced RAG” 課程所提及的 RAG 相關進階模型作簡述與比較。
Sentence window retrieval
- 採用窗口(window)方法,從一段文本中尋找與查詢語句相關的短句或文本,從而提取出有用的訊息
- 此種技術通常可應用於文本摘要、問答系統等場景。

- Sentence Window Size


Auto-merging retrieval
- 當檢索主題的答案可能來散落於整體文本中各處,此法可用於將檢索可能的答案,是來自於多處來源或多個搜尋結果的資訊,並進一步找到及合併為符合主題的答案,此答案為一整合性輸出
- 將整體文本定義為多個chunk組成,並且不同層chunk間具有從屬關係,為下層chunk連結到上層parent chunk之結構

- Chunk Sizes
Total Tokens : 更小的chunk sizes可以在處理查詢時產生更精簡的結果

Sentence-window retrieval VS. Auto-merging retrieval
(1) Sentence-Window Retrieval
(1) Sentence-Window Retrieval
- 搜尋之主題若與前後文句具有強烈關係者,可考慮採用window size檢索文本中與查詢相關的特定句子或句子窗口。
- Sentence window size可能會影響上下文訊息,導致解釋或回答不夠全面。
- 從多個檢索訊息中合併出結果,以提供一個完整的、去除重複訊息的回答。
- 較小的Chunk Size可能導致一些重要的上下文訊息遺漏,因為較小的Chunk size可能無法包含足夠的上下文來理解整個內文。
- 較大的Chunk size有利於保留上下文訊息,但因每次檢索的數據量更大,可能會導致處理效率降低。