RAGAS Faithfulness

RAGAS Faithfulness (정합성)

RAG 시스템의 답변을 평가할 때 가장 먼저 확인하는 것 중 하나가 '답변이 검색된 컨텍스트와 잘 맞는가'예요. 흔한 실패 사례가 모델이 근거에도 없는 내용을 지어내는 할루시네이션인데요, Ragas의 Faithfulness 메트릭이 바로 이 지점을 측정해 줘요. 답변이 컨텍스트에 근거해 사실적으로 일관된 정도를 0에서 1 사이 값으로 보여줘요.

출처: RAGAS Faithfulness

Faithfulness란

Faithfulness 메트릭은 responseretrieved context와 얼마나 사실적으로 일관된지(factually consistent) 측정해요. 점수 범위는 0에서 1이고, 값이 높을수록 일관성이 좋다는 뜻이에요. 답변의 모든 주장(claim)이 검색된 컨텍스트로 뒷받침될 수 있다면 그 답변은 faithful(정합적) 하다고 봐요.

계산은 세 단계로 이뤄져요. 1) 답변에 있는 모든 주장을 식별하고, 2) 각 주장이 검색된 컨텍스트에서 추론 가능한지 확인하며, 3) 아래 공식으로 점수를 계산해요.

[ \text{Faithfulness Score} = \frac{\text{Number of claims in the response supported by the retrieved context}}{\text{Total number of claims in the response}} ]

다시 말해, 답변 속 주장 가운데 컨텍스트로 뒷받침되는 주장의 비율이 바로 Faithfulness 점수예요. 예를 들어 답변의 주장 2개 중 1개만 컨텍스트로 지지된다면 점수는 0.5가 돼요.

사용 예시

Ragas의 컬렉션 기반(collection-based) API로 사용해 볼게요. 먼저 LLM을 설정하고, Faithfulness 메트릭을 만든 뒤 ascore로 평가해요.

from openai import AsyncOpenAI
from ragas.llms import llm_factory
from ragas.metrics.collections import Faithfulness

# Setup LLM
client = AsyncOpenAI()
llm = llm_factory("gpt-4o-mini", client=client)

이후 Faithfulness(llm=llm)처럼 메트릭을 만들고, user_inputretrieved_contexts(그리고 응답)를 넘겨 ascore를 호출하면 결과가 나와요. 연산이 비동기(async) 기반이라 await 키워드와 함께 쓰는 점을 기억하면 좋아요.

Legacy Metrics API

옛날 방식의 레거시 API도 남아 있어요. 단일 턴 평가에서는 SingleTurnSample을 만들고 single_turn_ascore로 점수를 매겨요. 새 프로젝트라면 위에서 본 컬렉션 기반 API를 권장하고, 이 레거시 API는 버전 0.4에서 deprecated, 버전 1.0에서 제거될 예정이에요.

더 알아보기