평가 데이터 세트를 만든 후 다음 단계는 모델 성능을 측정하는 데 사용되는 측정항목을 정의하는 것입니다. 생성형 AI 모델은 다양한 작업을 위한 애플리케이션을 만들 수 있으며, Gen AI Evaluation Service는 평가를 주관적인 평가에서 객관적이고 실행 가능한 결과로 변환하는 테스트 기반 프레임워크를 사용합니다.
다음은 평가 측정항목과 관련된 핵심 개념입니다.
기준표: LLM 모델 또는 애플리케이션의 응답을 평가하는 기준입니다.
측정항목: 평가 기준표에 따라 모델 출력을 측정하는 점수입니다.
Gen AI Evaluation Service는 다음과 같은 측정항목 카테고리를 제공합니다.
기준표 기반 측정항목: 평가 워크플로에 LLM을 통합합니다.
적응형 기준표(권장): 각 프롬프트에 대해 기준표가 동적으로 생성됩니다. 프롬프트에 관한 세부적이고 설명 가능한 통과 또는 실패 피드백으로 응답이 평가됩니다.
정적 기준표: 기준표가 명시적으로 정의되며 모든 프롬프트에 동일한 기준표가 적용됩니다. 응답은 동일한 숫자 점수 기반 평가자 세트로 평가됩니다. 프롬프트당 단일 숫자 점수(예: 1~5)입니다. 매우 구체적인 측정기준에 대한 평가가 필요하거나 모든 프롬프트에 걸쳐 정확히 동일한 기준표가 필요한 경우에 사용합니다.
계산 기반 측정항목: 일반적으로 정답을 사용하여 결정론적 알고리즘으로 응답을 평가합니다. 프롬프트당 숫자 점수(예: 0.0~1.0)입니다. 정답을 사용할 수 있고 결정론적 방법과 일치시킬 수 있는 경우에 적합합니다.
커스텀 함수 측정항목: Python 함수를 통해 자체 측정항목을 정의합니다.
기준표 기반 측정항목
기준표 기반 측정항목은 워크플로 내에 대규모 언어 모델을 통합하여 모델 응답의 품질을 평가합니다. 기준표 기반 평가는 다양한 작업, 특히 결정론적 알고리즘으로 평가하기 어려운 글쓰기 품질, 안전, 요청 사항 준수에 적합합니다.
적응형 기준표
적응형 기준표는 모델의 단위 테스트와 같은 역할을 합니다. 적응형 기준표는 데이터 세트의 각 개별 프롬프트에 대해 고유한 통과 또는 실패 테스트 세트를 동적으로 생성합니다. 기준표는 요청된 작업과 관련된 평가를 유지하고 객관적이고 설명 가능하며 일관된 결과를 제공하는 것을 목표로 합니다.
다음 예에서는 일련의 프롬프트에 대한 적응형 기준표가 생성되는 방식을 보여줍니다.
프롬프트 | 적응형 기준표 |
---|---|
"태양광의 이점에 관한 다음 기사를 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",
)],
)
자연어 guidelines
를 사용하여 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
: 참조 답변 없이 에이전트의 최종 답변 품질을 평가합니다.
타겟팅된 적응형 기준표에 관한 자세한 내용은 적응형 기준표 세부정보를 참조하세요.
정적 기준표
정적 기준표는 데이터 세트의 모든 예에 고정된 단일 스코어링 가이드라인을 적용합니다. 이 점수 기반 접근 방식은 모든 프롬프트에서 일관된 기준에 따라 성능을 측정해야 할 때 유용합니다.
예를 들어 다음 정적 기준표는 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
],
)
계산 기반 측정항목
계산 기반 측정항목은 결정론적 알고리즘을 사용하여 모델의 응답을 참조 답변과 비교하여 점수를 매깁니다. 데이터 세트에 정답이 필요하며 '올바른' 답변이 명확하게 정의된 작업에 적합합니다.
Recall-Oriented Understudy for Gisting Evaluation(rouge_l, rouge_1): 모델의 응답과 참조 텍스트 간의 n-gram(연속된 단어 시퀀스)의 중복을 측정합니다. 텍스트 요약 평가에 일반적으로 사용됩니다.
Bilingual Evaluation Understudy(bleu): 일치하는 n-gram을 계산하여 응답이 고품질 참조 텍스트와 얼마나 유사한지 측정합니다. 번역 품질의 표준 측정항목이지만 다른 텍스트 생성 작업에도 사용할 수 있습니다.
일치검색(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]
)