Home / RAG 평가 / RAGAS 프레임워크
Note

RAGAS 프레임워크

Faithfulness, Context Precision, Answer Relevancy 자동 평가

⏱ 35분 66 / 189

RAGAS 프레임워크

Faithfulness, Context Precision, Answer Relevancy 자동 평가

측정하지 않으면 개선할 수 없다

검색 품질 + 생성 품질 + 전체 품질 — 체계적 RAG 평가 프레임워크

RAGAS

SingleTurnSample · 클래스 메트릭 · Bedrock 연동

PART 6 · RAGAS

RAGAS

RAGAS(Retrieval Augmented Generation Assessment) — RAG 파이프라인을 자동 평가하는 오픈소스 프레임워크

RAGAS

LLM-as-Judge 패턴을 프레임워크로 포장 — 메트릭 6종을 코드 몇 줄로 실행합니다

  • 설치: pip install "ragas>=0.4,<0.5"
  • 단위: SingleTurnSample → EvaluationDataset
  • 메트릭: 클래스 인스턴스 — Faithfulness()
  • 평가자: Bedrock LLM 연동 가능
0.4.x API 필수

0.1.x 함수형 import(from ragas.metrics import faithfulness)는 0.4.x에서 아직 동작하지만 DeprecationWarning과 함께 v1.0 제거 예고 상태입니다 — 새 코드는 클래스 기반으로 쓰고, 신규 정본은 ragas.metrics.collections입니다.

PART 6 · RAGAS

RAGAS 메트릭 6종

정답(reference) 준비 여부가 결정하는 사용 가능 메트릭

takeaway

정답 준비가 어려우면 Faithfulness + Response Relevancy로 시작하고, 정답을 확보한 뒤 Context Recall까지 확장합니다.

PART 6 · RAGAS

데이터셋 구성과 평가 실행

SingleTurnSample로 케이스 구성, 클래스 메트릭으로 평가 실행

python
from ragas import evaluate, EvaluationDataset, SingleTurnSample
from ragas.metrics import Faithfulness, ResponseRelevancy, ContextPrecision

# ① 평가 케이스 — 질문·답변·검색 컨텍스트·정답 4필드를 하나로
sample = SingleTurnSample(
    user_input="예약금 환불 규정이 어떻게 되나요?",
    response="예약금은 이용일 3일 전까지 취소하면 전액 환불이 가능합니다.",
    retrieved_contexts=["예약금은 이용일 3일 전까지 취소하면 전액 환불됩니다."],
    reference="예약금은 이용일 3일 전까지 취소하시면 전액 환불이 가능합니다.",
)
# ② 샘플 모음 → 평가 데이터셋
dataset = EvaluationDataset(samples=[sample])

# ③ 평가 실행 — 메트릭은 클래스 인스턴스로 전달 (0.4.x)
results = evaluate(dataset=dataset,
                   metrics=[Faithfulness(), ResponseRelevancy(), ContextPrecision()])
print(results.to_pandas())  # ④ 샘플별 점수 DataFrame
  • SingleTurnSample — 평가 1건. user_input·response·retrieved_contexts·reference(선택)
  • EvaluationDataset — 샘플 모음. 카테고리별 5개씩 최소 30건 권장
  • Faithfulness() 등 메트릭 — 클래스 인스턴스로 전달. 0.1.x 소문자 import는 아직 동작하나 v1.0 제거 예고(경고 발생)
  • to_pandas() — 샘플별 점수 DataFrame. 점수 낮은 질문부터 원인 분석
PART 6 · RAGAS

RAGAS + Bedrock 연동

Bedrock의 Claude를 평가자로 — 외부 API 없이 AWS 환경에서 완결

핵심 포인트

ChatBedrockConverse
langchain-aws의 Bedrock 채팅 모델 — RAGAS 평가자로 사용
BedrockEmbeddings
Response Relevancy의 역질문 유사도 계산에 필요
llm= / embeddings=
LangChain 모델을 넘기면 RAGAS가 내부에서 자동 래핑
모델 분리
평가 모델은 생성 모델과 다르게 — 자기 평가 편향 방지

코드

python
from langchain_aws import ChatBedrockConverse, BedrockEmbeddings
from ragas import evaluate
from ragas.metrics import Faithfulness, ResponseRelevancy

# 평가자 LLM — Bedrock Claude를 채점자로 지정
evaluator_llm = ChatBedrockConverse(
    model_id="us.anthropic.claude-sonnet-4-6",
    region_name="us-east-1", temperature=0,
)
# 임베딩 — Response Relevancy 계산용 Titan 임베딩
evaluator_embeddings = BedrockEmbeddings(model_id="amazon.titan-embed-text-v2:0")

# evaluate에 전달 — LangChain 모델은 내부에서 자동 래핑
results = evaluate(dataset=dataset,
                   metrics=[Faithfulness(), ResponseRelevancy()],
                   llm=evaluator_llm, embeddings=evaluator_embeddings)
PART 6 · RAGAS

지표별 실행 코드

evaluate 한 벌은 그대로 — 축에 맞는 메트릭 인스턴스만 바꿔 끼운다

검색 축 — 정답 기반 3종
생성 축 — Faithfulness · Noise
전체 축 — Response Relevancy
takeaway

여섯 메트릭 전부 evaluate 한 벌에 인스턴스만 교체입니다 — 정답 없이 되는 Faithfulness · Response Relevancy로 시작해, 정답 확보 후 검색 축과 Noise Sensitivity로 확장합니다.

평가 없는 RAG는 추측 위에 서비스를 올리는 것입니다.

3축 메트릭으로 병목을 진단하고, LLM-as-Judge로 자동화하세요.