iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
生成式 AI

從系統設計切入,探索 GenAI 在企業中的實踐系列 第 29

[Day29] 指標驅動開發 (MDD):如何通過 RAGAs 量化 RAG 生成效果

  • 分享至 

  • xImage
  •  

在上一篇文章中,我們介紹了如何運用 TDD(Test-Driven Development) 來應對 GenAI 開發中的快速迭代與穩定發佈需求,通過測試優先的方式,確保每個功能的穩定性和可靠性。這一次,我們將轉向 MDD(Metric-Driven Development),一種基於數據的開發決策方法。隨著 GenAI 系統不斷複雜化,使用度量來自動化評估和改進模型的表現變得至關重要,從而提升整體開發效率和質量。

RAGAs(RAG Assessment) 是一個針對 RAG(Retrieval Augmented Generation)系統設計的評估框架,它的目的是量化和優化 RAG 管道的性能。RAGAs 依賴 MDD 的核心概念,使用數據來自動化和精確評估 RAG 系統的檢索與生成階段,減少對人工標註的依賴。透過 RAGAs,開發者可以有效識別系統中的問題並優化檢索器(Retriever)與生成器(Generator)的表現,從而提升模型的整體質量。

如何使用 RAGAs 評估 RAG 管道

1. 準備資料集

RAG 評估的第一步是準備評估所需的資料集。對於每個問題,你需要以下幾個部分的資料:

  • 用戶問題(question):用戶的查詢。
  • 生成答案(answer):模型生成的回應。
  • 檢索上下文(contexts):從知識庫檢索的相關上下文。
  • 正確答案(ground_truths):對問題的正確回答(可選,根據使用的指標需求)。

範例:

questions = ["When was the Eiffel Tower built and how tall is it?"]
answers = ["The Eiffel Tower was built in 1889 and is 324 meters tall."]
contexts = ["The Eiffel Tower was built in 1889 and stands at 324 meters."]
ground_truths = ["The Eiffel Tower was built in 1889 and is 324 meters tall."]

這些資料組合將幫助我們比較檢索到的上下文是否精確,以及生成的答案是否正確。

2. 定義評估指標

RAGAs 框架提供了多種評估指標,來針對檢索和生成階段進行評估,如:

檢索相關指標:

  • Context Precision
    • 使用資料:用戶問題、檢索上下文
    • 計算方式:比較檢索到的上下文與問題的相關性,評估檢索結果的精確度。
  • Context Recall
    • 使用資料:用戶問題、檢索上下文、正確答案
    • 計算方式:檢查檢索上下文是否涵蓋所有必要信息,與正確答案進行對比,測量是否遺漏關鍵內容。
  • Context Entities Recall
    • 使用資料:檢索上下文、正確答案
    • 計算方式:比較檢索上下文和正確答案中的實體數量,衡量檢索結果中實體的覆蓋率。

生成相關指標:

  • Response Relevancy
    • 使用資料:用戶問題、生成答案
    • 計算方式:檢查生成答案是否與用戶問題直接相關,評估回應能否解決問題。
  • Faithfulness
    • 使用資料:檢索上下文、生成答案
    • 計算方式:比較生成答案與檢索上下文,檢查生成答案是否忠實於檢索到的資料。
  • Factual Correctness
    • 使用資料:生成答案、正確答案
    • 計算方式:將生成的答案與正確答案進行對比,檢查是否有事實錯誤。
  • Semantic Similarity
    • 使用資料:生成答案、正確答案
    • 計算方式:計算生成答案與正確答案之間的語義相似度,檢查答案是否在語義層面達到一致性。

範例:

from ragas.metrics import context_precision, answer_relevance

metrics = [context_precision, answer_relevance]

3. 創建評估數據集

接下來,我們將資料集轉換成 RAGAs 支援的格式,使用 datasets 來建立數據集,並傳遞給 RAGAs 的評估函數。

from datasets import Dataset

sample = {
    "question": questions,
    "answer": answers,
    "contexts": contexts,
    "ground_truths": ground_truths
}

eval_dataset = Dataset.from_dict(sample)

4. 調用 RAGAs 進行評估

準備好資料集後,我們可以調用 RAGAs 框架進行評估,將資料集和選定的指標傳入 evaluate 函數,計算各個指標的得分。

範例:

from ragas import evaluate

scores = evaluate(
    dataset=eval_dataset,
    metrics=metrics
)

print(scores)

這會返回一個包含各個指標得分的字典,你可以根據這些分數來評估 RAG 管道的表現。

5. 分析評估結果

當你得到評估結果後,你可以根據具體指標來分析檢索與生成的表現。例如,如果 Context Recall 分數較低,表示檢索階段可能未找到所有需要的信息;如果 Answer Correctness 分數不高,則說明生成的答案可能有事實錯誤。

範例結果:

{
  "context_precision": 0.85,
  "answer_relevance": 0.90
}

根據這些結果,你可以識別出系統的弱點,並進行相應的優化。

6. 優化與迭代

評估的最終目的是幫助你找到系統的瓶頸並進行改進。當你發現某個指標的表現不佳時,可以針對性地優化檢索策略或微調生成模型。RAGAs 的度量驅動開發(MDD)方式讓你能夠通過數據進行自動化決策,逐步提高系統的質量。


ref.


上一篇
[Day28] 測試驅動開發 (TDD):實現穩定性與快速迭代的開發模式
下一篇
[Day30] 用敏捷思維引導生成式 AI 開發
系列文
從系統設計切入,探索 GenAI 在企業中的實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言