"RAG 핵심 학습 (15/26) — 검색 품질 지표: Recall@K, MRR, NDCG, Hit Rate"

시리즈 전체 안내: 시리즈 목차

RAG 검색 평가는 한 숫자로 끝나지 않는다. 무엇을 잃고 무엇을 얻는지 지표별로 읽어야 한다.

Retrieval 시스템을 바꾸고 나면 가장 흔한 질문은 이것이다. "그래서 얼마나 좋아졌는데?" 이때 정확한 답을 하려면 지표의 의미를 구분해야 한다. Recall@K는 놓치지 않았는가를, MRR은 정답을 얼마나 앞에 놨는가를, NDCG는 관련도가 다른 여러 정답을 얼마나 잘 정렬했는가를 본다. 이번 글은 RAG 검색에서 자주 쓰는 핵심 지표를 직관과 식으로 정리한다.


0. Prerequisites

  • 14편 평가셋
  • 12편 hybrid search
  • 13편 reranker

1. 학습 목표

  1. Recall@K, Hit Rate, MRR, NDCG를 구분한다.
  2. 어떤 지표를 언제 우선해서 봐야 하는지 안다.
  3. retrieval metric과 generation metric의 역할 차이를 이해한다.
  4. 지표를 잘못 읽을 때 생기는 착시를 피한다.

2. 핵심 요약

Recall@K는 정답 문서가 top-K 안에 있는지를 보고, Hit Rate@K는 질의 단위로 한 번이라도 맞췄는지를 본다. MRR은 첫 정답이 얼마나 앞에 왔는지에 민감하고, NDCG는 관련도가 다른 여러 문서를 얼마나 잘 정렬했는지를 측정한다. RAG에서는 보통 retriever recall을 먼저 안정화하고, 그다음 reranker 이후 MRR/NDCG를 본다. 한 지표만 보면 착시가 생긴다. 예를 들어 recall만 높고 상위 정렬이 엉망이면 실제 답변 품질은 나쁠 수 있다.


3. 직관 — 같은 시스템도 지표별로 다르게 보인다

두 검색기 A, B가 있다고 하자.

  • A: 정답 문서를 top-20 안에는 자주 넣지만 1위는 잘 못 만든다.
  • B: 정답 문서를 top-5 안에 자주 올리지만, 가끔 아예 놓친다.

이 경우: - Recall@20은 A가 더 높을 수 있다. - MRR은 B가 더 높을 수 있다.

즉 지표는 "좋음/나쁨"이 아니라 어떤 종류의 좋음인가를 보여 준다.


4. 정의 — 핵심 검색 지표

지표 의미
Recall@K 정답 문서를 top-K 안에 얼마나 놓치지 않았는가
Hit Rate@K 질의 단위로 top-K 안에 최소 1개 정답이 있었는가
MRR 첫 정답의 순위가 얼마나 앞인가
NDCG@K 관련도가 다른 문서들을 top-K 안에서 얼마나 이상적으로 정렬했는가
Precision@K top-K 중 실제로 관련 문서 비율

5. 수식 — 지표를 간단히 풀어 보기

Recall@K:

$$\text{Recall@K} = \frac{\text{top-K 안에서 찾은 관련 문서 수}}{\text{전체 관련 문서 수}}$$

MRR:

$$\text{MRR} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{\text{rank of first relevant result}}$$

NDCG@K의 핵심:

$$\text{DCG@K} = \sum_{i=1}^{K} \frac{2^{rel_i}-1}{\log_2(i+1)}$$

NDCG는 실제 DCG를 이상적인 정렬의 DCG로 나눈 값이다. 즉 "얼마나 이상적 순서에 가까운가"를 본다.


6. 원리 워크스루 — 작은 예제로 직접 계산

6.1 한 질의에서의 MRR

정답 문서가 3위에 처음 등장했다면:

rank_first_relevant = 3
mrr_for_query = 1 / rank_first_relevant  # 0.333...

1위면 1.0, 2위면 0.5, 10위면 0.1이다. 그래서 MRR은 정답을 앞에 두는 능력을 잘 본다.

6.2 Recall@K 직관

relevant_docs = {"c03", "c08", "c11"}
top5 = ["c17", "c03", "c21", "c08", "c05"]

found = len(relevant_docs.intersection(top5))  # 2
recall_at_5 = found / len(relevant_docs)       # 2 / 3

6.3 언제 NDCG가 필요한가

문서가 모두 똑같이 중요한 게 아니라면 NDCG가 좋다. 예를 들어 법령 원문은 관련도 3, 블로그 해설은 관련도 1처럼 차등 라벨이 있을 수 있다.

자기 설명: Recall@K가 높은데도 실제 답변 품질이 나쁠 수 있는 이유를 한 문장으로 설명해 보라.


7. 변형과 사례

7.1 Recall@K — 회수 누락을 먼저 막을 때

무엇이 바뀌는가
정답을 top-K 안에 넣는지에 초점을 둔다.

왜 등장했는가
답 문서 자체를 못 가져오면 generation은 아무리 좋아도 실패하기 때문이다.

무엇이 가능해졌는가
retriever의 기본 회수 능력을 안정적으로 측정할 수 있다.

한계와 다음 단계
순서 정보가 약하다. reranker 품질은 별도로 봐야 한다.

7.2 MRR — 첫 정답의 순서를 볼 때

질문당 "가장 먼저 맞는 문서가 어디 있나"를 보는 데 강하다. QA형 RAG에서 매우 직관적인 지표다.

7.3 NDCG — 관련도 차등이 있을 때

정답이 하나가 아니고, 문서마다 중요도가 다를 때 유용하다. 검색 제품과 추천 시스템에서 널리 쓰이는 이유가 여기에 있다.


8. 한계와 실패 양상

8.1 지표 하나만 보면 착시가 생긴다

Recall만 높이면 top-K를 크게 늘려 쉽게 좋아 보일 수 있다. 하지만 실제 context budget은 한정되어 있다.

8.2 K 선택이 결과를 바꾼다

Recall@5와 Recall@50은 완전히 다른 이야기를 한다. 운영 파이프라인의 실제 top-K와 맞춰야 한다.

8.3 라벨 품질이 나쁘면 지표도 왜곡된다

어떤 문서를 "관련"로 볼지 정의가 흔들리면 MRR, NDCG도 의미가 없다. 그래서 14편의 golden dataset 설계가 선행돼야 했다.

8.4 다음 단계 — 숫자를 자동으로 추적해야 한다

지표를 한 번 계산해 보는 것만으로는 부족하다. 다음 16편에서는 실험 자동화와 대시보드화를 다룬다.


8.5 입문자가 자주 빠지는 함정 5선

# 함정 증상 빠른 점검
1 Recall 하나만 봄 상위 정렬 품질 간과 MRR/NDCG 병행
2 K를 너무 크게 잡음 체감과 동떨어진 점수 실제 운영 K와 일치
3 관련도 라벨이 모호함 지표 해석 불가 라벨링 기준서 작성
4 retrieval과 answer 품질 혼동 원인 분석 실패 단계별 대시보드 분리
5 평균값만 봄 극단 실패 질의 놓침 query별 분포 확인

9. 정리된 결론 — 보지 않고 답해 보라

Q1. Recall@K는 무엇을 재는가?

정답 정답 문서를 top-K 안에 놓치지 않고 가져왔는가를 잰다.
retrieval의 기본 회수 능력을 보기 위해서다.

Q2. MRR이 특히 유용한 상황은?

정답 첫 정답이 얼마나 앞에 있는지가 중요한 QA형 검색이다.
첫 관련 문서의 순위를 직접 반영하기 때문이다.

Q3. NDCG가 필요한 이유는?

정답 관련 문서들 사이에도 중요도 차이가 있을 수 있기 때문이다.
NDCG는 관련도 등급과 순서를 함께 평가한다.

Q4. 지표 하나만 보면 왜 위험한가?

정답 회수, 정렬, 실제 답변 품질이 서로 다른 차원이기 때문이다.
한 지표 최적화가 다른 품질을 숨길 수 있기 때문이다.


Cheat Sheet — 이 편의 식·정의 1페이지

- Recall@K = 찾은 관련 문서 / 전체 관련 문서 - MRR = 첫 관련 문서 순위의 역수 평균 - NDCG = DCG / IDCG

정의 - Hit Rate@K: top-K 안에 정답이 최소 1개 있는 질의 비율 - Precision@K: top-K 안 관련 문서 비율

최소 코드

mrr = sum(1 / first_rank[q] for q in queries) / len(queries)

언제 무엇을 | 상황 | 지표 | |---|---| | 기본 회수 능력 | Recall@K | | 상위 정렬 품질 | MRR | | 다중 정답 + 관련도 차등 | NDCG | | top-K 노이즈 수준 | Precision@K |


참고 자료

1차 자료

  • Manning, C. et al. Introduction to Information Retrieval.
  • Järvelin, K. and Kekäläinen, J. Cumulated Gain-based Evaluation of IR Techniques. 2002.

공식 docs

  • Weaviate evaluation docs
  • Elastic ranking evaluation docs

보조 자료

  • 사용자 노트 12장 평가, 13장 실험

다음 편으로 이어지는 흐름

이제 어떤 숫자를 봐야 하는지는 정리됐다. 다음 16편에서는 이 숫자들을 매 실험마다 자동으로 모으고 비교하는 LangSmith, Phoenix, MLflow 기반 실험 자동화를 다룬다.

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"