검색
← 모듈 로드맵

RAG 평가와 고급 패턴: 검색 지표 · 충실도 · GraphRAG · 에이전틱 RAG

강의 · 준전문가 · KAITABASE 정리

원제 · Evaluating RAG and Advanced Patterns

검색 · 생성 2층 평가, Ragas 지표, 7가지 실패 지점, Self-RAG · GraphRAG 등 고급 RAG 지도

먼저 알아야 할 것

recall@k · MRR · nDCGRAG 파이프라인 구성임베딩 코사인 유사도LLM 심판 평가

다루는 내용

RAG를 검색 품질과 생성 품질 두 층으로 나눠 평가하는 법을 다룹니다. recall@k · MRR · nDCG 복습과 Ragas의 충실도 · 답변 관련성 · 문맥 관련성 계산, LLM 심판의 편향, 실제 사례에서 정리된 7가지 실패 지점을 설명하고, Self-RAG · CRAG · RAPTOR · GraphRAG · 에이전틱 RAG가 겨냥하는 약점과 긴 문맥 vs RAG 선택 기준을 정리합니다.

해설

RAG 평가와 고급 패턴: 검색 지표 · 충실도 · GraphRAG · 에이전틱 RAG

RAG를 만들었다면 다음 질문은 "얼마나 잘 되나, 어디서 틀리나"입니다. RAG는 검색기와 생성기 두 부품 이 이어진 시스템이라, 답이 틀렸을 때 어느 쪽 탓인지 따로 재야 고칠 수 있습니다. 이 수업은 검색 지표(recall@k · MRR · nDCG), 생성 지표(충실도 · 답변 관련성 · 문맥 관련성), 실제 RAG에서 자주 보고되는 실패 유형을 정리한 뒤, 기본 RAG의 한계를 넘으려는 고급 패턴 — 스스로 검색을 판단하는 RAG, 교정 RAG, 트리 · 그래프 RAG, 에이전틱 RAG, 긴 문맥과의 비교 — 를 한 장의 지도로 묶습니다.

항목내용
참고 출처Ragas 문서 · Ragas 논문(arXiv 2309.15217) · RAG의 7가지 실패 지점(arXiv 2401.05856) · GraphRAG(arXiv 2404.16130) · Self-RAG(arXiv 2310.11511) · CRAG(arXiv 2401.15884) · RAPTOR(arXiv 2401.18059)
트랙 · 수준RAG·검색 · 중급
이 수업이 다루는 범위2단 평가 구조, 검색 지표 복습, Ragas의 세 지표와 계산법, LLM 심판의 한계, 7가지 실패 지점, Self-RAG · CRAG · RAPTOR · GraphRAG · 에이전틱 RAG, 긴 문맥 vs RAG

들어가기 전에

한눈에 보기

  • RAG 평가를 "검색 품질"과 "생성 품질" 두 층으로 나눠 설계할 수 있습니다.
  • 충실도 · 답변 관련성 · 문맥 관련성을 Ragas 방식대로 손으로 계산해 봅니다.
  • 실제 RAG 시스템 사례에서 보고된 7가지 실패 지점을 증상으로 구분합니다.
  • Self-RAG · CRAG · RAPTOR · GraphRAG · 에이전틱 RAG가 각각 기본 RAG의 어떤 약점을 겨냥하는지 압니다.
  • "긴 문맥에 다 넣기"와 RAG 사이의 선택 기준을 압니다.

1. 두 층으로 평가하기

mermaid
flowchart LR
  Q[평가 질문] --> R[검색기]
  R --> C[검색된 문맥]
  C --> G[생성기 LLM]
  G --> A[답변]
  C -.->|검색 지표<br/>recall@k · MRR · nDCG<br/>문맥 관련성| E1[검색 평가]
  A -.->|충실도: 답이 문맥에 근거했나| E2[생성 평가]
  Q -.->|답변 관련성: 질문에 맞는 답인가| E2

왜 나눠 재나. 최종 답만 보면 "틀렸다"는 것만 알 수 있습니다. 정답 문서가 애초에 검색되지 않았다면 프롬프트를 아무리 고쳐도 소용없고, 정답 문서가 들어갔는데 틀렸다면 검색을 고쳐도 소용없습니다. 두 층을 따로 재야 고칠 곳 이 보입니다.

2. 검색 지표 복습

검색 기초 에서 정의한 지표를 RAG 관점에서 다시 봅니다.

지표묻는 것RAG에서의 의미
recall@k정답 근거가 상위 k개 안에 있나LLM에 넘길 k개 안에 답이 들어 있을 확률
MRR첫 정답이 몇 위인가(역수 평균)정답이 앞쪽에 오는지
nDCG@k관련도 높은 것이 위에 오나(순위 할인)여러 근거가 필요한 질문에서 순서 품질

숫자로 해 보기(해설용). 상위 3개의 관련 여부가 (아님, 관련, 관련)이고 관련 문서가 전부 2개라면

  • DCG@3=0log⁡22+1log⁡23+1log⁡24=0+0.631+0.5=1.131\mathrm{DCG@3}=\frac{0}{\log_2 2}+\frac{1}{\log_2 3}+\frac{1}{\log_2 4}=0+0.631+0.5=1.131
  • 이상적 순서 (관련, 관련, 아님)의 IDCG@3=1+0.631=1.631\mathrm{IDCG@3}=1+0.631=1.631
  • nDCG@3=1.131/1.631≈0.693\mathrm{nDCG@3}=1.131/1.631\approx0.693

recall@3은 1.0(둘 다 들어옴)이지만 nDCG는 0.693입니다. "다 찾았지만 맨 위가 틀렸다"는 차이를 nDCG가 잡아냅니다.

정답 근거 표시가 없으면? 평가 세트를 만들 때 질문마다 정답 청크를 사람이 표시하는 것이 가장 정확합니다. 여의치 않으면 아래 Ragas처럼 LLM으로 근사하는 방법을 씁니다.

3. 생성 지표: Ragas의 세 가지

Ragas(Es 외 2023)는 사람이 쓴 정답 없이(reference-free) RAG를 평가하는 틀입니다. 세 가지 품질 측면을 정의하고, 각각을 LLM 프롬프트로 계산합니다.

① 충실도(faithfulness). 답의 주장들이 주어진 문맥으로 뒷받침되는가.

  1. LLM이 답을 짧은 진술 여러 개로 나눕니다.
  2. 진술마다 "문맥에서 추론할 수 있는가"를 LLM이 판정합니다.
  3. 점수 F=∣V∣/∣S∣F = |V|/|S| — 지지된 진술 수 ÷ 전체 진술 수.

② 답변 관련성(answer relevance). 답이 질문에 직접, 적절하게 답하는가(사실 여부는 따지지 않고, 불완전하거나 군더더기가 많으면 감점).

  1. LLM이 답만 보고 "이 답을 낳았을 질문" nn 개를 만듭니다.
  2. 원래 질문 qq 와 각 생성 질문 qiq_i 의 임베딩 코사인 유사도를 잽니다(논문은 OpenAI text-embedding-ada-002를 썼습니다).
  3. 점수 AR=1n∑i=1nsim(q,qi)AR=\frac1n\sum_{i=1}^{n}\mathrm{sim}(q,q_i).

③ 문맥 관련성(context relevance). 검색된 문맥이 답에 필요한 정보만 담고 있는가.

  1. LLM이 문맥에서 질문에 답하는 데 꼭 필요한 문장만 뽑습니다.
  2. 점수 CR=CR= 뽑힌 문장 수 ÷ 문맥 전체 문장 수.
기호뜻
SS답에서 뽑은 진술 집합
VV그중 문맥이 뒷받침한다고 판정된 진술
qiq_i답으로부터 거꾸로 만든 질문
sim\mathrm{sim}임베딩 코사인 유사도

숫자로 해 보기(해설용).

  • 답을 진술 4개로 나눴더니 3개가 문맥으로 뒷받침됨 → F=3/4=0.75F=3/4=0.75. 나머지 1개는 문맥에 없는 내용, 즉 환각 후보입니다.
  • 답에서 만든 질문 3개와 원 질문의 유사도가 0.9, 0.8, 0.7 → AR=0.8AR=0.8.
  • 문맥 8문장 중 2문장만 필요 → CR=0.25CR=0.25. 검색이 관련 없는 문장을 많이 끌어왔다는 신호입니다.

사람과 얼마나 맞나. 논문은 위키백과 기반으로 직접 만든 WikiEval 데이터에서 두 사람의 쌍대 비교 판정과의 일치율을 보고했습니다.

방법충실도답변 관련성문맥 관련성
Ragas0.950.780.70
GPT Score0.720.520.63
GPT Ranking0.540.400.52

충실도는 사람과 잘 맞지만, 문맥 관련성은 상대적으로 어렵다는 것을 보여 줍니다. 현재 Ragas 라이브러리는 논문 이후 지표 이름과 종류가 늘어났으므로, 실제로 쓸 때는 공식 문서의 정의를 확인해야 합니다.

LLM으로 평가할 때 주의할 점. 심판 LLM도 틀립니다. MT-Bench 논문(Zheng 외 2023)은 답이 놓인 순서, 답의 길이, 자기가 쓴 답에 따라 판정이 기우는 위치 · 장황함 · 자기 강화 편향을 보고했습니다(LLM 평가 수업 참고). 그래서 (1) 소수 표본은 사람이 직접 확인해 심판의 판정과 비교하고 (2) 심판 프롬프트 · 모델을 고정해 버전 간 비교에만 쓰는 것이 안전합니다.

4. 실패 유형: 어디서 틀리나

Barnett 외(2024)는 연구 · 교육 · 바이오의학 세 분야의 RAG 구축 경험에서 7가지 실패 지점(failure point, FP)을 정리했습니다.

FP이름증상주로 볼 곳
1내용 없음답할 자료가 아예 없는데 그럴듯하게 답함"모르면 모른다" 지시, 거절 평가
2상위 순위에서 빠짐답 문서가 있지만 상위 K에 못 듦recall@K, 하이브리드 · 리랭킹
3문맥에 못 들어감검색은 됐지만 합치는 과정에서 빠짐문맥 조립 · 길이 제한
4추출 실패문맥에 답이 있는데 LLM이 못 뽑음(잡음 · 모순)문맥 관련성, 청크 정리
5형식 틀림표 · 목록 같은 형식 지시를 무시프롬프트, 구조화 출력
6구체성 틀림너무 뭉뚱그리거나 너무 세부적질문 의도 파악, 쿼리 재작성
7불완전문맥에 있는데 일부만 답함하위 질문 분해

이 논문의 두 가지 핵심 교훈은 ① RAG의 검증은 실제 운영 중에야 제대로 가능하고 ② 견고함은 처음에 설계로 다 정해지는 것이 아니라 운영하며 진화한다 는 것입니다. 평가 세트를 한 번 만들고 끝내지 말고, 운영 로그의 실패 사례를 계속 평가 세트에 더해야 한다는 뜻입니다.

5. 고급 패턴 지도

기본 RAG는 "항상 한 번 검색 → 상위 K개 → 생성"입니다. 고급 패턴들은 이 고정된 흐름의 약점을 하나씩 겨냥합니다.

패턴겨냥한 약점핵심 아이디어(원 논문 기준)
Self-RAG필요 없을 때도 검색하고, 관련 없는 문단도 섞음모델이 반성 토큰(검색 필요 여부 · 생성 품질 비평)을 직접 생성해 필요할 때만 검색하고 자기 출력을 평가
CRAG검색이 틀렸을 때 그대로 믿음가벼운 검색 평가기가 신뢰도를 매겨 정답 · 오답 · 모호 행동을 고르고, 뒤의 둘이면 웹 검색으로 보강 · 문서에서 핵심만 추려 재구성
RAPTOR짧은 청크만 찾아 문서 전체 맥락을 놓침청크를 임베딩 · 군집 · 요약하기를 반복해 요약 트리를 만들고 여러 추상 수준에서 검색. GPT-4와 묶어 QuALITY에서 최고 성능을 절대 정확도 20% 높였다고 보고
GraphRAG"이 자료 전체의 주요 주제는?" 같은 전역 질문LLM으로 개체 지식 그래프를 만들고, 밀접한 개체 묶음(커뮤니티)마다 요약을 미리 생성. 질문마다 커뮤니티 요약으로 부분 답을 만든 뒤 다시 요약. 100만 토큰 규모 데이터의 전역 질문에서 기본 RAG보다 답의 포괄성 · 다양성이 높았다고 보고
에이전틱 RAG한 번 검색으로 안 풀리는 다단계 질문검색을 LLM이 부르는 도구 로 두고, 생각 → 검색 → 관찰을 반복(ReAct · 에이전트 설계)

에이전틱 RAG를 조금 더. "작년 매출 1위 제품의 올해 불량률은?" 같은 질문은 1위 제품을 먼저 찾아야 다음 검색어가 정해집니다. 고정된 한 번 검색으로는 풀 수 없고, LLM이 도구 호출로 검색 함수를 여러 번 부르며 중간 결과를 보고 다음 검색어를 정해야 합니다. 대가는 호출 횟수(지연 · 비용)와, 루프가 엉뚱하게 길어질 위험입니다. 그래서 최대 단계 수와 단계별 로그를 꼭 둡니다.

무엇부터 시도하나(해설용 권장). 기본 RAG + 하이브리드 검색 + 리랭킹 + 평가 세트를 먼저 갖추고, 실패 사례가 특정 유형에 몰릴 때 그 유형을 겨냥한 패턴을 더합니다. 전역 요약 질문이 많으면 GraphRAG · RAPTOR, 다단계 질문이 많으면 에이전틱 RAG, 엉뚱한 문서를 믿는 경우가 많으면 CRAG식 검색 평가 단계를 고려합니다.

6. 긴 문맥에 다 넣으면 RAG가 필요 없을까

문맥 창이 수십만 토큰까지 커지면서 "그냥 다 넣으면 되지 않나"라는 질문이 나옵니다. 판단 재료는 세 가지입니다.

  • 규모: Anthropic의 맥락 검색 글은 지식 베이스가 20만 토큰(약 500쪽) 미만이면 전체를 프롬프트에 넣는 것을 고려하라고 권합니다. 이보다 크면 검색이 필요합니다.
  • 활용 품질: 중간에서 길을 잃다 는 관련 정보가 입력의 처음이나 끝에 있을 때 성능이 가장 좋고, 긴 문맥 한가운데에 있으면 크게 떨어지는 U자형 곡선을 보고했습니다. 길게 넣는다고 다 활용하는 것은 아닙니다.
  • 비용 · 지연: 질문마다 전체를 넣으면 입력 토큰 비용과 응답 시간이 커집니다(프롬프트 캐싱으로 일부 줄일 수 있습니다).

결론적으로 둘은 경쟁 관계라기보다 조합 관계입니다. 작은 자료는 통째로, 큰 자료는 검색으로 좁힌 뒤 긴 문맥에 넉넉히 넣는 식입니다.

연습 문제

  1. 답을 진술 5개로 나눴고 문맥이 2개만 뒷받침한다면 충실도는? 이 답을 어떻게 해석하나요?
    • 풀이: F=2/5=0.4F=2/5=0.4 입니다. 진술 절반 이상이 문맥 밖에서 왔으므로 환각 가능성이 높고, 검색 실패(FP2) 또는 모델이 문맥을 무시한 경우를 의심합니다.
  2. 관련 여부가 (관련, 아님, 아님)이고 관련 문서가 1개뿐이면 nDCG@3은?
    • 풀이: DCG =1=1, IDCG =1=1 이므로 1.0입니다.
  3. 질문 3개의 첫 정답 순위가 1위, 3위, 못 찾음이면 MRR은?
    • 풀이: (1+1/3+0)/3≈0.444(1+1/3+0)/3\approx0.444 입니다.
  4. "올해 사내 공지 전체에서 가장 자주 나온 불만은?"이라는 질문에 기본 RAG가 약한 이유와 대안은?
    • 풀이: 답이 특정 청크가 아니라 자료 전체에 흩어진 전역 질문이라, 상위 K 청크만으로는 전체를 볼 수 없습니다. GraphRAG의 커뮤니티 요약이나 RAPTOR의 요약 트리 같은 전역 요약 구조가 대안입니다.

스스로 점검

  1. 충실도와 답변 관련성의 차이는?
    • 답: 충실도는 답이 문맥에 근거했는지, 답변 관련성은 답이 질문에 맞는지 를 봅니다. 문맥에 충실하지만 질문과 동떨어진 답, 질문에 맞지만 근거 없는 답이 각각 가능합니다.
  2. 운영 중인 RAG에서 "자료에 없는 질문에 그럴듯하게 답한다"는 신고가 왔다면 어떤 실패 지점이고 무엇을 하나요?
    • 답: FP1(내용 없음)입니다. 모르면 모른다고 답하라는 지시를 강화하고, 자료에 없는 질문을 평가 세트에 넣어 거절 비율을 잽니다.
  3. 에이전틱 RAG의 장점과 대가는?
    • 답: 중간 결과를 보며 검색을 여러 번 해 다단계 질문을 풀 수 있지만, 호출 횟수 증가로 지연 · 비용이 늘고 루프가 길어질 위험이 있습니다.

용어 정리

용어쉬운 뜻
참조 없는 평가사람이 쓴 정답 없이 LLM 판정으로 품질을 재는 것
충실도답의 주장이 검색된 문맥으로 뒷받침되는 비율
답변 관련성답이 질문에 직접 · 적절하게 답하는 정도
문맥 관련성검색된 문맥 가운데 꼭 필요한 문장의 비율
nDCG관련 문서가 위에 올수록 높은 순위 품질 지표
실패 지점(FP)RAG가 틀리는 대표 유형
반성 토큰Self-RAG가 검색 필요 · 품질 판단을 표시하려고 생성하는 특수 토큰
커뮤니티 요약GraphRAG에서 밀접한 개체 묶음마다 미리 만든 요약
에이전틱 RAGLLM이 검색을 도구로 여러 번 불러 쓰는 RAG

더 깊이 보려면

다음에 볼 것

라이선스

본문은 KAITABASE 자체 해설입니다. 숫자 예는 이 수업을 위해 만든 해설용 예이며 파이썬으로 검산했습니다. 논문 수치는 각 원문에서 확인한 것만 옮겼습니다.

출처

AI 원리부터 이해하기 · RAG·검색 모듈

RAG·검색 모듈 학습

이 글은 RAG·검색 모듈의 학습 자료입니다. 전체 21개 자료 중 12번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 Ragas 문서 · arXiv 원 논문