평가 유형

평가 유형 (Evaluation types)

이 페이지는 LangSmith에서 평가의 두 가지 측면을 다뤄요.

  1. 평가 유형: 언제, 왜 평가하는가. 배포 전 테스트용 오프라인 평가 유형(벤치마킹, 유닛 테스트, 회귀 테스트)과 프로덕션용 온라인 평가 유형(모니터링, 이상 감지).
  2. 평가기 구현: 어떻게 평가하는가. 사용 가능한 평가기 접근 방식(LLM-as-judge, 코드, 복합, 요약, 쌍별)과 설정 위치(UI 또는 SDK, 오프라인 또는 온라인).

두 측면을 모두 이해하면 배포 전에 기능을 검증하고 프로덕션에서 품질을 모니터링하는 포괄적인 평가 전략을 구축하는 데 도움이 돼요.

출처: 문서

본문

오프라인 평가 유형 (Offline evaluation types)

오프라인 평가는 배포 전에 큐레이션된 데이터셋으로 애플리케이션을 테스트합니다. 참조 출력이 있는 예시에서 평가를 실행함으로써 팀은 버전을 비교하고, 기능을 검증하며, 변경 사항을 사용자에게 노출하기 전에 확신을 쌓을 수 있어요.

오프라인 평가는 LangSmith SDK(Python 또는 TypeScript)를 사용해 클라이언트 측에서 실행하거나, 서버 측에서는 Playground를 통해 또는 데이터셋에 평가기를 바인딩하여 실행할 수 있습니다.

벤치마킹 (Benchmarking)

벤치마킹(Benchmarking) 은 큐레이션된 데이터셋에서 여러 애플리케이션 버전을 비교해 최고 성능을 식별합니다. 이 과정은 대표 입력의 데이터셋 생성, 성능 지표 정의, 각 버전 테스트로 이루어져요.

벤치마킹에는 골드 스탠더드 참조 출력이 있는 데이터셋 큐레이션과 잘 설계된 비교 지표가 필요합니다. 예시:

  • RAG Q&A 봇: 질문과 참조 답변의 데이터셋, 실제 답변과 참조 답변 간의 의미적 동등성을 확인하는 LLM-as-judge 평가기.
  • ReAct 에이전트: 사용자 요청과 참조 도구 호출의 데이터셋, 모든 예상 도구 호출이 이루어졌는지 검증하는 휴리스틱 평가기.

유닛 테스트 (Unit tests)

유닛 테스트(Unit tests) 는 개별 시스템 구성 요소의 정확성을 검증합니다. LLM 맥락에서 유닛 테스트는 종종 입력 또는 출력에 대한 규칙 기반 단언입니다 (예: LLM이 생성한 코드가 컴파일되는지, JSON이 성공적으로 로드되는지 검증). 기본 기능을 검증합니다.

유닛 테스트는 일반적으로 일관된 통과 결과를 기대하므로 CI 파이프라인에 적합해요. CI에서 실행할 때는 LLM API 호출과 관련 비용을 최소화하도록 캐싱을 구성하세요.

자세한 내용은 PytestVitest/Jest 페이지를 참고하세요.

회귀 테스트 (Regression tests)

회귀 테스트(Regression tests) 는 시간이 지남에 따라 애플리케이션 버전 간 성능 일관성을 측정합니다. 새 버전이 현재 버전이 올바르게 처리하는 사례에서 성능을 저하시키지 않고, 이상적으로는 기준선 대비 개선을 보여주는지 확인합니다. 이러한 테스트는 사용자 경험에 영향을 줄 것으로 예상되는 업데이트(예: 모델 또는 아키텍처 변경)를 할 때 일반적으로 실행됩니다.

LangSmith의 비교 보기는 기준선 대비 회귀(빨간색)와 개선(초록색)을 강조해 변경 사항을 빠르게 식별할 수 있게 해줍니다.

백테스팅 (Backtesting)

백테스팅(Backtesting) 은 과거 프로덕션 데이터에 대해 새 애플리케이션 버전을 평가합니다. 프로덕션 로그를 데이터셋으로 변환한 다음, 최신 버전이 이 예시들을 처리해 과거의 실제 사용자 입력에 대한 성능을 평가합니다.

이 접근 방식은 새 모델 릴리스 평가에 흔히 사용됩니다. 예를 들어 새 모델이 출시되면 가장 최근의 프로덕션 실행에서 테스트하고 결과를 실제 프로덕션 결과와 비교하세요.

쌍별 평가 (Pairwise evaluation)

쌍별 평가(Pairwise evaluation) 는 절대 점수를 부여하는 대신 상대적 품질을 결정하여 두 버전의 출력을 비교합니다. 일부 작업에서는 각 버전을 독립적으로 점수 매기는 것보다 "버전 A가 B보다 낫다"를 결정하는 것이 더 쉽습니다.

이 접근 방식은 주관적 작업에 대한 LLM-as-judge 평가에서 특히 유용합니다. 예를 들어 요약에서 "어느 요약이 더 명확하고 간결한가?"를 결정하는 것이 숫자로 명확성 점수를 매기는 것보다 종종 더 간단합니다.

쌍별 평가 실행 방법을 알아보세요.

온라인 평가 유형 (Online evaluation types)

온라인 평가는 프로덕션 애플리케이션 출력을 거의 실시간으로 평가합니다. 참조 출력 없이 이러한 평가는 문제 감지, 품질 추세 모니터링, 향후 오프라인 테스트에 정보를 제공하는 엣지 케이스 식별에 초점을 맞춥니다.

온라인 평가기는 일반적으로 서버 측에서 실행됩니다. LangSmith는 커스텀 LLM-as-judge 평가기와 코드 평가기를 지원합니다. LangChain Tuned Evaluators는 LangChain이 관리하는 특수 심사자(judge)를 제공합니다.

실시간 모니터링 (Real-time monitoring)

사용자가 시스템과 상호작용하는 동안 애플리케이션 품질을 지속적으로 모니터링합니다. 온라인 평가는 프로덕션 트래픽에서 자동으로 실행되어 각 상호작용에 대한 즉각적인 피드백을 제공합니다. 이를 통해 대규모 사용자에게 영향을 주기 전에 품질 저하, 비정상 패턴 또는 예기치 않은 동작을 감지할 수 있습니다.

이상 감지 (Anomaly detection)

예상 패턴에서 벗어나는 이상값과 엣지 케이스를 식별합니다. 온라인 평가기는 비정상적인 특성—매우 길거나 짧은 응답, 예기치 않은 오류율, 안전 검사에 실패한 출력—을 가진 실행을 플래그하여 인간 검토와 잠재적 오프라인 데이터셋 추가를 유도할 수 있습니다.

프로덕션 피드백 루프 (Production feedback loop)

프로덕션의 인사이트를 사용하여 오프라인 평가를 개선합니다. 온라인 평가는 큐레이션된 데이터셋에는 나타나지 않을 수 있는 실제 문제와 사용 패턴을 드러냅니다. 실패한 프로덕션 실행은 데이터셋 예시의 후보가 되어 프로덕션 경험이 지속적으로 테스트 범위를 개선하는 반복 사이클을 만듭니다.

평가기 구현 (Implement evaluators)

위의 평가 유형은 언제 평가할지를 설명합니다. LangSmith는 이러한 평가 유형 전반에서 작동하는 평가기를 어떻게 구현할지에 대한 여러 접근 방식을 제공합니다.

LLM-as-a-judge

프롬프트에 정의된 기준에 따라 출력을 점수 매기도록 LLM을 사용합니다. 이 접근 방식은 결정적 규칙으로 포착하기 어려운 톤, 명확성, 의미적 정확성 같은 주관적 품질에 잘 작동합니다.

일반적인 사용 사례에는 참조 출력에 대한 사실적 정확성 평가(오프라인) 또는 프로덕션 응답의 유해성 확인(온라인)이 포함됩니다. 예를 들어 RAG 시스템 벤치마킹은 LLM-as-judge 평가기를 사용해 생성된 답변과 참조 답변 간의 의미적 동등성을 확인할 수 있습니다.

LLM-as-a-judge 평가기 구성:

  • 프로그래매틱 오프라인 평가: SDK 사용
  • 데이터셋의 오프라인 평가: UI 사용
  • 프로덕션 트레이스의 온라인 평가: UI 사용

코드 평가기 (Code evaluators)

특정 조건을 확인하는 결정적 규칙 기반 함수를 작성합니다. 이 평가기는 검증 구조, 패턴 확인 또는 비즈니스 규칙 적용을 위한 커스텀 로직을 실행합니다.

코드 평가기는 유닛 테스트—생성된 코드가 컴파일되는지, JSON이 올바르게 파싱되는지, 필수 필드가 있는지 검증—에 특히 유용합니다. 회귀 테스트에서는 구조화된 출력의 일관성을 추적할 수 있습니다. 온라인 모니터링에서는 형식 위반을 실시간으로 포착합니다.

코드 평가기 정의:

  • 데이터셋의 오프라인 평가: UI 사용
  • 프로그래매틱 오프라인 평가: SDK 사용
  • 프로덕션 트레이스의 온라인 평가: UI 사용

복합 평가기 (Composite evaluators)

가중 평균이나 합을 사용해 여러 평가기 점수를 단일 지표로 결합합니다. 이렇게 하면 여러 평가 기준을 동시에 반영하는 종합 품질 점수가 생성됩니다.

벤치마킹에서 복합 점수는 여러 차원의 버전 비교에 도움을 줍니다 (예: 정확도 70% + 명확성 20% + 간결성 10%). 온라인 모니터링에서는 대시보드와 알림용 단일 지표를 제공합니다. 예를 들어 도움성, 정확성, 톤 점수의 가중 결합으로 전체 챗봇 품질을 추적하세요.

복합 평가기 설정:

  • 사전 정의된 집계로 오프라인 평가: UI 사용
  • 커스텀 집계 로직으로 오프라인 평가: SDK 사용
  • 프로덕션 트레이스의 온라인 평가: UI 사용

요약 평가기 (Summary evaluators)

개별 예시가 아닌 전체 실험에 걸쳐 지표를 계산합니다. 이 평가기는 데이터셋의 모든 출력을 받아 정밀도, 재현율, F1 점수 또는 분포 분석 같은 집계 통계를 계산합니다.

요약 평가기는 예시별 점수가 아닌 전반적 성능을 버전 간 비교하는 데이터셋 수준 지표가 필요할 때 벤치마킹에 필수적입니다. 전체 데이터셋 처리가 필요하기 때문에 오프라인 평가에서만 작동합니다.

요약 평가기 구현:

  • 오프라인 평가용 커스텀 집계 함수: SDK 사용

쌍별 평가기 (Pairwise evaluators)

두 버전의 출력을 비교해 상대적 품질을 결정합니다. 절대 점수 매기기가 어렵지만 "어느 것이 더 나은지" 결정이 간단할 때 유용한 이 접근 방식은 앞서 쌍별 평가에서 다뤘습니다.

쌍별 평가 실행:

더 알아보기 (Learn more)