검색
← 모듈 로드맵

중간 점검: RAG · 검색

강의 · 준전문가 · KAITABASE 정리

원제 · Checkpoint Quiz: RAG and Retrieval

RAG · 검색 트랙 전체를 복습하는 14문제(개념 7 · 계산 7)와 풀이

먼저 알아야 할 것

RAG·검색 트랙 수업 전체검색 평가 지표벡터 인덱스RAG 파이프라인

다루는 내용

RAG·검색 트랙의 중간 점검 문제입니다. BM25와 TF-IDF, 바이 · 크로스 인코더, DPR · ColBERT · Contriever, IVF · PQ · HNSW 계산, RRF · 검색 지표 계산, HyDE, 실패 지점 진단, REALM · RAG · FiD · RETRO의 검색 결합 방식, Self-RAG · CRAG · RAPTOR · GraphRAG 선택까지 14문제를 풀이와 복습 링크로 정리합니다.

해설

중간 점검: RAG · 검색

RAG·검색 트랙 전체를 복습하는 점검 문제 14개입니다. 검색 기초(TF-IDF · BM25 · 평가 지표)부터 밀집 검색(SBERT · DPR · ColBERT · Contriever), 벡터 인덱스(IVF · PQ · HNSW), RAG 파이프라인(청킹 · RRF · 리랭킹 · 쿼리 재작성), 평가(Ragas · 실패 지점), 연구 흐름(REALM · FiD · RETRO · Self-RAG · CRAG · RAPTOR · GraphRAG)까지 다룹니다. 계산 문제는 직접 풀어 본 뒤 풀이와 맞춰 보세요. 풀이 아래의 '다시 볼 곳' 링크로 약한 부분을 복습하면 됩니다.

항목내용
범위이 트랙의 수업 · 논문 해설 전체(137, 52~66, 187~190)
트랙 · 수준RAG·검색 · 중급
문제 구성개념 7문제 · 계산 7문제(손계산 값은 파이썬으로 검산)
권장 방법답을 먼저 적고 풀이를 확인. 맞힌 개수보다 "왜 틀렸나"를 기록

들어가기 전에

  • 이 트랙의 마지막 수업 RAG 평가와 고급 패턴 까지 읽었다고 가정합니다.
  • 계산 문제에는 로그 · 역수 계산이 나옵니다. 계산기를 써도 됩니다.

한눈에 보기

  • 키워드 검색과 밀집 검색의 차이, 그리고 둘을 합치는 이유를 설명할 수 있는지 점검합니다.
  • 벡터 인덱스의 손잡이(nprobe · PQ 코드 크기 · ef)를 숫자로 다룰 수 있는지 점검합니다.
  • RAG 파이프라인의 실패를 증상으로 진단할 수 있는지 점검합니다.
  • 연구 흐름 속 대표 모델이 검색을 어디에 끼워 넣었는지 구분할 수 있는지 점검합니다.

문제와 풀이

1. BM25가 TF-IDF보다 나은 점 (개념)

같은 단어가 문서에 1번 나올 때와 20번 나올 때, TF-IDF와 BM25의 점수는 어떻게 다르게 움직이나요? BM25의 bb 파라미터는 무엇을 조절하나요?

  • 풀이: 단순 TF-IDF는 등장 횟수가 늘수록 점수가 계속 커지지만, BM25는 k1k_1 때문에 등장 횟수 효과가 점점 포화되어(늘어나는 폭이 줄어) 한 단어를 반복해 채운 문서가 과하게 유리해지지 않습니다. bb 는 문서 길이 정규화의 세기로, 긴 문서일수록 단어가 우연히 많이 나오는 효과를 얼마나 깎을지 정합니다(b=0b=0 이면 길이 무시).
  • 다시 볼 곳: 검색의 기초

2. 바이 인코더와 크로스 인코더 (개념)

문장 1만 개 중 가장 비슷한 쌍을 찾을 때 BERT 크로스 인코더와 SBERT 바이 인코더의 비용 차이를 Sentence-BERT 논문 수치로 말하고, 그 차이가 생기는 구조적 이유를 설명하세요.

  • 풀이: 논문은 BERT 크로스 인코더로 약 5천만 번(49,995,000번) 추론, V100으로 약 65시간이 걸리지만 SBERT로는 임베딩 1만 개 계산에 약 5초면 된다고 보고했습니다. 크로스 인코더는 두 문장을 함께 넣어야 해서 쌍마다 모델을 다시 돌려야 하고, 바이 인코더는 문장마다 벡터를 한 번만 만들어 두고 내적만 하면 되기 때문입니다. 그래서 실무에서는 바이 인코더로 후보를 넓게 찾고, 크로스 인코더로 상위 후보만 다시 줄 세웁니다.
  • 다시 볼 곳: Sentence-BERT · RAG 파이프라인 설계

3. DPR의 배치 내 음성 예 (개념 · 계산)

DPR 학습에서 배치 크기가 B=4B=4 이고 배치 내 음성 예(in-batch negatives)를 쓰면, 질문 하나당 양성 · 음성 문단은 각각 몇 개인가요? DPR이 BM25와 비교해 보고한 결과는?

  • 풀이: 자기 짝 문단 1개가 양성, 같은 배치 다른 질문들의 양성 문단 B−1=3B-1=3 개가 음성입니다. 추가 계산 없이 음성 예를 얻는 효율적인 방법입니다. DPR은 top-20 문단 검색 정확도에서 강력한 Lucene BM25 시스템보다 절대 9~19%p 높았다고 보고했습니다.
  • 다시 볼 곳: DPR

4. ColBERT의 MaxSim (계산)

질의 토큰 2개, 문서 토큰 3개의 유사도 행렬이 아래와 같을 때 ColBERT식 점수를 구하세요. ColBERTv2가 이 방식의 어떤 약점을 줄였나요?

문서 t1문서 t2문서 t3
질의 q10.20.90.1
질의 q20.50.40.7
  • 풀이: 질의 토큰마다 문서 토큰과의 최댓값을 골라(MaxSim) 더합니다. 0.9+0.7=1.60.9+0.7=1.6 입니다. 문서를 벡터 하나가 아니라 토큰마다 벡터로 저장하므로 인덱스 크기가 크게 늘어나는 것이 약점이고, ColBERTv2는 잔차 압축과 잡음 제거 지도 학습으로 품질을 높이면서 저장 공간을 6~10배 줄였다고 보고했습니다.
  • 다시 볼 곳: ColBERT · ColBERTv2

5. 라벨 없이 학습한 검색기 (개념)

Contriever는 어떤 방식으로 학습했고, 어떤 결과를 보였나요? 이것이 실무에서 갖는 의미는?

  • 풀이: 사람이 만든 질문-문단 쌍 없이 대조 학습(contrastive learning)으로 학습한 비지도 밀집 검색기입니다. BEIR 벤치마크 대부분에서 Recall@100이 BM25와 견줄 만하다고 보고했습니다. 라벨 데이터가 없는 새 분야에서도 밀집 검색을 출발점으로 쓸 수 있다는 의미이고, 동시에 "BM25를 넘기가 쉽지 않다"는 것도 보여 줍니다.
  • 다시 볼 곳: Contriever

6. IVF 거리 계산 횟수 (계산)

문서 N=4×106N=4\times10^6 개, 군집 KIVF=2000K_{IVF}=2000 개, nprobe =4=4 일 때 목록 크기가 고르다고 가정한 거리 계산 횟수는? 전수 검색의 몇 분의 1인가요?

  • 풀이: K+P⋅N/K=2000+4×4×106/2000=2000+8000=10,000K + P\cdot N/K = 2000 + 4\times4\times10^6/2000 = 2000+8000=10{,}000 번입니다. 전수 검색 4×1064\times10^6 번의 400분의 1입니다. nprobe를 늘리면 재현율이 오르고 계산이 늘어납니다.
  • 다시 볼 곳: 벡터 검색과 근사 최근접 이웃

7. PQ 압축률 (계산)

384차원 float32 임베딩을 부분 벡터 48개, 부분마다 코드북 256개(1바이트)인 PQ로 저장하면 벡터당 몇 바이트이고 몇 배 줄었나요? 대가는 무엇인가요?

  • 풀이: 원래 384×4=1536384\times4=1536 바이트, PQ 코드는 48바이트이므로 32배 줄었습니다. 대가는 거리 해상도 손실로, 가까운 문서들끼리 순서가 뒤섞일 수 있습니다. 그래서 PQ로 후보를 추린 뒤 원래 벡터로 다시 정렬하기도 합니다.
  • 다시 볼 곳: 벡터 검색과 근사 최근접 이웃

8. HNSW 손잡이 (개념)

HNSW에서 검색 품질이 부족할 때 먼저 바꿔 볼 파라미터와 그 대가, 메모리가 부족할 때 줄일 파라미터는?

  • 풀이: 검색 때 후보 목록 크기 ef 를 늘리면 재현율이 오르고 속도가 느려집니다(인덱스를 다시 만들 필요 없음). 메모리는 연결 수 MM 에 비례하므로 메모리가 부족하면 MM 을 줄이는데, 높은 재현율 · 고차원 데이터에서는 품질이 떨어질 수 있습니다. HNSW 논문은 MM 의 합리적 범위를 5~48로 제시합니다.
  • 다시 볼 곳: 벡터 검색과 근사 최근접 이웃

9. RRF 계산 (계산)

BM25 목록 [P, Q, R], 벡터 목록 [R, P, S] 를 k=60k=60 RRF로 합친 순서를 구하세요.

  • 풀이: P =161+162≈0.03252=\frac1{61}+\frac1{62}\approx0.03252, R =163+161≈0.03227=\frac1{63}+\frac1{61}\approx0.03227, Q =162≈0.01613=\frac1{62}\approx0.01613, S =163≈0.01587=\frac1{63}\approx0.01587. 순서는 P, R, Q, S 입니다. 두 목록 모두에 나온 P와 R이 앞서고, 그중 평균 순위가 더 높은 P가 1위입니다.
  • 다시 볼 곳: RAG 파이프라인 설계 · 작은 RAG 만들기

10. 검색 지표 (계산)

질문 5개에서 정답 문서의 첫 등장 순위가 1, 2, 못 찾음, 4, 1위입니다(상위 10개까지 확인). recall@1, recall@3, MRR은? 또 상위 3개 관련 여부가 (관련, 아님, 관련)이고 관련 문서가 2개면 nDCG@3은?

  • 풀이: recall@1 =2/5=0.4=2/5=0.4, recall@3 =3/5=0.6=3/5=0.6, MRR =(1+0.5+0+0.25+1)/5=0.55=(1+0.5+0+0.25+1)/5=0.55 입니다. nDCG@3은 DCG =1+1log⁡24=1.5=1+\frac{1}{\log_2 4}=1.5, IDCG =1+1log⁡23≈1.631=1+\frac1{\log_2 3}\approx1.631 이므로 ≈0.920\approx0.920 입니다.
  • 다시 볼 곳: 검색의 기초 · RAG 평가와 고급 패턴

11. HyDE와 쿼리 재작성 (개념)

HyDE가 "틀린 내용이 섞일 수 있는 가상 문서"로 검색하는데도 잘 작동하는 이유를 논문 설명대로 말하고, 일반적인 쿼리 재작성과의 차이를 말하세요.

  • 풀이: 가상 문서를 다시 인코더(Contriever)로 임베딩하는 과정이 일종의 병목(dense bottleneck)으로 작용해 잘못된 세부 내용을 걸러 내고, 답 문서와 비슷한 모양 의 벡터로 검색하게 된다고 설명합니다. 논문은 HyDE가 비지도 밀집 검색기 Contriever를 크게 앞선다고 보고했습니다. 일반 쿼리 재작성은 검색용 질문 을 고쳐 쓰고, HyDE는 답처럼 생긴 문서 를 만들어 그 임베딩으로 찾는다는 점이 다릅니다.
  • 다시 볼 곳: HyDE · RAG 파이프라인 설계

12. 증상으로 진단하기 (개념)

다음 세 증상은 각각 7가지 실패 지점 중 어디에 해당하고, 무엇부터 확인하나요? (가) 정답 문서가 상위 50에는 있는데 LLM에 넘기는 상위 5에는 없다. (나) 정답 청크가 프롬프트에 들어갔는데 답이 틀렸다. 문맥에 비슷한 수치가 여러 개 섞여 있었다. (다) 사내 자료에 없는 질문에 그럴듯한 답을 지어냈다.

  • 풀이: (가) FP2(상위 순위에서 빠짐) — 리랭커 도입 · 하이브리드 검색 · 넘기는 개수 조정. (나) FP4(추출 실패) — 잡음 · 모순 정보가 원인이므로 문맥 관련성(필요 없는 문장 비율)을 재고 청크를 정리하거나 리랭킹으로 줄입니다. (다) FP1(내용 없음) — "자료에 없으면 없다고 답하라" 지시와, 자료에 없는 질문을 넣은 거절 평가를 추가합니다.
  • 다시 볼 곳: RAG 평가와 고급 패턴

13. 검색을 어디에 끼웠나 (개념)

REALM, RAG(Lewis 외), Fusion-in-Decoder, RETRO가 검색 결과를 모델에 넣는 위치 · 방식을 한 줄씩 구분하세요.

  • 풀이:
    • REALM: 사전학습 단계부터 검색기를 넣고, 마스크 언어 모델링을 학습 신호로 수백만 문서를 고려하는 검색 단계를 거쳐 역전파합니다.
    • RAG: 사전학습된 검색기(DPR)와 생성 모델(seq2seq)을 묶어, 검색 문단을 생성 모델 입력에 넣고 함께 미세조정합니다.
    • FiD: 문단마다 질문과 붙여 인코더에서 따로 처리하고, 디코더에서 모든 문단 표현을 함께 보며 근거를 융합합니다. 검색 문단 수를 늘릴수록 성능이 크게 오른다고 보고했습니다.
    • RETRO: 2조 토큰 데이터베이스에서 앞 토큰과 비슷한 청크를 찾아 청크 단위 교차 어텐션으로 넣습니다. Pile에서 GPT-3 · Jurassic-1과 비슷한 성능을 25배 적은 파라미터로 냈다고 보고했습니다.
  • 다시 볼 곳: REALM · RAG · FiD · RETRO

14. 상황에 맞는 고급 패턴 (개념 · 충실도 계산)

(가) "올해 고객 문의 전체의 주요 불만 주제는?" (나) 검색된 문서가 엉뚱할 때가 잦고, 그럴 때 웹에서 보충하고 싶다. (다) 간단한 인사말에도 매번 검색해 느리고, 답의 근거 품질을 모델이 스스로 표시했으면 한다. 각각에 맞는 패턴은? 덧붙여, 답을 진술 6개로 나눴더니 문맥이 4개를 뒷받침했다면 Ragas 충실도는?

  • 풀이: (가) 자료 전체를 보는 전역 질문이므로 GraphRAG(개체 그래프 + 커뮤니티 요약) 또는 RAPTOR(요약 트리). (나) 검색 평가기의 신뢰도에 따라 행동을 바꾸고 웹 검색으로 보강하는 CRAG. (다) 반성 토큰으로 필요할 때만 검색하고 자기 출력을 비평하는 Self-RAG. 충실도는 4/6≈0.6674/6\approx0.667 입니다.
  • 다시 볼 곳: RAG 평가와 고급 패턴

채점과 복습 안내

맞힌 개수권장
12~14트랙 완료. 중간에서 길을 잃다 · RAG 서베이 로 시야를 넓히세요
8~11틀린 문제의 '다시 볼 곳'만 복습한 뒤 작은 RAG 만들기 실습을 다시 돌려 보세요
7 이하검색의 기초 부터 RAG 파이프라인 설계 까지 순서대로 다시 보세요
mermaid
flowchart LR
  A[검색 기초<br/>문제 1 · 10] --> B[밀집 검색<br/>문제 2~5]
  B --> C[벡터 인덱스<br/>문제 6~8]
  C --> D[RAG 파이프라인<br/>문제 9 · 11]
  D --> E[평가 · 진단<br/>문제 12 · 14]
  E --> F[연구 흐름<br/>문제 13 · 14]

스스로 점검

  1. 이 트랙에서 가장 자주 등장한 설계 원칙 하나를 꼽는다면?
    • 답: "넓게 찾고 좁게 다시 고른다"입니다. 싼 방법(BM25 · 바이 인코더 · ANN)으로 후보를 넓게 모으고, 비싼 방법(크로스 인코더 · 원본 벡터 재정렬 · LLM)으로 상위만 정밀하게 다룹니다.
  2. RAG 품질 문제를 받으면 가장 먼저 무엇을 재나요?
    • 답: 정답 근거가 검색 상위 K에 들어오는지(recall@K)입니다. 검색 실패와 생성 실패를 나눠야 고칠 곳이 보입니다.
  3. 밀집 검색만으로 충분하지 않은 대표 상황은?
    • 답: 오류 코드 · 제품 번호 · 고유명사처럼 정확한 문자열이 중요한 질문, 그리고 학습 데이터와 다른 분야의 문서입니다. BM25와의 하이브리드가 안전합니다.

용어 정리

용어쉬운 뜻
배치 내 음성 예같은 배치의 다른 질문 정답을 음성 예로 쓰는 학습 요령
MaxSim질의 토큰마다 가장 비슷한 문서 토큰 점수를 골라 더하는 계산
지연 상호작용질의 · 문서를 따로 인코딩한 뒤 토큰 수준에서 늦게 비교하는 방식
대조 학습맞는 쌍은 가깝게, 틀린 쌍은 멀게 배우는 학습
전역 질문특정 문단이 아니라 자료 전체를 봐야 답할 수 있는 질문
청크 단위 교차 어텐션RETRO가 검색 청크를 모델에 넣는 어텐션 방식

더 깊이 보려면

다음에 볼 것

라이선스

본문은 KAITABASE 자체 작성입니다. 계산 문제의 숫자는 해설용 예이며 파이썬으로 검산했습니다. 논문 수치는 각 원문(arXiv)에서 확인한 것만 옮겼습니다.

출처

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

RAG·검색 모듈 학습

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

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

출처·원문

원문 보기

요약만

본문 자체 작성