"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. 학습 목표
- Recall@K, Hit Rate, MRR, NDCG를 구분한다.
- 어떤 지표를 언제 우선해서 봐야 하는지 안다.
- retrieval metric과 generation metric의 역할 차이를 이해한다.
- 지표를 잘못 읽을 때 생기는 착시를 피한다.
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 기반 실험 자동화를 다룬다.
댓글
댓글 쓰기