在上一篇文章中,我們介紹了如何運用 TDD(Test-Driven Development) 來應對 GenAI 開發中的快速迭代與穩定發佈需求,通過測試優先的方式,確保每個功能的穩定性和可靠性。這一次,我們將轉向 MDD(Metric-Driven Development),一種基於數據的開發決策方法。隨著 GenAI 系統不斷複雜化,使用度量來自動化評估和改進模型的表現變得至關重要,從而提升整體開發效率和質量。
RAGAs(RAG Assessment) 是一個針對 RAG(Retrieval Augmented Generation)系統設計的評估框架,它的目的是量化和優化 RAG 管道的性能。RAGAs 依賴 MDD 的核心概念,使用數據來自動化和精確評估 RAG 系統的檢索與生成階段,減少對人工標註的依賴。透過 RAGAs,開發者可以有效識別系統中的問題並優化檢索器(Retriever)與生成器(Generator)的表現,從而提升模型的整體質量。
RAG 評估的第一步是準備評估所需的資料集。對於每個問題,你需要以下幾個部分的資料:
範例:
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."]
這些資料組合將幫助我們比較檢索到的上下文是否精確,以及生成的答案是否正確。
RAGAs 框架提供了多種評估指標,來針對檢索和生成階段進行評估,如:
範例:
from ragas.metrics import context_precision, answer_relevance
metrics = [context_precision, answer_relevance]
接下來,我們將資料集轉換成 RAGAs 支援的格式,使用 datasets 來建立數據集,並傳遞給 RAGAs 的評估函數。
from datasets import Dataset
sample = {
"question": questions,
"answer": answers,
"contexts": contexts,
"ground_truths": ground_truths
}
eval_dataset = Dataset.from_dict(sample)
準備好資料集後,我們可以調用 RAGAs 框架進行評估,將資料集和選定的指標傳入 evaluate 函數,計算各個指標的得分。
範例:
from ragas import evaluate
scores = evaluate(
dataset=eval_dataset,
metrics=metrics
)
print(scores)
這會返回一個包含各個指標得分的字典,你可以根據這些分數來評估 RAG 管道的表現。
當你得到評估結果後,你可以根據具體指標來分析檢索與生成的表現。例如,如果 Context Recall 分數較低,表示檢索階段可能未找到所有需要的信息;如果 Answer Correctness 分數不高,則說明生成的答案可能有事實錯誤。
範例結果:
{
"context_precision": 0.85,
"answer_relevance": 0.90
}
根據這些結果,你可以識別出系統的弱點,並進行相應的優化。
評估的最終目的是幫助你找到系統的瓶頸並進行改進。當你發現某個指標的表現不佳時,可以針對性地優化檢索策略或微調生成模型。RAGAs 的度量驅動開發(MDD)方式讓你能夠通過數據進行自動化決策,逐步提高系統的質量。
ref.