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