RAG (Retrieval-Augmented Generation, 검색 증강 생성)
별칭: 검색 증강 생성 · RAG · Open-Book Test
RAG (Retrieval-Augmented Generation, 검색 증강 생성)
정의
LLM이 답변을 생성할 때, 외부 지식 베이스에서 관련 문서를 먼저 검색(Retrieval)한 후 그 내용을 컨텍스트로 함께 사용하는 기법. LLM 자체의 학습 지식만으로는 부족하거나 부정확할 수 있는 영역을 외부 문서로 보강.
본문 — 기술 상세
작동 흐름
사용자 질의 → [임베딩 변환] → 벡터 DB에서 유사도 검색
→ Top-K 관련 문서 추출 → LLM 컨텍스트에 주입
→ LLM이 검색된 문서 + 질의를 보고 답변 생성
비유 — 오픈북 테스트
LLM에게 "오직 이 책 안에서만 답을 찾아라"라고 제약하는 것. 시험에서 폐쇄형 시험(LLM의 학습 지식만)이 아닌 오픈북 시험(검증된 자료를 펴놓고)을 보게 하는 것과 같다.
구성 요소
- 문서 청킹(Chunking) — 긴 문서를 적절한 크기(예: 500토큰)로 분할
- 임베딩(Embedding) — term/vector-embedding으로 청크를 벡터화
- 벡터 DB — Pinecone, Weaviate, Chroma, pgvector 등
- 검색(Retrieval) — 질의 임베딩과 유사도 Top-K
- 재순위(Re-ranking) — BM25·LLM 재평가로 정확도 향상
- 생성(Generation) — LLM에게 질의 + 검색 결과를 함께 입력
변형
- Naive RAG — 단순 1회 검색·생성
- Advanced RAG — 청킹·검색·재순위 모두 정교화
- Modular RAG — 모듈식 파이프라인
- Self-RAG — LLM이 스스로 추가 검색 필요 여부 판단
- GraphRAG — 지식 그래프 기반 검색 (Microsoft, 2024)
환각 방지
RAG의 가장 중요한 효과 = term/hallucination-환각 감소. LLM이 "기억"하지 않고 "찾아서 답"하면 거짓 정보 생성 위험이 줄어든다. 다만 검색 결과 자체가 부정확하면 RAG도 한계.
사역 적용
본 LLMWiki는 RAG의 한 형태이지만, Karpathy 패턴은 표준 RAG와 결정적으로 다르다 (concept/karpathy-llm-wiki-pattern):
| 표준 RAG | LLMWiki (Compilation 방식) |
|---|---|
| 매 질의마다 raw 문서 검색·합성 | 한 번 컴파일해 wiki Card로 누적 |
| 누적되는 것 ✗ (매번 처음부터) | 복리로 축적 (교차참조 이미 존재) |
| 임베딩 인프라 필수 | 옵션 (~100 source까지 wikilink만으로 충분) |
| 검색 품질이 답변 품질 결정 | wiki Card 자체가 사람·LLM 함께 관리한 정제물 |
→ 본 프로젝트의 자동 저작(소책자·PPT·칼럼)은 RAG over LLMWiki 형태. 즉 검색 대상이 raw sources가 아니라 이미 정제된 wiki Card.
4층 신학 가드레일에서 RAG 활용:
- 1층 성경 원문·원어를 RAG 코퍼스로 → 신학적 정확성 보장
- 2층 정통 주석을 RAG → 이단 해석 차단
- A04.04 doctrine-sidecar가 RAG 결과의 정통성 검증
한계와 주의사항
- 검색 품질 의존성 — 좋은 청킹·임베딩·재순위 없으면 RAG는 더 큰 환각을 만들 수 있음
- 컨텍스트 윈도우 제한 — Top-K가 너무 크면 LLM 컨텍스트 초과
- 신학적 검증 한계 — 코사인 유사도가 신학적 정통성을 보장하지 ✗
- 임베딩 비용 — 큰 코퍼스는 임베딩·저장·검색 비용 누적
관련
- term/llm-large-language-model
- term/vector-embedding (RAG의 검색 핵심)
- term/hallucination-환각 (RAG의 가장 큰 적)
- term/knowledge-graph (RAG의 진화 형태)
- concept/karpathy-llm-wiki-pattern (Compilation ≠ RAG)