1. 為什麼 LLM 需要自動化 Evals?
傳統軟體開發依賴單元測試 (Unit Tests) 與整合測試。然而,大語言模型 (LLM) 具備機率性輸出特點,當工程師微調 Prompt、更換 Embedding 模型或調整 Chunk Size 時,很難靠人工抽樣檢視是否造成「舊問題修正,新問題爆發」。
建立量化的 **LLM Evals 管道**,能將「感覺好像變好」轉化為「精確度提升 4.2%、忠實度達到 98.1%」的客觀數據。
"If you can't measure it, you can't improve it. In LLM systems, Evals are your regression test suite."
2. RAG 評測三大核心指標 (RAG Triad)
評測 RAG 系統時,必須將「檢索 (Retrieval)」與「生成 (Generation)」階段解耦:
- Context Relevance (脈絡相關性):檢索出來的 Chunk 是否包含回答問題所需資訊?(消滅無用資料)
- Groundedness / Faithfulness (忠實度):回答是否完全基於檢索內容,無憑空捏造?(消滅幻覺)
- Answer Relevance (回答相關性):模型回答是否精準回應使用者的原始提問?(消滅答非所問)
3. 二階段重排 (Reranking) 實戰
單純依靠向量相似度 (Vector Cosine Similarity) 往往會招致雜訊。採用二階段檢索架構:先用向量搜尋撈出 Top-20,再用 Cross-Encoder / Cohere Rerank 重排取 Top-5,能顯著提升高意圖結果的命中率。
[User Query]
│
▼
[Vector DB Retrieval] ── (Fast, Top 20 Candidates)
│
▼
[Cross-Encoder Reranker] ── (Deep Cross-Attention, Top 5 Final)
│
▼
[LLM Generation Window]
4. 自動化測試代碼範例:Python + Ragas 評測
以下展示使用 ragas 自動計算 faithfulness 與 answer_relevancy 的範例:
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from datasets import Dataset
# 準備評測測試集
data = {
"question": ["Cloudflare Pages 如何部署?"],
"contexts": [["只需在終端機執行 npx wrangler pages deploy . --project-name=my-app 即刻完成部署。"]],
"answer": ["可以透過 wrangler 工具執行 npx wrangler pages deploy 指令發布。"],
"ground_truth": ["執行 npx wrangler pages deploy 完成部署。"]
}
dataset = Dataset.from_dict(data)
# 執行自動化量化評測
results = evaluate(
dataset=dataset,
metrics=[faithfulness, answer_relevancy, context_precision]
)
print("Eval Score Matrix:", results)
5. 常見問題解答 (FAQ)
Q: 如何衡量 RAG 檢索層 (Retrieval) 的精確度?
常用指標包含 Context Precision(檢索內容中相關資訊的比例)、Context Recall(真實答案是否覆蓋於檢索內容中)以及 MRR (Mean Reciprocal Rank) 首個相關結果出現的排名位置。
Q: 二階段重排 (Reranking) 對 RAG 效能提升有多大?
使用 Cross-Encoder 或 Cohere Rerank 進行二階段重排,通常可將 Top-5 命中率 (Hit Rate) 提升 15%-25%,顯著降低檢索雜訊與 Token 開銷。