본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] LLM 평가를 위한 RAGAS와 G-Eval 프레임워크 활용 방법 2가지 및 차이점 분석

by Papa Martino V 2026. 4. 13.
728x90

RAGAS vs G-Eval
RAGAS vs G-Eval

LLM(대규모 언어 모델) 기반 서비스, 특히 RAG(검색 증강 생성) 시스템을 구축할 때 가장 어려운 지점은 "답변이 얼마나 정확한가?"를 정량적으로 평가하는 것입니다. 사람이 일일이 검수하는 것은 확장성이 없으며, 단순한 문자열 일치도(ROUGE, BLEU)는 모델의 의미적 이해도를 측정하지 못합니다. 본 가이드에서는 2026년 현재 업계 표준으로 자리 잡은 RAGASG-Eval 프레임워크를 활용하여 Python 환경에서 LLM 성능을 객관적으로 지표화하고 운영 병목을 해결하는 전문적인 방안을 제시합니다.


1. LLM-as-a-Judge: 정성적 답변을 정량적 수치로 해결

기존의 NLP 평가는 정답(Ground Truth)이 존재한다는 가정하에 수행되었습니다. 하지만 생성형 AI의 답변은 정답이 여러 개일 수 있고, 맥락에 따라 유동적입니다. 이를 해결하기 위해 등장한 개념이 'LLM-as-a-Judge'입니다. 즉, 더 강력한 성능을 가진 모델(예: GPT-4o, Claude 3.5 Sonnet)이 평가 대상 모델의 답변을 검사하는 방식입니다. RAGAS는 RAG 시스템의 구성 요소인 '검색(Retrieval)'과 '생성(Generation)'을 분리하여 촘촘하게 평가하며, G-Eval은 사용자가 정의한 특정 기준(Coherence, Relevance 등)에 따라 점수를 매기는 유연함을 제공합니다.

2. RAGAS vs G-Eval: 기술적 특징 및 4가지 차이점 비교

평가 목표와 시스템 아키텍처에 따른 프레임워크 선택 기준을 표로 정리했습니다.

비교 항목 RAGAS (RAG Assessment) G-Eval (Generative Evaluation)
핵심 평가 대상 RAG 파이프라인 (검색 및 생성 정합성) 범용 생성 문장 (품질 및 일관성)
주요 지표 (Metrics) Faithfulness, Answer Relevance, Context Precision Fluency, Coherence, Relevance (사용자 정의 가능)
참조 데이터 필수 여부 Context(문맥) 필수, Ground Truth 권장 기준(Rubric) 필수, Ground Truth 선택
평가 방식 수학적 확률 기반 점수화 Chain-of-Thought 기반 가중치 점수 산출
적합한 상황 지식 베이스 기반 챗봇 성능 최적화 요약, 창의적 글쓰기, 에이전트 논리 평가

3. 실무 고도화를 위한 7가지 LLM 평가 구현 예제 (Python)

실제 프로덕션 환경에서 RAGAS와 G-Eval을 연동하여 성능을 모니터링하기 위한 전문 코드입니다.

Example 1: RAGAS를 활용한 Faithfulness(충실도) 평가

생성된 답변이 제공된 문맥(Context)에만 근거하고 있는지 환각 유무를 해결하는 코드입니다.

from ragas import evaluate
from ragas.metrics import faithfulness
from datasets import Dataset

# 평가용 데이터셋 준비
data_samples = {
    'question': ['삼성전자의 2025년 영업이익은?'],
    'answer': ['2025년 영업이익은 약 50조 원으로 예상됩니다.'],
    'contexts': [['최근 보고서에 따르면 삼성전자의 2025년 예상 영업이익은 50조 원입니다.']],
}

dataset = Dataset.from_dict(data_samples)
score = evaluate(dataset, metrics=[faithfulness])
print(f"충실도 점수: {score['faithfulness']:.4f}")
        

Example 2: G-Eval 패턴의 Coherence(일관성) 평가 로직

사용자 정의 프롬프트(Rubric)를 사용하여 문장이 얼마나 논리적으로 이어지는지 해결하는 방법입니다.

# G-Eval은 내부적으로 CoT 프롬프트를 사용함
evaluation_steps = [
    "1. Read the input text carefully.",
    "2. Check if each sentence logically follows the previous one.",
    "3. Rate the coherence from 1 to 5 based on logical flow."
]

# 실제 구현 시에는 특정 프롬프트 템플릿에 이 단계들을 주입하여 LLM에 평가 요청
def g_eval_coherence(text):
    prompt = f"Steps: {evaluation_steps}\nText: {text}\nScore:"
    # llm_call(prompt) -> 결과 파싱
    return "Score: 4.5/5"
        

Example 3: Context Recall(문맥 재현율) 측정을 통한 검색 품질 해결

실제 정답에 필요한 정보가 검색된 문맥 내에 포함되어 있는지 확인하는 예제입니다.

from ragas.metrics import context_recall

# ground_truth가 포함된 데이터셋으로 검색 엔진의 성능을 평가
data_samples.update({'ground_truth': ['삼성전자의 2025년 예상 영업이익은 50조 원입니다.']})
dataset = Dataset.from_dict(data_samples)
score = evaluate(dataset, metrics=[context_recall])
print(f"검색 재현율: {score['context_recall']:.4f}")
        

Example 4: 평가용 합성 데이터(Synthetic Test Data) 생성 방법

평가할 데이터가 부족할 때 원본 문서로부터 질문-답변 쌍을 자동으로 생성하여 해결하는 기법입니다.

from ragas.testset.generator import TestsetGenerator
from ragas.testset.evolutions import simple, reasoning, multi_context

# 문서 로드 후 생성기 설정
generator = TestsetGenerator.with_openai()
testset = generator.generate_with_langchain_docs(
    documents, test_size=10, distributions={simple: 0.5, reasoning: 0.25, multi_context: 0.25}
)
testset.to_pandas().to_csv("test_cases.csv")
        

Example 5: LangChain과 RAGAS 실시간 모니터링 통합

서빙 파이프라인 중간에 평가 로직을 삽입하여 성능 저하 시 경고를 보내는 구조입니다.

def rag_pipeline_with_eval(query):
    context = retriever.get_relevant_documents(query)
    answer = qa_chain.run(input_documents=context, question=query)
    
    # 실시간 RAGAS 평가 수행 (샘플링)
    if random.random() < 0.1: # 10% 확률로 검사
        score = evaluate_on_the_fly(query, context, answer)
        log_to_grafana(score)
    
    return answer
        

Example 6: G-Eval 스타일의 다중 에이전트 상호 평가

두 개의 다른 모델이 서로의 답변을 비판하고 점수를 보정하는 고도화된 해결 전략입니다.

# 에이전트 A: 답변 생성 / 에이전트 B: 비판 및 점수 산출
critic_prompt = "Examine the following answer for factual consistency and assign a score based on provided context."
critic_response = llm_critic.invoke(f"{critic_prompt}\nContext: {context}\nAnswer: {answer}")
# 이 피드백을 통해 최종 점수를 확정
        

Example 7: 비용 최적화를 위한 경량 모델(SLM) 평가기 활용

GPT-4 같은 고비용 모델 대신 Llama-3-8B 등을 파인튜닝하여 평가 비용 문제를 해결하는 방식입니다.

from langchain_community.llms import Ollama

# 로컬에서 구동되는 Llama-3를 RAGAS 평가기로 설정
local_evaluator = Ollama(model="llama3")
# RAGAS evaluate 함수에 llm=local_evaluator 인자 전달
        

4. 결론: 데이터 기반의 지속 가능한 LLM 운영(LLMOps)

LLM 성능 평가는 이제 "느낌"의 영역이 아닌 "데이터"의 영역입니다. RAGAS를 통해 파이프라인의 각 단계(검색, 생성)를 정밀 진단하고, G-Eval을 통해 사용자 비즈니스에 특화된 품질 지표를 관리하십시오.

가장 권장되는 전략은 개발 단계에서 RAGAS를 통해 기반 체력을 다지고, 운영 단계에서 G-Eval을 통해 실제 고객 만족도와 직결되는 정성적 품질을 모니터링하는 하이브리드 접근 방식입니다. 이를 통해 2026년의 복잡한 AI 서비스 환경에서도 흔들리지 않는 신뢰성을 확보할 수 있습니다.

내용 출처 및 참고 문헌

  • Es, S., et al. (2023). "RAGAS: Automated Evaluation of Retrieval Augmented Generation". arXiv.
  • Liu, Y., et al. (2023). "G-Eval: NLG Evaluation using GPT-4 with Better Human Alignment". arXiv.
  • Ragas Documentation 
  • Explaining LLM-as-a-Judge: OpenAI Cookbook & Microsoft Research.
728x90