LLM을 프로덕션에 올리는 순간, 모델을 교체하거나 프롬프트를 바꿀 때마다 출력 품질이 좋아졌는지 나빠졌는지를 체계적으로 측정해야 합니다. 사람이 매번 출력을 읽고 점수를 매기는 것은 빠르게 한계에 부딪힙니다. LLM Eval(자동 평가) 시스템은 이 문제를 LLM 자체에게 채점을 맡기거나(LLM-as-judge), 수치 기반 지표로 자동화함으로써 해결합니다. 이 글은 LLM-as-judge 패턴의 원리와 주요 편향, G-Eval·RAGAS 같은 평가 프레임워크, 골든셋 구축 방법, 비용 효율적인 채점 파이프라인, 그리고 회귀를 자동으로 감지하는 방법을 실무 관점에서 정리합니다.
왜 자동 평가가 필요한가
LLM 출력 품질 평가는 전통적인 소프트웨어 테스트와 근본적으로 다릅니다. 함수 반환값이 예상값과 정확히 일치하는지 비교하는 단위 테스트와 달리, LLM 출력은 같은 입력에도 표현이 다양하고, “좋은 답”이 단 하나가 아닌 경우가 대부분입니다. “대한민국의 수도는?”에 대한 답은 하나이지만, “이 계약서의 리스크를 정리해줘”에 대한 좋은 답은 무수히 많습니다.
사람이 직접 평가하는 방식(Human Evaluation)은 정확하지만 느리고 비쌉니다. 평가자 간 일치도(Inter-annotator Agreement)도 낮아서 재현성이 부족합니다. 그래서 모델 개발 주기가 빨라질수록 자동 평가 시스템의 필요성이 커집니다. Zheng et al.(2023)의 MT-Bench 연구에 따르면 강력한 LLM(GPT-4)을 판정자로 활용했을 때 인간 평가자와의 일치도가 전통적인 NLP 지표보다 훨씬 높은 수준에 달했습니다.
LLM-as-judge 패턴
LLM-as-judge는 하나의 LLM(이하 “채점 모델”)이 다른 LLM(이하 “대상 모델”)의 출력을 평가하는 패턴입니다. 채점 모델에게 평가 기준과 대상 출력을 주고, 점수와 이유를 반환하게 합니다. 빠르고 확장성이 좋으며, 텍스트 품질의 다양한 측면(정확성·유창성·관련성·충실도)을 동시에 측정할 수 있습니다.
단일 평가 vs 비교 평가
LLM-as-judge 방식에는 두 가지 변형이 있습니다. 단일 평가(Pointwise)는 출력 하나에 절대 점수(예: 1~5점)를 매기고, 비교 평가(Pairwise)는 두 모델의 출력을 나란히 놓고 어느 쪽이 더 나은지 판정합니다. 비교 평가는 “어느 쪽이 나은가”라는 질문이 더 직관적이라 판정 일관성이 높지만, 출력 쌍이 조합 폭발적으로 늘어나는 단점이 있습니다. 프로덕션 회귀 탐지에는 단일 평가가, 모델 선택 의사결정에는 비교 평가가 적합합니다.
LLM-as-judge의 주요 편향
자동 평가의 신뢰도를 높이려면 채점 모델이 갖는 편향을 미리 이해해야 합니다.
- 위치 편향(Position Bias): 비교 평가에서 먼저 제시된 답변을 선호하는 경향. A→B, B→A 두 순서로 모두 평가해 평균 내는 방식으로 완화
- 길이 편향(Verbosity Bias): 더 긴 답변을 더 좋다고 판단하는 경향. 채점 프롬프트에 “길이가 아닌 내용의 품질을 평가하라”고 명시적으로 지시 필요
- 자기 선호 편향(Self-preference Bias): GPT-4가 GPT-4의 출력을 더 높게 채점하는 경향. 가능하면 채점 모델과 대상 모델을 다르게 구성하거나, 여러 채점 모델의 결과를 앙상블
- 형식 편향(Format Bias): 마크다운, 불릿, 표가 있으면 더 좋아 보인다고 판단하는 경향. 채점 기준에서 형식 보너스를 명시적으로 배제
주요 평가 프레임워크 — G-Eval과 RAGAS
직접 채점 프롬프트를 설계하기 전에 이미 검증된 프레임워크를 살펴보면 출발점이 명확해집니다.
G-Eval
Liu et al.(2023)이 제안한 G-Eval은 LLM-as-judge의 체계적인 구현입니다. 핵심 아이디어는 두 가지입니다. 첫째, 평가 기준을 명시적인 Chain-of-Thought(CoT) 단계로 분해합니다. “유창성을 평가하라”가 아니라 “1) 문법 오류 확인 2) 자연스러운 흐름 확인 3) 1~5점 부여”처럼 채점 절차를 단계별로 기술합니다. 둘째, 점수를 카테고리로 받는 대신 각 점수(1, 2, 3, 4, 5)의 토큰 확률을 직접 추출해 기대값으로 계산합니다. 이 방식은 이산 레이블의 경계 불명확성을 줄여 인간 평가와의 상관계수를 높입니다.
RAGAS
Es et al.(2023)이 개발한 RAGAS는 RAG(Retrieval-Augmented Generation) 시스템 전용 평가 프레임워크입니다. 검색과 생성이 분리된 파이프라인에서 어느 단계가 품질을 저하시키는지 분리해 측정합니다. 네 가지 핵심 지표를 제공합니다: Faithfulness(생성 답변이 검색된 컨텍스트에 충실한가), Answer Relevancy(답변이 질문과 관련 있는가), Context Recall(정답을 뒷받침하는 컨텍스트가 잘 검색됐는가), Context Precision(검색된 컨텍스트 중 관련 없는 내용의 비율).
| 지표 | 측정 대상 | 낮을 때 원인 | 개선 방향 |
|---|---|---|---|
| Faithfulness | 생성 답변 ↔ 컨텍스트 일치도 | LLM이 컨텍스트 무시, 환각 | 시스템 프롬프트 강화, 근거 인용 강제 |
| Answer Relevancy | 답변 ↔ 질문 관련성 | 답변이 지나치게 광범위하거나 핵심 이탈 | 응답 형식 지시, 핵심 질문 재확인 |
| Context Recall | 검색 결과 ↔ 정답 포함 여부 | 검색기 성능 부족, 청킹 전략 문제 | 청크 크기 조정, 검색 알고리즘 개선 |
| Context Precision | 검색 결과 중 관련 컨텍스트 비율 | 노이즈 문서 혼입 | 재순위(reranker) 도입, 필터링 강화 |
평가 지표 직접 설계하기
범용 프레임워크가 도메인에 맞지 않는 경우 지표를 직접 정의해야 합니다. 좋은 평가 지표의 조건은 세 가지입니다: 측정 가능성(LLM이 일관되게 판단할 수 있는가), 독립성(지표 간 중복이 적은가), 중요성(실제 제품 품질과 연결되는가).
지표 유형별 정의
평가 지표는 크게 참조 기반과 참조 없이 두 가지로 분류됩니다.
참조 기반(Reference-based): 정답(골든 답변)이 있을 때, 모델 출력이 정답과 얼마나 일치하는지 측정합니다. ROUGE, BERTScore 같은 전통적 지표나 LLM-as-judge로 의미적 유사도를 측정합니다. 정답이 명확한 사실 질의응답, 요약에 적합합니다.
참조 없이(Reference-free): 정답 없이 출력 자체의 품질을 측정합니다. 유창성, 충실도, 해로움 여부, 지시 따르기(Instruction Following) 등이 해당합니다. 정답이 다양한 창의 작업, 고객 응대, 코드 생성에 주로 씁니다.
# G-Eval 스타일 채점 프롬프트 예시
SCORING_PROMPT = """
당신은 AI 출력 품질을 평가하는 전문 채점자입니다.
[질문]
{question}
[AI 답변]
{answer}
[참조 컨텍스트]
{context}
아래 단계를 순서대로 수행하고 최종 점수를 1~5로 매기세요.
1. 답변이 질문의 핵심을 직접 다루는지 확인합니다.
2. 답변의 내용이 참조 컨텍스트에 근거하는지, 근거 없는 주장이 있는지 확인합니다.
3. 사실 오류나 논리적 모순이 있는지 확인합니다.
4. 위 세 항목을 종합해 1(매우 불량)~5(매우 우수) 점수를 결정합니다.
점수: [숫자만]
이유: [한 문장]
""골든셋 구축
골든셋(Golden Set)은 자동 평가의 기준이 되는 고품질 입력-출력 쌍 모음입니다. 골든셋의 품질이 평가 시스템 전체의 신뢰도를 결정합니다. 나쁜 골든셋으로는 아무리 좋은 채점 모델을 써도 의미 있는 측정을 할 수 없습니다.
골든셋 구성 원칙
좋은 골든셋은 다음 조건을 갖춰야 합니다. 첫째, 다양성: 쉬운 케이스만이 아니라 경계 케이스, 어려운 케이스, 실패가 예상되는 케이스를 포함해야 합니다. 둘째, 현실 반영: 프로덕션에서 실제로 들어오는 입력 분포를 반영해야 합니다. 인위적으로 만든 예제만 있으면 실제 운영과 평가 결과가 괴리됩니다. 셋째, 안정성: 골든셋은 가능한 한 바꾸지 않아야 합니다. 골든셋이 자주 바뀌면 점수 비교가 불가능해집니다.
초기 골든셋은 최소 50~200개 케이스로 시작하는 것이 현실적입니다. 프로덕션 로그에서 대표적인 케이스를 샘플링하고, 도메인 전문가가 정답 또는 품질 기준점을 직접 작성합니다. 이후 모델이 틀린 케이스, 사용자가 부정적 피드백을 준 케이스를 중심으로 점진적으로 확장합니다.
정답이 없는 경우의 골든셋
창의적 글쓰기나 고객 응대처럼 정답이 하나가 아닌 경우, 골든셋에 정답 대신 품질 루브릭(Rubric)을 함께 넣습니다. “이 질문에 대한 좋은 답변은 공감적 어조를 유지하면서 해결책을 구체적으로 제시해야 한다”처럼 기준을 서술하면, 채점 모델이 절대 정답 없이도 일관된 판단을 내릴 수 있습니다.
평가 파이프라인 구조
평가 파이프라인은 크게 데이터 준비 → 모델 실행 → 채점 → 집계 → 알림의 다섯 단계로 구성됩니다.
# 평가 파이프라인 개념 구조 (Python 의사 코드)
import asyncio
async def run_eval_pipeline(golden_set: list, model_fn, scorer_fn) -> dict:
# 1. 대상 모델 실행 (병렬)
outputs = await asyncio.gather(*[
model_fn(item["input"]) for item in golden_set
])
# 2. 채점 (병렬, 저비용 모델 사용)
scores = await asyncio.gather(*[
scorer_fn(
question=item["input"],
answer=output,
context=item.get("context", ""),
reference=item.get("reference", "")
)
for item, output in zip(golden_set, outputs)
])
# 3. 집계
avg_score = sum(s["score"] for s in scores) / len(scores)
fail_cases = [s for s in scores if s["score"] < 3]
return {
"avg_score": avg_score,
"pass_rate": 1 - len(fail_cases) / len(scores),
"fail_cases": fail_cases
}파이프라인을 CI/CD에 연결하면 모델 버전이나 프롬프트가 바뀔 때마다 자동으로 평가가 실행됩니다. GitHub Actions에서 PR 트리거로 평가를 돌리고, 평균 점수가 기준(예: 4.0/5.0) 아래로 떨어지면 PR 머지를 차단하는 식으로 품질 게이트를 구성할 수 있습니다.
채점 비용 줄이기 — 소형 모델 채점 전략
GPT-4o나 Claude Sonnet으로 채점하면 정확하지만 비용이 빠르게 쌓입니다. 일 수만 건의 출력을 평가해야 한다면 채점 비용 자체가 부담이 됩니다. 채점 비용을 줄이는 핵심 전략은 채점 모델의 다운그레이드입니다.
Claude Haiku, Gemini 1.5 Flash, GPT-4o mini 같은 소형 모델은 대형 모델 대비 비용이 수십 분의 1 수준이지만, 단순·명확한 평가 기준에서는 대형 모델과 판정 일치도가 충분히 높습니다. 실무 접근법은 대형 모델로 채점한 결과(소수)와 소형 모델로 채점한 결과(전체)의 상관계수를 측정해, 일치도가 0.85 이상이면 소형 모델로 채점 모델을 전환하는 것입니다.
| 채점 모델 | 비용 상대치 | 단순 지표 일치도 | 복잡 지표 일치도 | 권장 용도 |
|---|---|---|---|---|
| GPT-4o / Claude Sonnet | 기준(1×) | 매우 높음 | 높음 | 골든셋 라벨링, 최종 검증 |
| GPT-4o mini | ~1/10 | 높음 | 보통 | 일상 파이프라인 채점 |
| Claude Haiku | ~1/20 | 높음 | 보통 | 대량 배치 채점 |
| Gemini 1.5 Flash | ~1/15 | 높음 | 보통 | 대량 배치 채점, 빠른 처리 |
채점 모델을 바꾸면 점수 절대값이 달라집니다.
소형 모델로 채점 모델을 전환하면 같은 출력에 대해 점수 분포가 이동할 수 있습니다. 전환 시점에 과거 점수와 직접 비교하지 말고, 전환 후 기준점을 새로 설정하거나 샘플 비교로 보정값을 구해야 합니다. 채점 모델 버전도 평가 메타데이터에 함께 기록하는 것을 권장합니다.
회귀 탐지 자동화
회귀(Regression)는 모델 또는 프롬프트 변경 후 이전보다 품질이 떨어지는 현상입니다. 자동 평가 파이프라인의 가장 중요한 역할 중 하나가 바로 이 회귀를 신속하게 감지하는 것입니다.
통계적 유의성 검정
평균 점수가 소폭 낮아졌을 때, 이것이 진짜 회귀인지 아니면 측정 노이즈인지를 구분해야 합니다. 표본이 충분할 경우 t-검정(paired t-test)이나 Wilcoxon signed-rank test로 변화가 통계적으로 유의한지 판단합니다. p-값 0.05 이하일 때만 실제 회귀로 판정하는 기준을 설정하면 잘못된 알림(false positive)을 줄일 수 있습니다.
케이스별 회귀 분석
평균 점수만 보면 특정 하위 집합에서 발생한 심각한 회귀를 놓칠 수 있습니다. 예를 들어 전체 평균은 유지되면서 특정 도메인(법률·의료 관련 질문)에서만 점수가 급락하는 경우가 있습니다. 골든셋에 카테고리 태그를 붙이고 카테고리별 점수를 별도로 추적하면 이런 부분적 회귀를 조기에 잡을 수 있습니다.
- 모든 평가 결과를 타임스탬프·모델 버전·프롬프트 버전과 함께 DB에 저장
- 카테고리별 평균 점수를 시계열로 추적하고 이상 탐지 알림 설정
- 점수 하락 케이스는 자동으로 리뷰 큐에 적재해 사람이 확인
- 새 모델·프롬프트 배포 전 최소 50개 골든셋으로 사전 평가 통과를 배포 조건으로
- 채점 모델 자체의 드리프트도 주기적으로 검증 (API 업데이트로 채점 성향 변화 가능)
자주 묻는 질문
- LLM-as-judge가 기존 BLEU·ROUGE보다 나은가요?
- 대부분의 경우 그렇습니다. BLEU·ROUGE는 n-그램 단순 겹침을 보므로 의미적으로 동일하지만 표현이 다른 답변을 낮게 채점합니다. LLM-as-judge는 의미적 유사도를 파악하고 맥락을 고려하므로 인간 평가와의 상관계수가 더 높습니다. 다만 LLM-as-judge는 비용이 더 크고 채점 자체의 신뢰성 검증이 필요하다는 단점이 있습니다.
- 골든셋은 얼마나 많이 있어야 하나요?
- 도메인과 다양성에 따라 다르지만, 시작점으로 100~200개를 권장합니다. 통계적 검정을 위해서는 최소 50개 이상이 필요하며, 카테고리별 분석을 하려면 카테고리당 최소 20~30개가 있어야 의미 있는 비교가 가능합니다. 적은 수로 시작하고 지속적으로 확장하는 방식이 현실적입니다.
- RAGAS는 RAG가 아닌 일반 LLM에도 쓸 수 있나요?
- RAGAS의 Faithfulness·Answer Relevancy는 컨텍스트가 있다면 RAG 외 일반 LLM에도 적용 가능합니다. 다만 Context Recall·Context Precision은 검색 파이프라인을 전제로 설계된 지표이므로, RAG가 없는 시스템에서는 의미가 없습니다. 일반 LLM 평가에는 G-Eval 스타일의 지표 정의가 더 유연하게 맞습니다.
- 채점 프롬프트는 얼마나 자세하게 써야 하나요?
- 채점 단계를 명시적으로 나열하는 것이 점수 일관성에 도움이 됩니다. “좋은 답변에 높은 점수를 줘”처럼 모호한 지시보다, G-Eval처럼 판단 단계를 1·2·3으로 기술하면 채점 모델이 일관된 기준을 따릅니다. 단, 지나치게 길면 채점 속도와 비용이 불필요하게 늘어나므로 판단 단계는 3~5개로 제한하는 것이 균형점입니다.
- 채점 결과를 100% 믿어도 되나요?
- 아닙니다. 자동 평가는 보조 도구입니다. 채점 모델도 편향과 오류가 있으며, 골든셋이 완벽하지 않으면 평가 자체가 잘못된 방향을 가리킬 수 있습니다. 정기적으로 자동 채점 결과와 인간 평가 결과를 샘플 비교해 보정하고, 자동 평가가 감지한 회귀는 반드시 사람이 재확인하는 절차를 유지하는 것이 안전합니다.
채점 모델의 토큰 단가와 평가 지표 수치는 2026년 기준이며 변동이 잦으므로, 평가 파이프라인 구현 전 OpenAI 공식 문서의 Evals 가이드와 최신 가격을 확인하세요.
이 글은 G-Eval(Liu et al., 2023), RAGAS(Es et al., 2023), MT-Bench(Zheng et al., 2023) 논문과 OpenAI Evals 프레임워크, Anthropic 모델 평가 공식 문서를 바탕으로 작성했습니다. 평가 지표·프레임워크는 빠르게 발전하는 분야이므로 최신 연구와 각 프레임워크의 공식 문서를 함께 참고하시기 바랍니다.