RAG 파이프라인 직접 이해하기: 검색증강생성의 모든 것
데브노트 편집팀·2026.07.12·8분 읽기
ADVERTISEMENT
LLM은 학습 시점 이후의 지식을 모르고, 가끔 그럴듯한 거짓말(환각)을 합니다. **RAG(Retrieval-Augmented Generation)**는 답변 직전에 관련 문서를 찾아 프롬프트에 넣어줌으로써 이 한계를 보완합니다.
RAG의 4단계 흐름
- 분할(Chunking): 문서를 적당한 크기로 자른다
- 임베딩(Embedding): 각 조각을 벡터로 변환해 저장
- 검색(Retrieval): 질문도 벡터로 바꿔 가장 유사한 조각을 찾는다
- 생성(Generation): 찾은 조각을 프롬프트에 넣어 LLM이 답한다
질문 → [임베딩] → 벡터DB 유사도 검색 → 관련 문서 K개
→ "다음 문맥을 참고해 답하라: {문서}
질문: {질문}" → LLM 답변
1) 분할: 너무 크지도 작지도 않게
조각이 너무 크면 불필요한 내용이 섞이고, 너무 작으면 문맥이 끊깁니다. 보통 300~800 토큰에 약간의 오버랩을 둡니다.
2) 임베딩과 벡터 DB
텍스트를 의미 기반 숫자 배열(벡터)로 바꾸면, 의미가 비슷한 문장은 벡터 거리도 가깝습니다. 이 벡터들을 Pinecone·pgvector·Chroma 같은 벡터 DB에 저장합니다.
# 의사코드
chunks = split(document, size=500, overlap=50)
for c in chunks:
vec = embed(c) # 텍스트 -> 벡터
db.upsert(vec, text=c) # 저장
3) 검색: 코사인 유사도
질문을 같은 방식으로 임베딩한 뒤, 가장 가까운 상위 K개를 가져옵니다.
q_vec = embed(question)
top_k = db.search(q_vec, k=4) # 유사도 상위 4개
context = "
".join(top_k)
4) 생성: 문맥을 넣어 답하기
시스템: 아래 문맥만 근거로 답하라. 모르면 모른다고 답하라.
문맥: {context}
질문: {question}
"문맥에 없으면 모른다고 하라"는 지시가 환각을 크게 줄입니다.
품질을 높이는 포인트
| 문제 | 해결 |
|---|---|
| 엉뚱한 문서 검색 | 청크 크기·오버랩 조정, 리랭킹 추가 |
| 답이 장황함 | 출력 형식·길이 명시 |
| 근거 불명확 | 출처(문서 ID) 함께 반환 |
마무리 체크리스트
- 흐름은 분할 → 임베딩 → 검색 → 생성
- 청크는 적당히, 오버랩으로 문맥 보존
- "문맥에 없으면 모른다"로 환각 방어
- 출처 표기로 신뢰성 확보
RAG는 LLM에 '최신 + 내 데이터'라는 기억을 붙여주는 가장 실용적인 방법입니다.
ADVERTISEMENT
함께 보면 좋은 글
AI·신기술· 6분
벡터 데이터베이스란? 임베딩 검색의 핵심 이해하기
AI 검색의 심장인 벡터 DB. 임베딩이 무엇이고 유사도 검색이 어떻게 동작하는지, 일반 DB와의 차이와 대표 도구를 정리합니다.
2026.07.14
AI·신기술· 8분
AI 환각(할루시네이션)이란 — 왜 그럴듯한 거짓말을 하나, 줄이는 법
AI 환각은 모델이 사실이 아닌 내용을 자신 있게 말하는 현상이다. 원인과 위험 사례, 그리고 출처 요구·검증·RAG 등 실전 감소법을 정리했다.
2026.07.04
AI·신기술· 7분
RAG(검색증강생성)란? 개념부터 파이썬 구현까지 한 번에 정리
LLM의 환각과 최신성 한계를 보완하는 RAG의 핵심 개념을 정리합니다. 청킹·임베딩·검색·생성으로 이어지는 파이프라인을 실제 파이썬 코드로 직접 구현해 봅니다.
2026.06.17