[AI] RAG (검색 증강 생성)
개요
- LLM의 지식 한계(Knowledge Cutoff)와 환각(Hallucination)을 보완하는 기법
- 외부 문서 DB에서 관련 정보를 검색해 LLM 컨텍스트에 삽입 후 응답 생성
- 바른 정보 행동 도움: 출처 제시 가능, 최신 정보 반영
- 파인튜닝 대비 돈/시간 비용이 낮고, 문서 추가만으로 지식 확장 가능
기본 파이프라인
사용자 질문
-> 임베딩 모델 (쿼리 벡터화)
-> 벡터 유사도 검색 (Top-k 문서)
-> [질문 + 검색 문서] 프롬프트 조합
-> LLM 응답 생성
-> 사용자에게 반환
주요 구성 요소
임베딩 모델 (Embedding Model)
- 텍스트를 고차원 벡터로 변환, 의미적으로 유사한 텍스트는 벡터 공간에서 가깝게 위치
- 주요 임베딩 모델
- OpenAI:
text-embedding-3-small,text-embedding-3-large - Hugging Face:
BAAI/bge-m3,intfloat/e5-large-v2 - 한국어:
jhgan/ko-sroberta-multitask
- OpenAI:
벡터 데이터베이스
- 임베딩 저장 및 유사도 검색 수행
- 벡터 데이터베이스 포스트 참고
리트리버 (Retriever)
- Sparse Retriever: BM25 기반 키워드 검색
- Dense Retriever: 벡터 유사도 기반 의미론적 검색
- Hybrid: 두 방식을 결합해 검색 품질 향상
고급 RAG 기법
- Naive RAG → Advanced RAG → Modular RAG 순으로 진화
- HyDE (Hypothetical Document Embeddings): 질문에 맞는 가상 답변을 생성 후 검색 품질 향상
- Re-ranking: 검색 결과를 재정렬 (Cross-Encoder 활용)
- Query Expansion: 질문 다양화로 검색 커버리지 향상
- Self-RAG: LLM이 스스로 검색 필요성 판단 및 답변 품질 평가
- Corrective RAG (CRAG): 검색 품질을 평가하여 웹 검색으로 보완
Fine-tuning vs RAG
| 항목 | Fine-tuning | RAG |
|---|---|---|
| 최신 정보 반영 | 재학습 필요 | 문서 추가만으로 가능 |
| 비용 | 높음 | 낮음 |
| 도메인 특화 | 강함 | 보통 |
| 투명성 | 낮음 | 높음 (출처 제시) |
| 보안 | 모델에 내장 | 문서 도실 위험 관리 필요 |
주요 도구
- LangChain: RAG 파이프라인 구축의 사실상 표준
- LlamaIndex: 데이터 연결 및 RAG에 특화
- Haystack: 엔터프라이즈 시맨틱 검색 프레임워크