建立評估資料集後,下一步是定義用於評估模型成效的指標。生成式 AI 模型可為各種工作建立應用程式,而 Gen AI Evaluation Service 採用測試導向架構,可將主觀評分轉換為客觀且可執行的結果。
以下是與評估指標相關的核心概念:
評量表:評估 LLM 模型或應用程式回覆的標準。
指標:根據評分標準評估模型輸出內容的分數。
Gen AI Evaluation Service 提供下列指標類別:
以評分量表為基礎的指標:將大型語言模型納入評估工作流程。
自動調整評量表 (建議):系統會為每個提示動態生成評量表。系統會根據提示提供詳細的通過或失敗意見回饋,評估回覆內容。
靜態評量表:明確定義評量表,並將同一份評量表套用至所有提示。系統會使用同一組以分數為依據的評估人員來評估回覆。每個提示的單一數值分數 (例如 1 到 5 分)。需要評估非常具體的層面,或所有提示都必須使用完全相同的評分標準時。
運算資源相關指標:使用確定性演算法評估回覆,通常會使用真值。每個提示的數值分數 (例如 0.0 到 1.0)。實際資料可用,且可透過確定性方法比對。
自訂函式指標:透過 Python 函式定義自己的指標。
以評量表為準的指標
以評分量表為基礎的指標會在工作流程中採用大型語言模型,評估模型回覆品質。以評量表為準的評估方式適用於各種工作,特別是寫作品質、安全性及指令遵循程度,這些通常難以透過確定性演算法評估。
自動調整式評量表
調整型評分量表就像為模型進行單元測試一樣。適應性評分量表會針對資料集中的每個提示,動態生成一組專屬的通過或未通過測試。評分量表可確保評估內容與所要求的工作有關,並提供客觀、可解釋且一致的結果。
以下範例說明如何為一組提示生成適應性評量表:
| 提示詞 | 自動調整式評量表 |
|---|---|
| 「Summarize the following article about the benefits of solar power in under 100 words…」(請用 100 字以內總結下列文章,內容是有關太陽能的好處…) |
|
| 「請撰寫簡短友善的電子郵件,邀請員工參加公司年度野餐活動。請提及日期為 9 月 15 日,並說明當天會提供素食選項…」 |
|
您可以透過 SDK 存取自動調整式評量表。建議您從預設的 GENERAL_QUALITY 開始。
一般品質指標
GENERAL_QUALITY 會根據輸入的提示,生成一組涵蓋各種工作的評量表,例如遵循指示、格式設定、語氣和風格。您可以在下列程式碼行中,將評量準則生成與驗證功能結合:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY,
],
)
您可以先分別生成評分量表 (以便跨模型和代理程式審查或重複使用),再用來評估模型回覆:
from vertexai import types
# Use GENERAL_QUALITY recipe to generate rubrics, and store them
# as a rubric group named "general_quality_rubrics".
data_with_rubrics = client.evals.generate_rubrics(
src=eval_dataset_df,
rubric_group_name="general_quality_rubrics",
predefined_spec_name=types.RubricMetric.GENERAL_QUALITY,
)
# Specify the group of rubrics to use for the evaluation.
eval_result = client.evals.evaluate(
dataset=data_with_rubrics,
metrics=[types.RubricMetric.GENERAL_QUALITY(
rubric_group_name="general_quality_rubrics",
)],
)
你也可以使用自然語言GENERAL_QUALITYguidelines引導 GENERAL_QUALITY,著重生成你最重視的評分標準。接著,Gen AI Evaluation Service 會產生評量表,涵蓋預設工作和您指定的準則。
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY(
metric_spec_parameters={
"guidelines": "The response must maintain a professional tone and must not provide financial advice."
}
)
],
)
目標品質指標
如要評估模型品質的特定面向,可以使用生成評量表 (著重於特定領域) 的指標。例如:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.TEXT_QUALITY,
types.RubricMetric.INSTRUCTION_FOLLOWING,
],
)
Gen AI Evaluation Service 提供下列類型的適應性評量表:
INSTRUCTION_FOLLOWING:評估回覆內容是否符合提示中的特定限制和指令。TEXT_QUALITY:專門評估回覆的語言品質,包括流暢度、連貫性和文法。
多輪對話
multi_turn_general_quality:評估多輪對話的整體對話品質。multi_turn_text_quality:評估多輪對話中回應的文字品質。
代理評估
final_response_reference_free:評估代理最終答案的品質,不需要參考答案。final_response_quality:根據代理的設定和工具使用情形,使用適應性評分標準評估代理最終答案的品質。hallucination:評估代理程式的文字回覆是否根據代理程式的設定和工具使用情況。tool_use_quality:評估代理程式為回應使用者提示而發出的函式呼叫是否正確。
如要進一步瞭解目標導向自動調整評量表,請參閱「自動調整評量表詳細資料」。
靜態評分量表
靜態評量表會對資料集中的每個範例套用一組固定的評分指南。如果您需要根據一致的基準評估所有提示的成效,這種以分數為導向的方法就非常實用。
舉例來說,以下靜態評分量表會以 1 到 5 分評估文字品質:
5: (Very good). Exceptionally clear, coherent, fluent, and concise. Fully adheres to instructions and stays grounded.
4: (Good). Well-written, coherent, and fluent. Mostly adheres to instructions and stays grounded. Minor room for improvement.
3: (Ok). Adequate writing with decent coherence and fluency. Partially fulfills instructions and may contain minor ungrounded information. Could be more concise.
2: (Bad). Poorly written, lacking coherence and fluency. Struggles to adhere to instructions and may include ungrounded information. Issues with conciseness.
1: (Very bad). Very poorly written, incoherent, and non-fluent. Fails to follow instructions and contains substantial ungrounded information. Severely lacking in conciseness.
Gen AI Evaluation Service 提供下列靜態評分標準指標:
GROUNDING:根據提供的來源文字 (基本事實) 檢查事實準確度和一致性。這項指標對 RAG 系統至關重要。SAFETY:評估模型回覆是否違反安全政策,例如仇恨言論或危險內容。
您也可以使用指標提示範本,例如 FLUENCY。
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.SAFETY,
types.RubricMetric.GROUNDING,
types.RubricMetric.FLUENCY,
],
)
自訂靜態評量表
如有高度專業的需求,可以自行建立靜態評量表。這種方法可提供最大程度的控制權,但您必須仔細設計評估提示,確保結果一致且可靠。建議您先使用附有GENERAL_QUALITY指引的評量表,再自訂靜態評量表。
# Define a custom metric to evaluate language simplicity
simplicity_metric = types.LLMMetric(
name='language_simplicity',
prompt_template=types.MetricPromptBuilder(
instruction="Evaluate the story's simplicity for a 5-year-old.",
criteria={
"Vocabulary": "Uses simple words.",
"Sentences": "Uses short sentences.",
},
rating_scores={
"5": "Excellent: Very simple, ideal for a 5-year-old.",
"4": "Good: Mostly simple, with minor complex parts.",
"3": "Fair: Mix of simple and complex; may be challenging for a 5-year-old.",
"2": "Poor: Largely too complex, with difficult words/sentences.",
"1": "Very Poor: Very complex, unsuitable for a 5-year-old."
}
)
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
simplicity_metric
],
)
以運算為基礎的指標
以運算為基礎的指標會使用確定性演算法,比較模型回覆與參考答案,然後為模型回覆評分。這類評估需要資料集中的基準真相,適合用於「正確」答案定義明確的任務。
喚回度導向的摘要評估研究 (rouge_l、rouge_1):評估模型回覆與參考文字之間 n 元語法 (連續字詞序列) 的重疊程度。這項指標通常用於評估文字摘要。
雙語評估研究 (BLEU):計算相符的 n 元語法,評估回覆與高品質參考文字的相似程度。這是翻譯品質的標準指標,但也可用於其他文字生成工作。
完全比對 (exact_match):測量與參考答案完全相同的回覆百分比。這項功能適用於回答事實類問題,或只能有一個正確答案的工作。
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.Metric(name='bleu'),
types.Metric(name='rouge_l'),
types.Metric(name='exact_match')
],
)
自訂函式指標
您也可以將自訂 Python 函式傳遞至 custom_function 參數,實作自訂評估邏輯。Gen AI Evaluation Service 會針對資料集的每一列執行這項函式。
# Define a custom function to check for the presence of a keyword
def contains_keyword(instance: dict) -> dict:
keyword = "magic"
response_text = instance.get("response", "")
score = 1.0 if keyword in response_text.lower() else 0.0
return {"score": score}
keyword_metric = types.Metric(
name="keyword_check",
custom_function=contains_keyword
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[keyword_metric]
)