relari-ai/continuous-eval

Data-Driven Evaluation for LLM-Powered Applications

continuous-eval – LLM 기반 앱을 위한 데이터 기반 평가

무엇인가요continuous-eval은 Python 라이브러리(파이피에 존재)로, 생성형 AI 파이프라인의 각 구성 요소의 성능을 측정할 수 있게 해줍니다. 일반적인 LLM 사용 사례(검색, RAG, 코드 생성, 도구 사용 에이전트, 분류 등)를 위한 미리 준비된 메트릭 카탈로그와 데이터셋에 이러한 메트릭을 연결하고 자동 테스트를 실행할 수 있는 작은 프레임워크를 제공합니다.

왜 중요한가요 – 프로덕션 수준의 LLM 애플리케이션을 구축할 때 일반적으로 여러 단계(리트리버 → 리랭커 → 생성기, 분류기 등)를 거칩니다. 기존 평가 도구는 단일 엔드투엔드 스코어에 초점을 맞추기 때문에 어느 모듈이 성능 저하를 겪고 있는지 파악하기 어렵습니다. continuous-eval은 파이프라인을 모듈의 그래프로 간주하고, 각 노드에 맞춤형 메트릭을 연결할 수 있으며, 확률적 또는 LLM-as-a-judge 메트릭도 지원합니다.


핵심 개념

개념 설명
메트릭 라이브러리 PrecisionRecallF1, RankedRetrievalMetrics, AnswerCorrectness와 같은 즉시 사용 가능한 클래스. 결정론적, 의미적, LLM 기반 스코어링을 모두 커버합니다.
EvaluationRunner 데이터셋에서 모든 메트릭을 실행하고 결과를 집계하며, 사용자 정의 테스트 (예: "리콜은 ≥ 0.8이어야 함")를 실행할 수 있습니다.
파이프라인 / 모듈 시스템의 각 단계를 Module (이름, 입력, 출력 유형)로 선언하고, 그 출력에 적용할 메트릭을 연결합니다. Pipeline은 모듈 목록과 소스 Dataset으로 구성됩니다.
CustomMetric "LLM-as-a-judge" 메트릭을 만들기 위한 헬퍼. 프롬프트(기준 + 루브릭)와 예상 응답의 스키마를 제공한 후, 다른 메트릭과 마찬가지로 호출할 수 있습니다.
테레메트리 선택적 익명 사용 추적으로, CONTINUOUS_EVAL_DO_NOT_TRACK=true로 비활성화할 수 있습니다.

일반적인 워크플로우 (README에 그림으로 설명됨)

  1. 설치 pip install continuous-eval (또는 리포지토리 복제 후 Poetry 사용).
  2. 데이터 준비 example_data_downloader로 예제를 다운로드하거나, question, retrieved_context, ground_truth_context, answer 등 필드를 포함하는 JSON-lines를 직접 제공.
  3. 파이프라인 정의 각 단계에 대해 Module 객체를 생성하고 .use(...)를 통해 적절한 메트릭 객체를 연결.
  4. 평가 실행 EvaluationRunner(pipeline)를 인스턴스화하고 evaluate()를 호출합니다. 러너는 PipelineResults 객체를 반환하며, 집계 및 출력이 가능합니다.
  5. 테스트 실행 Test 객체 목록(예: GreaterOrEqualThan)을 제공하여 자동으로 리그레션을 탐지.
  6. 확장 내장 카탈로그가 충족하지 못하는 경우 CustomMetric의 서브클래스를 작성하거나 새 메트릭 클래스를 구현.

예시 스니펫 (단일 메트릭)

from continuous_eval.metrics.retrieval import PrecisionRecallF1

datum = {
    "question": "What is the capital of France?",
    "retrieved_context": [
        "Paris is the capital of France and its largest city.",
        "Lyon is a major city in France."
    ],
    "ground_truth_context": ["Paris is the capital of France."],
    "answer": "Paris",
    "ground_truths": ["Paris"],
}

metric = PrecisionRecallF1()
print(metric(**datum))   # → {'context_precision': ..., 'context_recall': ..., 'context_f1': ...}

언제 사용할까?

  • 검색 품질, 리랭킹 효과, 생성 정확성에 대해 별도의 점수를 필요로 하는 RAG 시스템 개발자.
  • 새로운 모델이나 프롬프트 배포 전 자동 리그레션 체크(테스트)를 원하는 LLM 제품 팀.
  • 여러 LLM 기반 모듈을 평가하고 재현 가능하며 모듈화된 벤치마크 세트를 필요로 하는 연구자.
  • PII 탐지, 사실성 등과 같은 맞춤형 LLM-as-a-judge 메트릭을 전체 평가 허브를 작성하지 않고도 도입하고 싶은 기업.

빠르게 시작하기

# 라이브러리 설치
python3 -m pip install continuous-eval

# 예제와 문서를 위해 리포지토리 복제
git clone https://github.com/relari-ai/continuous-eval.git && cd continuous-eval
poetry install --all-extras   # 선택 사항, 모든 메트릭에 대한 추가 종속성 가져오기

# 내장 예제 실행 (검색 데이터셋)
python -m examples.run_retrieval_eval   # (README에 링크된 examples 리포지토리 참조)

LLM 기반 메트릭을 사용할 계획이라면 .env 파일에 적어도 하나의 LLM API 키를 설정하세요.


확장성 및 커뮤니티

  • 커스텀 메트릭CustomMetric 클래스를 사용하거나 BaseMetric를 상속하여, 자체 LLM 엔드포인트 호출을 포함한 어떤 스코어링 로직도 추가 가능.
  • 오픈소스 – Apache 2.0 라이선스, 기여 가이드 제공, 지원을 위한 디스코드 커뮤니티 존재.
  • 문서 – 전체 API 참조 및 튜토리얼은 https://continuous-eval.docs.relari.ai/ 에서 확인 가능.

라이선스

Apache 2.0 (리포지토리의 LICENSE 파일 참조).

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트