간단한 LLM 애플리케이션 평가하기(Evaluate a simple LLM application)

간단한 LLM 애플리케이션 평가하기(Evaluate a simple LLM application)

이 가이드는 ragas로 LLM 애플리케이션을 테스트하고 평가하는 간단한 워크플로를 보여줘요. AI 애플리케이션 구축과 평가에 대한 최소한의 지식만 있다고 가정해요. 가장 빠른 시작 방법은 quickstart 명령으로 프로젝트를 만들어 실제 코드를 실행해보는 거예요.

출처: 문서

본문

동작하는 예시를 얻고 싶다면 이런 개념을 실제로 보는 가장 빠른 방법은 quickstart 명령으로 프로젝트를 만드는 거예요:

uvx (권장) 먼저 Ragas 설치
uvx ragas quickstart rag_eval
cd rag_eval
uv sync
pip install ragas
ragas quickstart rag_eval
cd rag_eval
uv sync

이렇게 하면 샘플 코드가 포함된 완전한 프로젝트가 생성돼요. 생성된 코드에서 무슨 일이 일어나는지 이해하려면 이 가이드를 따라오세요. 시작해볼게요!

프로젝트 구조(Project Structure)

생성되는 내용은 다음과 같아요:

rag_eval/
├── README.md             # Project documentation and setup instructions
├── pyproject.toml        # Project configuration for uv and pip
├── evals.py              # Your evaluation workflow
├── rag.py                # Your RAG/LLM application
├── __init__.py           # Makes this a Python package
└── evals/                # Evaluation artifacts
    ├── datasets/         # Test data files (optional)
    ├── experiments/      # Results from running evaluations (CSV files saved here)
    └── logs/             # Evaluation execution logs

집중해야 할 핵심 파일:

  • evals.py - 데이터셋 로딩과 평가 로직이 있는 평가 워크플로
  • rag.py - RAG/LLM 애플리케이션 코드 (쿼리 엔진, 검색 등)

코드 이해하기(Understanding the Code)

생성된 프로젝트의 evals.py 파일에서 주요 워크플로 패턴을 볼 수 있어요:

  1. 데이터셋 로드 - SingleTurnSample으로 테스트 케이스를 정의해요
  2. RAG 시스템 쿼리 - 애플리케이션에서 응답을 받아요
  3. 응답 평가 - 정답(ground truth)에 대해 응답을 검증해요
  4. 결과 표시 - 콘솔에 평가 요약을 보여줘요
  5. 결과 저장 - evals/experiments/ 디렉토리에 CSV로 자동 저장돼요

템플릿은 커스터마이즈할 수 있는 모듈형 함수를 제공해요:

from ragas.dataset_schema import SingleTurnSample
from ragas import EvaluationDataset

def load_dataset():
    """Load test dataset for evaluation."""
    data_samples = [
        SingleTurnSample(
            user_input="What is Ragas?",
            response="",  # Will be filled by querying RAG
            reference="Ragas is an evaluation framework for LLM applications",
            retrieved_contexts=[],
        ),
        # Add more test cases...
    ]
    return EvaluationDataset(samples=data_samples)

이를 지표와 더 정교한 평가 로직으로 확장할 수 있어요. Ragas에서의 평가에 대해 더 알아보세요.

LLM 제공자 선택하기(Choosing Your LLM Provider)

quickstart 프로젝트는 기본적으로 _init_clients() 함수에서 OpenAI LLM을 초기화해요. llm_factory를 통해 어떤 제공자로든 쉽게 바꿀 수 있어요:

OpenAI

OpenAI API 키를 설정해요:

export OPENAI_API_KEY="your-openai-key"

evals.py_init_clients() 함수에서:

from ragas.llms import llm_factory

llm = llm_factory("gpt-4o")

이것은 이미 quickstart 프로젝트에 설정되어 있어요!

Anthropic Claude

Anthropic API 키를 설정해요:

export ANTHROPIC_API_KEY="your-anthropic-key"

evals.py_init_clients() 함수에서:

from ragas.llms import llm_factory

llm = llm_factory("claude-3-5-sonnet-20241022", provider="anthropic")

Google Gemini

Google 자격 증명을 설정해요:

export GOOGLE_API_KEY="your-google-api-key"

evals.py_init_clients() 함수에서:

from ragas.llms import llm_factory

llm = llm_factory("gemini-1.5-pro", provider="google")

로컬 모델(Ollama)

Ollama를 로컬에 설치·실행한 뒤 evals.py_init_clients() 함수에서:

from ragas.llms import llm_factory

llm = llm_factory(
    "mistral",
    provider="ollama",
    base_url="http://localhost:11434"  # Default Ollama URL
)

커스텀 / 기타 제공자

OpenAI 호환 API를 가진 모든 LLM에 대해:

from ragas.llms import llm_factory

llm = llm_factory(
    "model-name",
    api_key="your-api-key",
    base_url="https://your-api-endpoint"
)

더 자세한 내용은 LLM 통합을 알아보세요.

사전 구축 지표 사용하기(Using Pre-Built Metrics)

ragas는 일반적인 평가 작업을 위한 사전 구축 지표를 제공해요. 예를 들어 Aspect CritiqueDiscreteMetric으로 출력의 어떤 측면이든 평가해요:

from ragas.metrics import DiscreteMetric
from ragas.llms import llm_factory

# Setup your evaluator LLM
evaluator_llm = llm_factory("gpt-4o")

# Create a custom aspect evaluator
metric = DiscreteMetric(
    name="summary_accuracy",
    allowed_values=["accurate", "inaccurate"],
    prompt="""Evaluate if the summary is accurate and captures key information.

Response: {response}

Answer with only 'accurate' or 'inaccurate'.""",
    llm=evaluator_llm
)

# Score your application's output
score = await metric.ascore(
    response="The summary of the text is..."
)
print(f"Score: {score.value}")  # 'accurate' or 'inaccurate'
print(f"Reason: {score.reason}")

이런 사전 구축 지표는 평가 로직을 처음부터 정의하는 수고를 덜어줘요. 이용 가능한 모든 지표를 탐색해보세요.

Info ragas에는 (reference가 있는 것과 없는 것 모두) 다른 많은 유형의 지표가 있고, 어느 것도 상황에 맞지 않으면 커스텀 지표를 만들 수도 있어요. 더 알아보려면 지표에 대해 더 보기를 확인하세요.

데이터셋으로 평가하기(Evaluating on a Dataset)

quickstart 프로젝트의 load_dataset() 함수에서 여러 샘플로 테스트 데이터를 만드는 걸 볼 수 있어요:

from ragas import Dataset

# Create a dataset with multiple test samples
dataset = Dataset(
    name="test_dataset",
    backend="local/csv",  # Can also use JSONL, Google Drive, or in-memory
    root_dir=".",
)

# Add samples to the dataset
data_samples = [
    {
        "user_input": "What is ragas?",
        "response": "Ragas is an evaluation framework...",
        "expected": "Ragas provides objective metrics..."
    },
    {
        "user_input": "How do metrics work?",
        "response": "Metrics score your application...",
        "expected": "Metrics evaluate performance..."
    },
]

for sample in data_samples:
    dataset.append(sample)

# Save to disk
dataset.save()

이렇게 하면 한 번에 하나의 예시를 평가하는 대신 여러 테스트 케이스를 얻을 수 있어요. 데이터셋과 실험에 대해 더 알아보세요.

생성된 프로젝트에는 evals/datasets/ 폴더에 샘플 데이터가 포함되어 있어요. 그 파일들을 편집해 테스트 케이스를 더 추가할 수 있어요.

evals로 AI 애플리케이션 개선을 도와드려요

지난 2년 동안 우리는 evals를 사용해 많은 AI 애플리케이션을 보고 또 개선을 도왔어요. 이 지식을 제품으로 압축해 vibe check 대신 eval 루프로 바꾸고, 여러분이 훌륭한 AI 애플리케이션을 만드는 데 집중할 수 있게 하려고 해요. evals를 사용한 AI 애플리케이션 개선과 확장에 도움이 필요하면 🔗 슬롯 예약 또는 [email protected]으로 연락 주세요.

다음 단계(Up Next)

더 알아보기 (Learn more)