본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 10. 17:16

LLM Judge를 활용한 LLM의 법률적 추론(Legal Reasoning) 평가하기

요약

LLM의 법률적 추론 능력을 평가하기 위해 IRAC(쟁점, 규칙, 적용, 결론) 구조를 활용한 LLM-as-a-judge 프레임워크를 소개합니다. 단순 결과의 정답 여부를 넘어, 추론 과정의 타당성을 정확성과 분석이라는 두 가지 차원에서 정밀하게 검증하는 방법을 다룹니다.

핵심 포인트

  • 단순 판결 결과보다 추론 과정(Reasoning) 평가가 중요함
  • IRAC(Issue, Rule, Application, Conclusion) 구조를 평가 골격으로 활용
  • 정확성(Correctness)과 분석(Analysis)의 두 가지 차원으로 루브릭 구성
  • LLM-as-a-judge를 통해 대규모 추론 데이터의 자동화된 평가 가능

법률 NLP (Natural Language Processing) 작업에서 LLM (Large Language Model)을 평가할 때, 판결(verdict)을 내리는 것은 쉬운 부분입니다. 모델은 아무것도 이해하지 못한 채로도 절반의 확률로 '보장됨(covered)' 또는 '보장되지 않음(not covered)'을 맞출 수 있습니다. 더 어려운 질문은 판결을 도출한 추론(reasoning)이 실제로 타당한가 하는 점입니다. 왜냐하면 정답 레이블(label)은 그 뒤에 숨겨진 망가진 사고 과정(chain of thought)을 기분 좋게 숨겨버릴 수 있기 때문입니다.

따라서 정답뿐만 아니라 설명(explanation)을 평가해야 합니다. 그리고 자유 형식의 텍스트 추론을 수동으로 채점하는 것은 확장성(scale)이 떨어지기 때문에, 그 작업을 두 번째 모델에게 맡깁니다. 여기 LegalBench의 '규칙 적용(rule-application)' 루브릭(rubric)을 기반으로 구축되어 평가 루프(eval loop)에 바로 투입할 수 있는 작은 LLM-as-a-judge(판사로서의 LLM)가 있습니다.

목차

  • IRAC 추론이란 무엇인가
  • 루브릭(Rubric): 두 가지 차원
  • 스키마(Schema)와 중요한 단 하나의 움직임
  • 실제 사례
  • 판사가 점수를 매기는 방법

IRAC 추론이란 무엇인가

법률 분석은 IRAC으로 알려진 4단계 골격을 따르는 경향이 있습니다 — 쟁점(Issue), 규칙(Rule), 적용(Application), 결론(Conclusion). 법적 질문을 명시하고, 이를 규율하는 규칙을 진술하며, 그 규칙을 구체적인 사실에 적용하여 결론에 도달하는 방식입니다. 중간의 두 단계가 핵심적인 비중을 차지합니다. 좋은 답변은 단순히 규칙을 읊고 판결을 발표하는 것이 아니라, 규칙에서 결론으로 이어지는 추론(inference)을 보여주어야 합니다.

보장 범위(coverage) 사례를 들어보겠습니다. 한 보험 정책은 전문 이사 업체에 의해 물품이 이동되는 동안 발생한 소지품의 손상을 보장합니다. 청구인의 가구가 이사 도중 트럭 사고로 파손되었습니다 — 하지만 이 이사는 전문 이사 업체가 고용된 것이 아니라, 호의로 도와주는 '은퇴한' 전문 이사였던 삼촌에 의해 진행되고 있었습니다.

IRAC을 통해 이 과정을 살펴보면 다음과 같이 추론됩니다:

  • 쟁점 (Issue) — 이 제거 조항이 이 손상을 보장하는가?
  • 규칙 (Rule) — 보장은 전문 이사 업체에 의해 물품이 이동되는 동안 손상되었을 때만 적용된다.
  • 적용 (Application) — 삼촌은 개인적으로 물품을 옮기고 있으며 전문 업체로서 행동하는 것이 아니므로, 보장을 발동시키는 조건이 충족되지 않는다.
  • 결론 (Conclusion) — 보장되지 않음.

이것이 바로 루브릭 (Rubric, 평가 기준)이 점수를 매기는 구조입니다. **정확성 (Correctness)**은 규칙 (Rule)과 사실 (Facts)이 정확하게 기술되었는지, 그리고 결론 (Conclusion)이 옳은지를 확인합니다. **분석 (Analysis)**은 특히 적용 (Application) 단계를 확인합니다. 즉, 추론 과정이 단순히 규칙을 재진술하고 판결로 건너뛰는 대신, 실제로 사실에서 규칙으로의 추론 (Inference)을 수행했는지를 따집니다. 이러한 적용 (Application) 단계 때문에 LegalBench에서는 이를 규칙-적용 (rule-application) 프레임워크라고 부릅니다.

루브릭 (Rubric): 두 가지 차원

평가자 (Judge)는 각 추론을 두 가지 축을 따라 점수를 매깁니다.

**정확성 (Correctness)**은 추론에 다섯 가지 특정 오류 유형이 없는지를 묻습니다: 규칙의 오기, 사실의 오기, 잘못된 결과의 주장, 논리적 오류, 또는 산술적 오류입니다. 이는 전부 아니면 전무 (All-or-nothing) 방식입니다. 어떤 종류든 단 하나의 오류라도 발생하면 해당 추론은 정확하지 않은 것으로 간주됩니다.

**분석 (Analysis)**은 더 미묘한 것을 묻습니다: 추론이 규칙에 따라 사실을 결론과 실제로 연결 (connect) 했는가, 아니면 단순히 규칙, 사실, 또는 판결을 재진술했을 뿐인가? 분석은 추론이 정확하면서 동시에 진정한 추론 (Inference)을 포함하고 있을 때만 인정됩니다.

시스템의 최종 수치는 전체 데이터셋에 대한 정확성 비율 (Correctness rate)과 분석 비율 (Analysis rate)의 평균입니다.

스키마 (Schema), 그리고 중요한 단 하나의 움직임

먼저, 모델이 출력해야 하는 내용을 정의합니다. 여기서 핵심은 평가자 (Judge)가 오직 원자적 신호 (Atomic signals) — 즉, 다섯 가지 오류 플래그 (Error flags)와 하나의 범주형 분석 레이블 (Categorical analysis label) — 만을 생성하도록 만들고, 그 후 Python에서 직접 correctnessanalysis를 도출하는 것입니다.

from typing import Literal
from pydantic import BaseModel, Field

...

모델에게 correctness (정확성)와 analysis (분석)를 직접적으로 요구하고 끝내고 싶은 유혹이 들 수 있습니다. 하지만 그렇게 하지 마십시오. 제약된 디코딩 (Constrained decoding)은 출력의 _형태 (shape)_를 보장할 뿐, 내부적인 일관성을 보장하지는 않습니다. 모델은 다섯 개의 0을 내놓으면서 동시에 correctness0이라고 말할 수도 있습니다. 원자적 필드 (atomic fields)로부터 두 가지 점수 변수를 도출하면, 구조적으로 그러한 모순이 불가능해집니다. Literal[0, 1] 플래그도 제 역할을 합니다. 이는 디코딩을 정확히 0 또는 1로 제한하므로, 엉뚱한 2와 같은 값을 정리할 필요가 없습니다.

실제 사례 (A Worked Example)

다음은 평가 대상 시스템이 받게 될 구체적인 주장입니다:

3월 14일 오전 8시 30분경, 저는 아우크스부르크(Augsburg)의 모차르트슈트라세(Mozartstrasse)에서 주차 구역으로부터 후진하여 나오던 중, 제 뒷 범퍼로 제 뒤에 주차된 차량을 긁었습니다. 상대 차량의 테일게이트(tailgate)는 움푹 들어갔고 후미등은 깨졌습니다. 차주가 나왔고 우리는 인적 사항을 교환했습니다. 그 이후 그의 차고(garage) 측에서 약 1,400유로의 수리 견적서를 보내왔으며, 그는 저에게 이를 지불할 것을 요구하고 있습니다.

관련 규정은 자동차 제3자 배상책임 포함 (motor third-party liability inclusion)입니다. 보험사는 피보험 차량의 사용으로 인해 발생한 제3자의 재물 손괴 청구에 대해 피보험자를 면책(indemnify)합니다.

IRAC 구조를 따르는 후보 추론 (candidate reasoning)은 다음과 같습니다:

쟁점 (Issue) — 제3자 배상책임 담보가 주차된 차량의 손상에 적용되는가?
규정 (Rule) — 피보험 차량의 사용을 통해 제3자의 재산이 손상되고 피보험자에 대해 배상 책임 청구가 제기된 경우 담보가 적용된다.
적용 (Application) — 피보험자는 차량을 사용 중이었으며 (주차 구역으로 진입 중), 제3자의 주차된 차량을 들이받아 테일게이트를 움푹 들어가게 하고 후미등을 깨뜨렸습니다. 차주는 현재 약 1,200유로의 수리비를 청구하고 있습니다. 세 가지 조건 — 차량 사용 중, 제3자의 재물 손괴, 배상 책임 청구 — 이 모두 충족되었습니다.
결론 (Conclusion) — 해당 청구는 제3자 배상책임 조항에 따라 담보됩니다.

판사(Judge)가 점수를 매기는 방법

추론은 올바른 판결(verdict)에 도달했고 적용(Application) 단계도 적절히 수행했지만, 두 가지 세부 사항에서 실수가 발생했습니다. 운전자는 주차 구역으로 '진입(pulling into)'하는 것이 아니라 '후진하여 나오고(reversing out)' 있었으며, 수리 청구 금액은 €1,200가 아닌 €1,400였습니다. 두 실수 모두 결과(outcome)를 바꾸지는 않지만, 각각은 오류이며 정확성(correctness)은 '전부 아니면 전무(all-or-nothing)' 방식입니다. 즉, 단 하나의 오류만으로도 전체가 무너집니다. 정확성이 0이 되면, 추론이 아무리 깔끔하게 구조화되었더라도 analysis_case는 `

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0