본문 바로가기
C.W.K.
Stream
Lesson 06 of 09 · published

무엇을 평가할까

~22 min · evals, scope, fundamentals

Level 0추측자
0 XP0/55 lessons0/10 achievements
0/150 XP to next level150 XP to go0% complete

LLM 출력의 8가지 품질 차원

‘이 출력이 좋은가?’라는 질문은 측정할 수 있는 작은 질문으로 나눠야 해. 사용 사례에 중요한 차원만 골라. 모든 차원을 한꺼번에 측정하려고 하지는 마.

  1. 정확성 — 답의 내용이 사실과 일치해? (QA, RAG, 코드에서 가장 중요해)
  2. 충실성 — 답이 제공된 맥락을 근거로 삼고 있어? (RAG에 해당해. 답이 맞지만 근거에 충실하지 않을 수도 있고, 근거에는 충실하지만 답이 틀릴 수도 있어)
  3. 관련성 — 사용자가 실제로 물은 내용에 답하고 있어?
  4. 완전성 — 사용자에게 필요한 내용을 모두 다뤘어, 아니면 도중에 빠뜨리거나 멈췄어?
  5. 일관성 — 답의 논리와 내용이 서로 모순되지 않아?
  6. 문체 / 어조 — 브랜드나 페르소나에 어울려? (흔히 생각하는 것보다 훨씬 중요해)
  7. 형식 준수 — JSON으로 파싱돼? 코드가 실행돼? 인용 형식이 올바르게 지켜졌어?
  8. 안전성 — 유해성, 편향, 개인정보 유출이 없고 탈옥 공격에도 안전해?

모든 것을 평가하려는 함정

흔히 저지르는 실수는 여덟 차원을 하나의 종합 점수로 합쳐 실제 신호를 가리는 거야. 정확성이 15% 떨어지고 일관성이 5% 오르면 종합 점수는 거의 움직이지 않을 수 있어. 그러면 회귀가 생긴 버전을 그대로 출시하게 돼. 차원별로 나눠 각각 추적하고, 대시보드에서만 종합해.

원칙: 과제에 가장 중요한 두세 가지 차원을 골라 정밀하게 측정해. 부족하다는 증거가 나올 때만 다른 차원을 추가해.

영역마다 평가 범위가 달라

번역 도구: 정확성 + 완전성 + 형식 준수. 문체는 사용자가 정하도록 해.

코드 도우미: 정확성 + 형식 준수 (코드가 실행돼?) + 안전성 (안전하지 않은 패턴이 없어?).

고객 지원 챗봇: 관련성 + 충실성 + 어조 + 안전성. 문서에 근거해 답한다면 정확성은 충실성과 함께 평가할 수 있어.

도구를 사용하는 코딩 에이전트: 도구 호출의 정확성 + 최종 결과의 정확성 + 비용 / 단계 수. 단일 호출 모델보다 내부 실행 과정을 살펴보는 화이트박스 평가가 더 중요해.

Code

다차원 평가 — 각 차원을 독립적으로 추적하기·python
from dataclasses import dataclass

@dataclass
class MultiDimensionalScore:
    correctness: float
    relevance: float
    completeness: float
    coherence: float
    style: float
    safety: float

    def passed(self, thresholds):
        """Each dimension must clear its own threshold; no averaging."""
        return all(
            getattr(self, dim) >= thresholds.get(dim, 0.7)
            for dim in ("correctness", "relevance", "completeness",
                       "coherence", "style", "safety")
        )

thresholds = {
    "correctness": 0.85,  # critical
    "safety": 0.99,       # near-zero tolerance
    "relevance": 0.8,
    "completeness": 0.7,
    "coherence": 0.7,
    "style": 0.6,         # nice to have
}
RAG 전용 — 충실성과 정확성 비교·python
# An answer can be correct (matches ground truth) but unfaithful
# (the LLM made it up; the retrieved docs did not support it).
# In RAG, unfaithfulness is the dangerous failure mode — it means
# your hallucination defenses are not working.
def faithfulness(answer, retrieved_docs, judge):
    prompt = f"""
Given retrieved context:
{retrieved_docs}

Answer:
{answer}

Is every factual claim in the answer supported by the context?
List unsupported claims if any.
"""
    return judge.complete(prompt)

External links

Exercise

출시할 기능 하나를 골라 8가지 품질 차원을 나열해. 각 차원의 중요도를 1점(무관)부터 5점(필수)까지 정한 뒤, 점수가 가장 높은 세 가지를 골라 각각 구체적인 평가 사례를 하나씩 써.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.