우와한 개발자

[RAG] RAG 평가 지표와 도구 — Faithfulness, Answer Relevancy / RAGAS, LangSmith

by 우와한개발자

AI

1. RAG 평가가 왜 중요한가

1) 일반 소프트웨어와의 차이

  • 일반적인 소프트웨어는 입력과 출력이 명확하다
  • LLM 기반 시스템은 같은 질문에도 매번 다른 답변이 나올 수 있다
  • "틀렸다"는 것을 사람이 직접 읽어보기 전까지 알기 어렵다

 

2) RAG의 두 가지 실패 지점

  • 검색 실패 : 질문과 관련된 청크를 제대로 가져오지 못하는 경우
  • 생성 실패 : 청크는 잘 가져왔지만 LLM이 엉뚱한 답변을 만들어내는 경우

 

3) 평가의 목적

  • 이 둘을 구분하지 않으면 어디서 문제가 생기는지 알 수 없다
  • 평가는 단순히 "잘 되나 안 되나"를 확인하는 게 아니라, 어느 단계에서 무엇이 문제인지 파악하기 위한 과정이다

 

2. 주요 평가 지표

1) Faithfulness (충실도)

  • 답변이 검색된 문서 내용에 근거하고 있는지를 측정한다
  • LLM이 문서에 없는 내용을 지어냈는지(hallucination)를 잡아내는 지표다

(1) 측정 방법

  • 답변에 포함된 각 주장이 검색된 청크에서 뒷받침되는지 확인

(2) 점수 해석

  • 점수 범위 : 0 ~ 1 (1에 가까울수록 문서에 충실)
  • 낮을 때 : LLM이 학습 데이터에서 끌어온 내용으로 답변을 채우고 있을 가능성이 높음

 

2) Answer Relevancy (답변 관련성)

  • 답변이 질문에 얼마나 직접적으로 대답하고 있는지를 측정한다
  • 문서에는 충실하지만 질문의 핵심을 비껴가는 답변을 잡아낸다

(1) 측정 방법

  • 답변으로부터 역으로 질문을 생성해서 원래 질문과 유사도를 비교

(2) 점수 해석

  • 점수 범위 : 0 ~ 1
  • 낮을 때 : 답변이 장황하거나 질문과 관계없는 내용을 포함하고 있음

 

3) Context Precision (컨텍스트 정밀도)

  • 검색된 청크 중에서 실제로 답변에 필요한 청크가 얼마나 되는지를 측정한다
  • 검색의 정확도를 나타낸다

(1) 측정 방법

  • 검색된 k개의 청크 중 관련 있는 청크의 비율

(2) 점수 해석

  • 낮을 때 : 불필요한 청크가 많이 섞여 들어와 LLM의 답변 품질을 떨어뜨림

 

4) Context Recall (컨텍스트 재현율)

  • 정답을 도출하는 데 필요한 정보가 검색된 청크 안에 얼마나 포함되어 있는지를 측정한다
  • 검색의 완전성을 나타낸다

(1) 측정 방법

  • 정답(ground truth)의 각 문장이 검색된 청크에서 뒷받침되는지 확인

(2) 점수 해석

  • 낮을 때 : 필요한 정보가 검색 단계에서 누락되고 있음. 청크 크기나 검색 방식을 재검토해야 함

 

5) 지표 요약

지표 평가 대상 무엇을 잡아내는가
Faithfulness 생성 문서에 없는 내용을 지어내는지 (hallucination)
Answer Relevancy 생성 질문의 핵심을 비껴가는 답변인지
Context Precision 검색 불필요한 청크가 섞여있는지
Context Recall 검색 필요한 정보가 누락됐는지

 

3. 평가 도구

1) RAGAS

  • RAG 평가를 위해 만들어진 전용 프레임워크
  • 정답 여부를 사람이 직접 하나씩 판단하지 않고, LLM을 평가자로 활용해 답변 품질을 자동으로 측정한다.
  • Answer Relevancy, Faithfulness, Context Precision, Context Recall 외에도 다양한 지표를 통해 질문, 검색된 문서, 생성된 답변이 얼마나 잘 연결되어 있는지 평가할 수 있다.
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision, context_recall
from datasets import Dataset

data = {
    "question": ["Streamlit이란?"],
    "answer": ["파이썬으로 웹 앱을 만드는 프레임워크입니다."],
    "contexts": [["Streamlit은 파이썬 기반 오픈소스 웹 프레임워크입니다."]],
    "ground_truth": ["Streamlit은 파이썬 코드만으로 웹 UI를 만들 수 있는 오픈소스 프레임워크입니다."]
}

dataset = Dataset.from_dict(data)

result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_precision, context_recall]
)

print(result)

https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/

 

List of available metrics - Ragas

Evaluation framework for your AI Application

docs.ragas.io

 

2) LangSmith

  • LangChain에서 만든 LLM 애플리케이션 모니터링/평가 도구
  • LangChain 파이프라인의 각 단계(청킹, 검색, 생성)를 추적(trace)할 수 있다
  • 실제 운영 중인 요청들을 모아 데이터셋으로 만들고 반복 평가 가능하다.
  • LangChain을 쓰고 있다면 추가 설정 없이 바로 연동된다.

 

3) TruLens

  • RAG 파이프라인 평가 및 추적 도구
  • RAG Triad(Context Relevance, Groundedness, Answer Relevance) 개념으로 평가
  • 평가 결과를 대시보드로 시각화해서 어느 단계가 약한지 한눈에 확인 가능하다.

 

4) DeepEval

  • LLM 애플리케이션 테스트 프레임워크. pytest처럼 사용할 수 있다
  • 평가를 코드 기반 테스트 케이스로 작성 → CI/CD에 통합 가능
  • Faithfulness, Relevancy 등 RAGAS와 유사한 지표 제공

 

5) 도구 비교

도구 특징 적합한 경우
RAGAS RAG 전용, 자동 평가 빠르게 핵심 지표 측정
LangSmith 파이프라인 추적/모니터링 LangChain 기반 운영 환경
TruLens 대시보드 시각화 어느 단계가 약한지 분석
DeepEval pytest 스타일 테스트 CI/CD 통합, 회귀 테스트

 

4. 검색 품질 개선 전략

1) Chunk Size 튜닝

  • 청크가 너무 크면 → 관련 없는 내용이 섞여 노이즈가 늘어남 (Context Precision 하락)
  • 청크가 너무 작으면 → 문맥이 잘려서 의미 파악이 어려움 (Context Recall 하락)
  • chunk_overlap을 적절히 설정해서 청크 경계에서 문맥이 끊기지 않도록 한다

 

2) Reranking

  • 1차로 벡터 검색을 통해 넉넉하게 청크를 가져온다 (예: top-20)
  • Reranker 모델로 질문과의 관련도를 재계산해 상위 k개만 추려서 LLM에 전달한다
  • Context Precision을 높이는 데 효과적이다

(1) 동작 방식

  • 벡터 검색(Bi-Encoder)은 질문과 문서를 각각 따로 벡터로 변환해서 거리를 비교한다 → "의미가 비슷한가"를 본다
  • Reranker(Cross-Encoder)는 질문과 문서를 한 쌍으로 묶어서 함께 비교한다 → "이 문서가 질문에 답이 되는가"를 본다'
  • 두 기준이 다르기 때문에 같은 후보군이라도 순위가 바뀔 수 있다

 

(2) 대표 도구

도구 설명
Cohere Rerank API 형태로 제공되는 대표적인 Reranker
BGE-Reranker 오픈소스 Cross-Encoder 기반 reranker
ColBERT 효율성과 정밀도를 절충한 검색 모델

 

 

3) Hybrid Search

  • 벡터 검색(의미 기반)와 키워드 검색(BM25, 어휘 기반)을 함께 사용한다
  • 벡터 검색은 의미가 비슷한 문장을 찾지만, 고유명사나 코드명 같은 정확한 키워드 매칭에는 약하다
  • 두 방식을 결합하면 Context Recall이 개선되는 경우가 많다

 

4) 전략 요약

문제 증상 의심되는 지표 개선 전략
답변에 불필요한 정보가 섞임 Context Precision 낮음 Chunk Size 축소, Reranking
필요한 정보를 놓침 Context Recall 낮음 Chunk Overlap 조정, Hybrid Search
문서에 없는 내용을 지어냄 Faithfulness 낮음 프롬프트에 "문서 기반으로만 답변" 명시, Context Precision 개선
질문과 무관한 답변 Answer Relevancy 낮음 프롬프트 개선, 답변 길이 제한

 

5. 정리

  • RAG는 검색과 생성 두 단계로 나뉘며, 각 단계를 따로 평가해야 문제 지점을 찾을 수 있다
  • Faithfulness, Answer Relevancy는 생성 단계, Context Precision, Context Recall은 검색 단계를 평가한다
  • RAGAS로 빠르게 지표를 측정하고, 필요에 따라 LangSmith/TruLens/DeepEval로 모니터링·테스트 체계를 갖춘다
  • 지표가 낮게 나오면 Chunk 튜닝, Reranking, Hybrid Search 같은 전략으로 검색 품질을 개선한다

블로그의 정보

우와한개발자 님의 블로그

우와한개발자

활동하기