[RAG Retrieval] 실험 리포트 (FAISS)
이 문서는 Transformer 논문의 아이디어를 직접 재현한 실험이 아니라, 연계 응용 실험입니다. 목표는 "검색기를 바꾸면 RAG 품질이 얼마나 달라지는가"를 검증하는 것입니다.
개념 설명은 Attention 개념 문서를 참고하세요.
1. 뉴비가 먼저 이해해야 할 핵심
- RAG는 "먼저 찾고(retrieve), 그다음 답한다(generate)" 구조입니다.
- 검색이 틀리면 생성도 틀릴 확률이 커집니다.
- 그래서 이번 실험은 생성모델 튜닝보다 retrieval 품질에 집중합니다.
2. 실험 질문
같은 데이터셋에서 검색기를 TF-IDF에서 임베딩+FAISS로 바꾸면, 정답 근거를 더 잘 찾는가?
3. 실험 설정
- 데이터셋:
squad_validation_subset_docs239_qa250 - Baseline: TF-IDF sparse retrieval
- 비교군: sentence-transformers(
all-MiniLM-L6-v2) + FAISS(IndexFlatIP) - 답변 생성: 검색 문서 내 문장 추출(LLM 생성 아님)
- 대표 실행 시각:
2026-03-04T00:53:17Z
4. FAISS를 왜 쓰는가
FAISS는 벡터 검색 엔진입니다. 문서 임베딩을 인덱스로 저장하고 질의 임베딩과 가장 가까운 문서를 빠르게 찾습니다. 데이터가 커질수록 brute-force보다 latency를 줄이는 데 유리합니다.
5. 지표 정의
- retrieval_acc: 정답 근거 문서를 top-1로 맞춘 비율
- answer_keyword_f1: 답변에 핵심 키워드가 포함된 비율
- overall_score:
0.6*retrieval_acc + 0.4*answer_keyword_f1
6. 결과 표 (대표 실행)
| 방법 | retrieval_acc | answer_keyword_f1 | overall_score |
|---|---|---|---|
| baseline_tfidf | 0.688000 | 0.598667 | 0.652267 |
| st_miniLM_faiss | 0.808000 | 0.685333 | 0.758933 |
score_gain_vs_baseline: +0.106667
7. 결과는 얼마나 안정적인가
아래 표는 같은 프로토콜에서 seed만 바꿔 3회 재실행한 결과입니다. (모두 sentence-transformers + FAISS 로컬 캐시 모드)
| run_at_utc | baseline_score | faiss_score | gain |
|---|---|---|---|
| 2026-03-04T01:15:45Z | 0.601600 | 0.802667 | +0.201067 |
| 2026-03-04T01:15:50Z | 0.606400 | 0.776267 | +0.169867 |
| 2026-03-04T01:15:55Z | 0.652267 | 0.758933 | +0.106667 |
전문가 코멘트: 3회 모두 baseline 대비 개선이 관찰됐지만, 폭이 다르므로 평균/분산을 함께 제시해야 책임 있는 결론입니다.
8. 그래프

이 그래프는 대표 실행 1회의 비교입니다. 정식 리포트로 쓰려면 multi-seed 평균 그래프가 추가되어야 합니다.
9. 예시 출력
예시 1
질문: How does the secondary theory say most cpDNA is structured?
Top-k: 1:d1(0.6158) | 2:d172(0.3312) | 3:d13(0.3283)
근거 hit: True
예시 2
질문: What is the name of the two-tentacled cydippid ... ?
Top-k: 1:d2(0.4472) | 2:d183(0.3954) | 3:d13(0.3730)
근거 hit: True
10. 한계와 다음 단계
- 현재 생성 단계는 LLM 생성이 아닌 추출 기반
- 다음 단계: cross-encoder reranker 추가 후 top-k 재정렬 성능 검증
- latency(ms), index build time, memory footprint를 함께 기록
11. 검증 가능 출처
- raw result:
papers/Attention_Is_All_You_Need/results/result_20260304_011539.txt - raw result:
papers/Attention_Is_All_You_Need/results/result_20260304_011545.txt - raw result:
papers/Attention_Is_All_You_Need/results/result_20260304_011550.txt - raw log:
papers/Attention_Is_All_You_Need/logs/run_20260304_011550.log