데이터셋과 실험 결과(Datasets and Experiment Results)
데이터셋과 실험 결과(Datasets and Experiment Results)
AI 시스템을 평가할 때 우리는 보통 두 가지 주요 유형의 데이터를 다뤄요. 테스트에 쓸 평가 데이터셋과, 평가가 끝난 뒤 쌓이는 실험 결과죠. Ragas에서는 이 둘을 명확히 구분해서 관리해요. 각각이 무엇이고 어떻게 다루는지 이번에 살펴볼게요.
출처: 문서
본문
- 평가 데이터셋(Evaluation Datasets):
datasets디렉토리에 저장돼요. - 평가 결과(Evaluation Results):
experiments디렉토리에 저장돼요.
평가 데이터셋(Evaluation Datasets)
평가용 데이터셋은 다음을 포함해요:
- 입력(Inputs): 시스템이 처리할 입력 집합.
- 기대 출력(Expected outputs, 선택): 주어진 입력에 대해 시스템이 내야 하는 기대 출력 또는 응답.
- 메타데이터(Metadata, 선택): 데이터셋과 함께 저장할 수 있는 추가 정보.
예를 들어 RAG(Retrieval-Augmented Generation) 시스템에서는 query(시스템 입력), Grading notes(시스템 출력을 평가하기 위한 메모), query complexity 같은 메타데이터가 포함될 수 있어요.
메타데이터는 데이터셋을 다양한 기준으로 잘라 분석할 때 특히 유용해요. 예를 들어 복잡한 쿼리에서 시스템 성능이 어떤지, 단순한 쿼리에서는 어떤지, 혹은 서로 다른 언어를 어떻게 처리하는지 보고 싶을 수 있죠.
실험 결과(Experiment Results)
실험 결과는 다음을 포함해요:
- 데이터셋의 모든 속성.
- 평가된 시스템의 응답.
- 지표(Metrics)의 결과.
- 주어진 입력에 대한 시스템 트레이스를 가리키는 URI 같은 선택적 메타데이터.
예를 들어 RAG 시스템에서 결과에는 Query, Grading notes, Response, Accuracy score(지표), 시스템 트레이스 링크 등이 포함될 수 있어요.
Ragas에서 데이터셋 다루기
Ragas는 평가 데이터셋을 다루기 위한 Dataset 클래스를 제공해요. 사용 방법을 살펴볼게요.
데이터셋 만들기
from ragas import Dataset
# Create a new dataset
dataset = Dataset(name="my_evaluation", backend="local/csv", root_dir="./data")
# Add a sample to the dataset
dataset.append({
"id": "sample_1",
"query": "What is the capital of France?",
"expected_answer": "Paris",
"metadata": {"complexity": "simple", "language": "en"}
})
기존 데이터셋 불러오기
# Load an existing dataset
dataset = Dataset.load(
name="my_evaluation",
backend="local/csv",
root_dir="./data"
)
데이터셋 구조
Ragas의 데이터셋은 유연해서 평가에 필요한 어떤 필드든 담을 수 있어요. 흔한 필드는 다음과 같아요:
id: 각 샘플의 고유 식별자query또는input: AI 시스템에 대한 입력expected_output또는ground_truth: 기대 응답(가능한 경우)metadata: 샘플에 대한 추가 정보
데이터셋 생성 모범 사례(Best Practices)
-
대표 샘플(Representative Samples): 데이터셋이 AI 시스템이 실제로 만날 현실 세계 시나리오를 대표하도록 해요.
-
균형 잡힌 분포(Balanced Distribution): 서로 다른 난이도, 주제, 엣지 케이스에 걸쳐 샘플을 포함해요.
-
양보다 질(Quality Over Quantity): 질 낮은 샘플을 많이 두는 것보다, 잘 큐레이션된 고품질 샘플을 적게 두는 게 낫다는 말이에요.
-
메타데이터 풍부(Metadata Rich): 서로 다른 차원에서 성능을 분석할 수 있게 관련 메타데이터를 포함해요.
-
버전 관리(Version Control): 재현성을 보장하려면 시간에 따라 데이터셋의 변경 사항을 추적해요.
데이터셋 저장과 관리(Dataset Storage and Management)
로컬 저장(Local Storage)
로컬 개발과 작은 데이터셋에는 CSV 파일을 쓸 수 있어요:
dataset = Dataset(name="my_eval", backend="local/csv", root_dir="./datasets")
클라우드 저장(Cloud Storage)
더 큰 데이터셋이나 팀 협업에는 클라우드 백엔드를 고려해요:
# Google Drive (experimental)
dataset = Dataset(name="my_eval", backend="gdrive", root_dir="folder_id")
# Other backends can be added as needed
데이터셋 버전 관리(Dataset Versioning)
재현 가능한 실험을 위해 데이터셋 버전을 추적하세요:
# Include version in dataset name
dataset = Dataset(name="my_eval_v1.2", backend="local/csv", root_dir="./datasets")
평가 워크플로와의 통합(Integration with Evaluation Workflows)
데이터셋은 Ragas 평가 워크플로와 매끄럽게 통합돼요:
from ragas import experiment, Dataset
# Load your dataset
dataset = Dataset.load(name="my_evaluation", backend="local/csv", root_dir="./data")
# Define your experiment
@experiment()
async def my_experiment(row):
# Process the input through your AI system
response = await my_ai_system(row["query"])
# Return results for metric evaluation
return {
**row, # Include original data
"response": response,
"experiment_name": "baseline_v1"
}
# Run evaluation on the dataset
results = await my_experiment.arun(dataset)
이 통합 덕분에 테스트 데이터(데이터셋)와 평가 결과(실험)를 명확히 분리해서 유지할 수 있어요. 진행 상황을 추적하고 서로 다른 접근법을 비교하기가 한결 수월해지죠.