建立評估資料集後,下一步是定義用於評估模型成效的指標。生成式 AI 模型可為各種工作建立應用程式,而 Gen AI Evaluation Service 採用測試導向架構,可將主觀評分轉換為客觀且可執行的結果。
以下是與評估指標相關的核心概念:
評量表:評估 LLM 模型或應用程式回應的標準。
指標:根據評分標準評估模型輸出內容的分數。
Gen AI Evaluation Service 提供下列類別的指標:
以評量表為準的指標:將 LLM 納入評估工作流程。
自動調整評量表 (建議):系統會為每個提示動態生成評量表。系統會根據提示,以詳細且可解釋的通過或失敗回饋評估回覆。
靜態評量表:明確定義評量表,並將同一份評量表套用至所有提示。系統會使用同一組以分數為依據的評估人員來評估回應。每個提示的單一數值分數 (例如 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_QUALITY
自然語言guidelines
引導 GENERAL_QUALITY
,著重在對您最重要的評分標準上生成評量表。接著,Gen AI 評估服務會產生評量表,涵蓋預設工作和您指定的準則。
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
:評估代理程式最終答案的品質,不需要參考答案。
如要進一步瞭解目標式自動調整評量表,請參閱「自動調整評量表詳細資料」。
靜態評分量表
靜態評量表會對資料集中的每個範例套用一組固定的評分指南。如果您需要根據所有提示的統一基準評估成效,這種以分數為導向的方法就非常實用。
舉例來說,以下靜態評分量表會以 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]
)