LangTailor

Lesson

RAG 검색 평가지표와 알고리즘

추천·검색·RAG 시스템이 얼마나 잘 찾아내는지를 숫자로 재는 방법과, 검색 자체를 수행하는 대표 알고리즘을 정리합니다.

6개 주제

01

히트 레이트 (Hit Rate / Hit Rate@K)

상위 K개의 추천 또는 검색 결과 리스트 안에 정답(사용자가 원하는 문서나 아이템)이 포함되어 있는지 여부(0 또는 1)를 측정한다. 찾고자 하는 정보가 결과에 아예 들어왔는지를 확인하는 가장 기본적인 적중 여부 판단 지표다.

쿼리 A — 상위 3개 안에 정답 있음

1
2
3
4
5
Hit Rate@3 = 1

쿼리 B — 상위 3개 안에 정답 없음

1
2
3
4
5
Hit Rate@3 = 0
  • 상위 K개 안에 정답 문서가 하나라도 있으면 1, 없으면 0
  • 여러 쿼리에 대해 평균을 내면 전체 시스템의 '적중률'이 된다
  • 정답이 몇 번째 순위인지는 신경 쓰지 않고 포함 여부만 본다
02

MRR (Mean Reciprocal Rank)

첫 번째로 등장하는 정답이 몇 번째 순위에 위치하는지의 역수(1/rank)를 구한 뒤, 이를 전체 쿼리에 대해 평균을 낸 값이다. 정답이 얼마나 상위 순위에 빠르게 노출되는지 평가하며, 상단에 배치될수록 점수가 높아진다.

11/11.00
21/20.50
31/30.33
41/40.25
51/50.20
  • 정답이 1위면 1점, 2위면 0.5점, 3위면 0.33점 — 순위가 낮아질수록 점수가 급격히 준다
  • 여러 쿼리의 역수 점수를 평균 내 하나의 지표로 요약한다
  • 챗봇 첫 답변처럼 '가장 위에 뜨는 것'이 중요한 서비스에 적합하다
03

Precision@K / Recall@K

Precision@K는 상위 K개 결과 중 실제 정답의 비율, Recall@K는 전체 정답 중 상위 K개에 포함된 비율이다. 정밀도는 '결과가 얼마나 정확한지', 재현율은 '정답을 얼마나 빠짐없이 찾았는지'를 본다.

검색 결과
(상위 K개)
실제 정답
(전체)

Precision@K = 교집합 / 검색 결과(K)

Recall@K = 교집합 / 실제 정답(전체)

  • Precision@K = (상위 K개 중 정답 수) / K
  • Recall@K = (상위 K개 중 정답 수) / (전체 정답 수)
  • K를 늘리면 Recall은 오르기 쉽지만 Precision은 떨어지는 트레이드오프가 있다
04

NDCG (Normalized Discounted Cumulative Gain)

상위에 있는 정답일수록 더 큰 가중치를 주고, 순위가 내려갈수록 로그 함수로 가중치를 할인(discount)해 합산한 뒤, 이상적인 정렬(IDCG)로 정규화한 지표다. 정답이 여러 개이고 관련도 등급이 다를 때도 순위 품질을 정밀하게 평가한다.

1
2
3
4
5
6
순위가 내려갈수록 가중치가 로그로 할인된다
  • CG(Cumulative Gain): 관련도 점수를 단순히 합산한 값
  • DCG: 순위가 낮을수록 로그로 가중치를 깎아서 합산한 값
  • NDCG = DCG / IDCG(이상적으로 정렬됐을 때의 DCG) — 0~1 사이로 정규화된다
05

MAP (Mean Average Precision)

정답을 만날 때마다의 Precision@K를 구해 평균 낸 AP(Average Precision)를, 전체 쿼리에 대해 다시 평균한 값이다. 정답이 여러 개일 때 순위 전반의 정밀도를 종합적으로 반영한다.

한 쿼리의 정답이 1·3·4위에 있을 때:

1위 정답

1/1 = 1.00

3위 정답

2/3 = 0.67

4위 정답

3/4 = 0.75

AP = (1.00+0.67+0.75)/3 ≈ 0.81

  • AP: 정답을 하나 만날 때마다의 Precision을 구해 평균낸다
  • MAP: 여러 쿼리의 AP를 다시 평균 — 검색 시스템 전체 성능을 숫자 하나로 요약한다
  • 정보 검색 대회(TREC 등)와 추천 시스템 평가에서 널리 쓰이는 표준 지표다
06

검색 알고리즘 — BM25 vs 임베딩 기반 검색(Dense Retrieval)

BM25는 단어의 등장 빈도(TF-IDF 계열)를 기반으로 한 전통적 키워드 검색 알고리즘이고, 임베딩 기반 검색은 문장을 벡터로 변환해 의미적 유사도로 찾는다. RAG 시스템은 보통 이 둘을 하이브리드로 함께 쓴다.

BM25 (키워드 기반)

단어의 등장 빈도·희소성(TF-IDF 계열)으로 점수를 매긴다. 계산이 빠르고 결과를 해석하기 쉽지만, 같은 뜻이라도 단어가 다르면 놓친다.

Dense Retrieval (임베딩 기반)

문장을 벡터로 바꿔 의미적 유사도(코사인 유사도 등)로 찾는다. 동의어·바꿔 쓴 표현에 강하지만, 사전 학습된 임베딩 품질에 성능이 좌우된다.

하이브리드 검색 — BM25 점수와 임베딩 유사도 점수를 함께 합산해 재정렬(rerank)한다
  • BM25: 키워드 일치·희소성 기반 — 계산이 빠르고 결과 해석이 쉽다
  • Dense Retrieval(임베딩): 의미가 비슷하면 단어가 달라도 찾아낸다 — 동의어·paraphrase에 강하다
  • 하이브리드 검색: BM25 점수와 임베딩 유사도 점수를 함께 합산해 재정렬(rerank)한다