[AI/ML] LLM as Judge를 통한 환각 제어 방법

LLM-as-Judge로 RAG 시스템의 환각을 탐지하되, Position Bias, Verbosity Bias 등 6가지 편향을 인식하고 Position Swapping, 다중 Judge 앙상블, 컨텍스트 직접 인용 등으로 평가 신뢰도를 높이는 실무 가이드입니다.

[AI/ML] LLM as Judge를 통한 환각 제어 방법
Photo by Sasun Bughdaryan / Unsplash

개요

LLM-as-Judge는 대규모 언어 모델을 평가자로 활용하여 다른 LLM의 출력을 자동으로 평가하는 방법론입니다. 인간 평가에 비해 확장성과 비용 효율성이 뛰어나지만, 다양한 편향(bias)으로 인해 신뢰도가 저하될 수 있습니다.

Faithfulness 평가는 RAG(Retrieval-Augmented Generation) 시스템에서 생성된 답변이 원본 컨텍스트에 충실한지 검증하는 핵심 지표입니다. Judge LLM은 주어진 컨텍스트 내에서 관련 근거를 직접 탐색하여, 답변이 컨텍스트에서 지원되는지(Supported), 모순되는지(Contradicted), 또는 판단할 정보가 부족한지(Not Enough Info)를 분류합니다.

이 문서는 매경AX의 생성형 AI 기반 오디오 팟캐스트 자동 생성 시스템 프로젝트에서 환각 탐지를 위한 LLM-as-Judge 구축 경험을 바탕으로 수행한 경험과 고도화할 내용들을 작성했습니다.

알려진 편향(Bias) 문제

LLM-as-Judge 수행도 사람이 평가하는 것처럼 다양한 편향으로 인해 정확도가 현저히 떨어질 수 있습니다. 편향을 경계하여 평가 정확도를 높히기 위해 논문을 통해 작성된 편향과 기술 블로그를 참고했습니다.

Position Bias

정의: LLM은 입력 순서에 따라 판단이 달라지는 편향입니다. 일반적으로 첫 번째 위치의 옵션을 선호하며, 동일한 입력의 순서만 바꿔도 약 40%의 불일치가 발생합니다.

영향: Faithfulness 평가에서 "Context → Claim" 순서로 제시하면 첫 번째 클레임에 대해 더 관대하게 SUPPORTED로 판정할 가능성이 높습니다. 실제 내용과 무관하게 순서에 의해 평가가 왜곡되는 심각한 문제입니다.

Verbosity Bias

정의: LLM은 긴 응답이나 상세한 설명에 더 높은 점수를 부여하는 편향입니다.

영향: 장황하게 서술된 답변이 실제 사실 관계와 무관하게 "Supported"로 분류될 가능성이 높습니다. 짧지만 정확한 답변보다 길고 그럴듯한 답변이 더 높은 평가를 받는 역설적 상황이 발생합니다.

Self-Enhancement Bias

정의: LLM은 자신이 생성한 출력을 선호하는 경향입니다. 연구에 따르면 GPT-4는 약 10%, Claude는 약 25%의 자기 선호 편향을 보입니다.

영향: 답변 생성 모델과 Judge 모델이 동일하면 객관적 평가가 불가능합니다. GPT-4가 생성한 답변을 GPT-4로 평가하면 실제보다 높은 점수가 나올 수 있습니다.

Authority Bias

정의: 인용, 참조, 출처 표시 등 권위를 나타내는 형식적 요소 텍스트를 더 신뢰하는 편향입니다.

영향: "연구에 따르면...", "출처: ..." 같은 표현이 있으면 실제 내용의 정확성과 무관하게 Supported로 판정될 가능성이 높습니다. 형식적 요소가 실질적 판단을 왜곡합니다.

Agreeableness Bias

정의: LLM Judge가 제시된 출력을 거부하기보다 동조하는 긍정 편향입니다. 올바른 출력 식별(TPR ~96%)에는 뛰어나지만, 잘못된 출력 거부(TNR <25%)에는 현저히 취약합니다.

영향: LLM Judge가 오류, 허위 정보, 논리적 결함이 포함된 응답도 "Supported" 또는 "Correct"로 판정할 가능성이 높습니다. 특히 응답이 그럴듯하게 작성되었거나 자신감 있는 어조를 사용할 경우, 실제 정확성과 무관하게 긍정 판정 경향이 강화됩니다.

편향 및 환각 완화 기법

편향을 줄이고 LLM 평가 정확도를 높히기 위한 방법입니다.

호출 회수가 늘어나거나, 서로 다른 AI 모델 사용으로 인한 제약사항 등이 발생할 수 있습니다. 따라서 가장 적합한 방식을 확인하고 현재 상황에 맞는 방법론을 선택하는 것이 좋습니다.

Position Swapping

[개념]

  • Position Bias를 완화하는 가장 효과적인 방법
  • 입력 순서를 바꿔 두 번 평가한 후 일치 여부로 신뢰도 판단
  • 두 결과가 일치하면 신뢰, 불일치하면 불확실 케이스로 분류

[방법]

  • 첫 번째 평가: Context → Claim 순서로 제시
  • 두 번째 평가: Claim → Context 순서로 제시
  • 일치 시 해당 결과 채택, 불일치 시 "uncertain" 처리

[단점/문제]

  • API 호출 비용 2배 증가
  • 불일치 케이스(약 10-20%)에 대한 별도 처리 로직 필요
  • 일치율 80% 미만이면 프롬프트/Rubric 품질 문제 의심

다중 Judge 앙상블

[개념]

  • 단일 모델의 고유 편향(Verbosity, Authority, Agreeableness 등)을 상쇄
  • 3개 이상의 서로 다른 LLM으로 평가 후 다수결로 결정
  • 각 Judge에 Position Swapping 적용하여 신뢰도 확보

[방법]

  • 3개 이상 다른 LLM을 Judge로 사용
  • Position Swap 일치 결과만 투표에 포함
  • 2/3 이상 동의 시 채택, 미달 시 "uncertain"

[단점/문제]

  • API 호출 비용 3배 이상 증가 (Position Swap 포함 시 6배)
  • 모델 간 일치도(Cohen's Kappa)가 낮으면 uncertain 케이스 급증
  • 비용 절감을 위해 2단계 전략 필요 (저렴한 모델 → 고급 모델)

생성-평가 모델 분리

[개념]

  • Self-Enhancement Bias 방지 (자기 출력 선호 경향)
  • 답변 생성 모델과 다른 제조사의 모델을 Judge로 사용
  • GPT-4 약 10%, Claude 약 25%의 자기 선호 편향 존재

[방법]

  • 생성: Claude → 평가: GPT-4
  • 생성: GPT-4 → 평가: Claude
  • 생성: Llama → 평가: GPT-4 또는 Claude

[단점/문제]

  • 동일 제조사 내 다른 모델(GPT-4 → GPT-3.5)은 효과 제한적
  • 모델 간 평가 기준 차이로 일관성 저하 가능
  • 특정 도메인에서 모델별 성능 차이 존재

컨텍스트 직접 인용 강제

[개념]

  • Judge 환각 방지를 위해 판단 근거를 컨텍스트에서 직접 인용 요구
  • 인용 없이는 판단 불가하도록 프롬프트 설계
  • 인용된 내용만으로 판단하고 추론/외부 지식 사용 금지

[방법]

  • 프롬프트에 <quote> 태그로 인용 영역 명시 요구
  • 인용할 문장 없으면 "인용 가능한 관련 문장 없음" 명시
  • 인용 없는 판정은 PARSE_ERROR 처리

[단점/문제]

  • 출력 토큰 증가 (인용 포함)
  • 긴 컨텍스트에서 관련 문장 탐색에 실패할 수 있음
  • 인용 검증 로직(문자열 매칭) 추가 구현 필요

Chain-of-Verification (CoVe)

[개념]

  • 자기 검증을 통해 초기 판단 오류를 수정하는 패턴
  • 초기 분석 → 검증 질문 생성 → 자기 답변 → 최종 판정 4단계
  • 복잡한 케이스에서 판단 정확도 향상

[방법]

  • 초기 분석: 관련 문장 인용 + 초기 판단
  • 검증 질문: "컨텍스트에서 [사실]을 확인할 수 있는가?"
  • 자기 답변: 컨텍스트 재확인
  • 최종 판정: 검증 결과 반영하여 수정 또는 확정

[단점/문제]

  • 출력 토큰 2-3배 증가
  • 자기 검증도 틀릴 수 있음 (오류 증폭 가능)
  • 단순한 케이스에는 과도한 오버헤드

Self-Consistency

[개념]

  • 동일 입력에 대해 여러 번 평가하여 일관성 확인
  • 일관된 결과만 신뢰하고, 불일치 시 불확실로 처리
  • 경계 케이스에서 불안정한 판단 필터링

[방법]

  • 동일 입력에 3회 이상 평가 (temperature=0.1)
  • 2/3 이상 일치 시 채택, 미달 시 "uncertain"
  • Position Swapping 결합 시 6회 평가

[단점/문제]

  • API 호출 비용 3배 이상 증가
  • temperature=0.0 사용 시 의미 없음 (항상 동일 결과)
  • 본질적으로 모호한 케이스는 여전히 해결 불가

Temperature 설정

[개념]

  • 결정론적 출력을 위해 temperature=0.0 사용
  • 동일 입력에 동일 결과 보장하여 재현성 확보
  • 평가 작업은 창의성이 필요 없으므로 낮은 temperature 권장

[방법]

  • temperature=0.0, top_p=1.0 설정
  • max_tokens 충분히 설정 (최소 500)
  • API 지원 시 seed 파라미터도 고정

[단점/문제]

  • Self-Consistency와 함께 사용 불가 (temperature=0.0이면 항상 동일)
  • 일부 API는 temperature=0.0에서도 미세한 변동 존재
  • 모델 업데이트 시 결과 달라질 수 있음

Rubric/평가기준 설계

3-Class 분류 체계

클래스 의미 판정 기준
SUPPORTED 클레임이 컨텍스트에서 명시적으로 지원됨 모든 사실이 컨텍스트에 존재, 부분 지원은 해당 안 됨
CONTRADICTED 클레임이 컨텍스트와 직접 모순됨 숫자/날짜/이름 불일치 포함, 부분 모순도 해당
NOT_ENOUGH_INFO 판단할 정보가 컨텍스트에 없음 추론 필요 시 해당, 애매하면 보수적으로 선택

구현한 프로젝트에서는 SUPPORTED/CONTRADICTED 2-Class만 사용했습니다. NOT_ENOUGH_INFO 케이스는 CONTRADICTED로 처리하여 보수적으로 평가했습니다.

프로젝트 요구사항에 따라 2-Class 또는 3-Class를 선택할 수 있습니다.

상세 Rubric 설계 원칙

구체적인 판정 기준은 Judge의 일관성을 크게 향상시킵니다.

SUPPORTED 판정 조건:

  • 클레임의 모든 사실적 주장이 컨텍스트에 명시적으로 존재
  • 논리적 추론 없이 직접 확인 가능
  • 부분적으로만 지원되면 SUPPORTED가 아님

CONTRADICTED 판정 조건:

  • 클레임이 컨텍스트의 명시적 내용과 충돌
  • 부분적 모순도 CONTRADICTED로 분류
  • 숫자, 날짜, 이름 등의 불일치는 명확한 모순

NOT_ENOUGH_INFO 판정 조건:

  • 컨텍스트에 클레임 판단에 필요한 정보가 없음
  • 추론해야만 판단 가능한 경우
  • 애매한 경우 보수적으로 선택

Few-Shot 예시

연구에 따르면 1-shot 예시가 최적의 성능을 보입니다. 그 이상은 오히려 성능이 저하될 수 있습니다. 다만 Claude 모델의 모범 사례에 따르면 예시 사용 시 품질에 주의해야합니다.

잘못 된 예시를 설정한다면 그대로 따라할 수 있습니다. 예시의 품질이 중요합니다.

효과적인 예시 선정:

  • 경계 케이스 포함 (구어체 변환, 근사치 표현, 사실 연결 등)
  • 각 클래스별 명확한 예시
  • 판단 근거가 명시된 예시

SUPPORTED 예시

구어체 변환 (허용):

  • Context: "정부는 3시간에 걸친 회의를 진행했다"
  • Claim: "정부는 세 시간에 걸친 회의를 진행했습니다"
  • 판정: SUPPORTED (고유어 수사 변환은 올바른 구어체)

근사치 변환 (일반 수치):

  • Context: "전국 9,949,808가구가 혜택을 받는다"
  • Claim: "약 구백구십오만 가구가 혜택을 받습니다"
  • 판정: SUPPORTED (일반 수치의 근사치 변환은 허용)

사실의 논리적 재구성:

  • Context: "A사가 신제품을 출시했다. A사의 주가가 10% 상승했다"
  • Claim: "신제품 출시 후 A사 주가가 10% 상승했습니다"
  • 판정: SUPPORTED (기사 내 사실의 인과관계 재구성은 허용)

CONTRADICTED 예시

잘못된 구어체 변환:

  • Context: "2호선 지하철이 운행을 재개했다"
  • Claim: "두 호선 지하철이 운행을 재개했습니다"
  • 판정: CONTRADICTED (고유명사/식별번호는 한자어 수사 사용, "이호선"이 올바름)

금융 지표 근사치 변환 (금지):

  • Context: "한국은행이 기준금리를 0.25%p 인상했다"
  • Claim: "한국은행이 기준금리를 약 0.3%p 인상했습니다"
  • 판정: CONTRADICTED (금융 핵심 지표는 정확한 수치 유지 필수)

주관적 평가 추가:

  • Context: "매출이 1308억에서 3609억으로 증가했다"
  • Claim: "충격적인 실적으로, 매출이 세 배 가까이 급증했습니다"
  • 판정: CONTRADICTED ("충격적인"은 기사에 없는 주관적 평가)

NOT_ENOUGH_INFO 예시(가정)

부분 지원:

  • Context: "정부가 전기차 보조금 정책을 발표했다"
  • Claim: "정부가 전기차 보조금과 충전 인프라 확충 정책을 발표했습니다"
  • 판정: NOT_ENOUGH_INFO (충전 인프라 관련 내용은 컨텍스트에 없음)

컨텍스트에 명시되지 않은 정보 가정:

  • Context: "모든 임원이 긴급 회의에 참석했다"
  • Claim: "김 부장이 긴급 회의에 참석했습니다"
  • 판정: NOT_ENOUGH_INFO (김 부장이 임원인지 컨텍스트에 명시되지 않음)

전체 평가 파이프라인 정리

평가 흐름은 팟캐스트 대본 한 문장을 하나씩 평가를 수행합니다.

해당 문장이 주어진 기사(Context) 내에 존재하면 SUPPORTED, 아니라면 CONTRADICTED를 출력합니다. 이를 정리하면 다음과 같습니다.

전체 흐름

답변 → 클레임 분해 → 각 클레임 평가 (컨텍스트 인용) → 결과 집계 → 불확실성 처리

1단계: 클레임 분해 (Claim Extraction)

복잡한 답변을 atomic claim으로 분해하여 각각 평가하는 것이 정확도를 높입니다.

원자적 클레임 조건:

  • 하나의 사실적 주장만 포함
  • 독립적으로 검증 가능
  • 가능한 한 원문 표현 유지

2단계: 클레임별 평가

추출된 각 클레임에서 원본 컨텍스트를 추출하여 독립적으로 평가합니다.

3단계: 결과 집계

개별 클레임 평가 결과를 종합하여 전체 답변의 Faithfulness를 계산합니다.

집계 방식:

  • Faithfulness 점수 = SUPPORTED 클레임 수 / 전체 클레임 수
  • contradicted_contexts_count = CONTRADICTED가 1개 이상이면 True

환각 없는 운용을 위해 contradicted_contexts_count를 감지하여 재생성을 등록합니다.

{
  "evaluation": {
    "hallucination_metric": 0.0,
    "contradicted_contexts_count": 0,
    "total_contexts": 9,
    "details": [
      {
        "claim": "주장 내용",
        "verdict": "Supported",
        "reasoning": "판정 근거"
      }
    ]
  }
}

4단계: 불확실성 처리

Context 불일치나 낮은 신뢰도 케이스는 별도 처리가 필요합니다.

평가 결과를 기반으로 1회 재생성 합니다. 만약 재생성 → 평가하는 2차 평가에서도 문제가 발생하면 알림을 통해 사람이 개입하여 수정 가능하도록 Human-in-the-Loop 파이프라인을 구축했습니다.

Reference

관련 프로젝트

논문

  • Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena (Zheng et al., NeurIPS 2023): https://arxiv.org/abs/2306.05685
  • Justice or Prejudice? Quantifying Biases in LLM-as-a-Judge (Ye et al., ICLR 2025): https://arxiv.org/abs/2410.02736
  • Chain-of-Verification Reduces Hallucination in Large Language Models (Dhuliawala et al., ACL 2024)
  • SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection (Manakul et al., EMNLP 2023)
  • RAGAS: Automated Evaluation of Retrieval Augmented Generation (Es et al., 2023): https://arxiv.org/abs/2309.15217

프롬프트 가이드

평가 프레임워크

기타