iT邦幫忙

2026 iThome 鐵人賽

DAY 24
0
AI Engineering

從零打造 RAG 系統:檢索、生成與落地全紀錄系列 第 24 篇

[Day 24] 用 RAGAS 等工具建立自動化評估流程

  • 分享至 

  • xImage
  •  

前言

昨天介紹了 RAG 系統常用的四個評估指標,這些指標如果要每次都靠人工計算,效率太低。今天要介紹如何用現成工具把評估流程自動化,讓我們可以在每次調整系統參數後,快速得知效果是變好還是變差。

RAGAS:專為 RAG 設計的評估框架

RAGAS(Retrieval-Augmented Generation Assessment)是目前業界常用的開源評估框架,內建了 Day 23 提到的四個核心指標,並透過 LLM 自動計算分數,不需要每題都人工評分。

安裝與基本使用

pip install ragas datasets
from ragas import evaluate
from ragas.metrics import (
    faithfulness,
    answer_relevancy,
    context_precision,
    context_recall,
)
from datasets import Dataset

# 準備評估資料集
eval_data = {
    "question": ["pgvector 支援哪些索引類型?"],
    "answer": ["pgvector 支援 IVFFlat 與 HNSW 兩種索引類型。"],  # 系統實際生成的答案
    "contexts": [["pgvector 提供 IVFFlat 與 HNSW 索引...(檢索到的原文)"]],  # 檢索到的內容
    "ground_truth": ["pgvector 支援 IVFFlat 與 HNSW 兩種索引類型"],  # 標準答案
}

dataset = Dataset.from_dict(eval_data)

result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_precision, context_recall],
)
print(result)

輸出結果會是每個指標的平均分數(0 到 1 之間),分數越高代表表現越好。

建立完整的評估 Pipeline

def run_evaluation(test_questions, rag_system):
    """
    test_questions: [{"question": ..., "ground_truth": ...}, ...]
    """
    questions, answers, contexts, ground_truths = [], [], [], []

    for item in test_questions:
        retrieved = rag_system.retrieve(item["question"])
        answer = rag_system.generate(item["question"], retrieved)

        questions.append(item["question"])
        answers.append(answer)
        contexts.append([r["content"] for r in retrieved])
        ground_truths.append(item["ground_truth"])

    dataset = Dataset.from_dict({
        "question": questions,
        "answer": answers,
        "contexts": contexts,
        "ground_truth": ground_truths,
    })

    return evaluate(dataset, metrics=[faithfulness, answer_relevancy, context_precision, context_recall])

有了這個 Pipeline,之後每次調整參數(例如換一個 Chunk Size、加入 Rerank),都可以重新跑一次評估,用分數客觀比較效果差異,而不是憑感覺猜測「應該有變好吧」。

自動化評估的限制

雖然自動化評估很方便,但也要注意:

  1. LLM 評分本身也可能不準確:LLM as a judge 的評分機制,仍然可能受到 Prompt 設計、模型本身能力的影響而產生偏差
  2. 需要高品質的測試集:如果測試集的 ground_truth 本身寫得不夠精確,評估結果的參考價值也會打折扣
  3. 不能完全取代人工檢查:建議定期抽樣人工檢視實際案例,確認自動化評分跟真實體感是否一致

建立持續評估的習慣

建議把評估 Pipeline 整合進開發流程,例如:

  • 每次調整 Chunking 策略、Embedding 模型、Rerank 機制後,都跑一次完整評估
  • 把每次評估結果記錄下來(時間、參數設定、四項指標分數),方便追蹤系統演進的軌跡
  • 針對分數明顯下降的案例,回頭做錯誤分析(這是明天的主題)

小結

透過 RAGAS 這類工具,可以把主觀的「回答得好不好」轉換成客觀可比較的量化指標,讓每一次系統優化都有明確的依據,而不是憑感覺調整參數。明天我們要做一次完整的 A/B 測試,實際比較不同 Chunking、Embedding、Rerank 組合帶來的效果差異。


上一篇
[Day 23] RAG 評估指標介紹(Faithfulness、Answer Relevancy、Context Precision/Recall)
下一篇
[Day 25] A/B 測試:比較不同 Chunking / Embedding / Rerank 組合的效果
系列文
從零打造 RAG 系統:檢索、生成與落地全紀錄 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言