RAG는 단순히 AI에게 질문하는 방식이 아니라, 답변 전에 근거 자료를 먼저 찾아 붙이는 구조입니다.
RAG는 Retrieval-Augmented Generation의 줄임말입니다. 한국어로는 검색 증강 생성 정도로 옮길 수 있습니다. 핵심은 생성 전에 검색을 먼저 한다는 점입니다.
- RAG, Retrieval, Retriever의 차이
- Grounding과 Hallucination
- 문서 검색과 AI 작성안 생성에 쓰이는 방식
1. 한 줄로 정의하면
RAG는 사용자의 질문과 관련된 문서나 데이터를 먼저 검색하고, 그 검색 결과를 LLM의 입력 맥락에 넣어 답변을 생성하는 방식입니다.
2. 왜 이 개념이 필요했나
LLM은 훈련된 지식만으로 답할 수 있습니다. 그런데 콘텐츠 서비스에서는 방금 등록된 문서, 내부 공지, 특정 사용자의 문서처럼 모델이 원래 모르는 정보가 중요합니다.
이때 모델을 다시 학습시키는 것은 무겁습니다. 대신 필요한 순간에 관련 문서를 검색해서 프롬프트에 넣어주면, 모델은 외부 데이터를 참고해 답할 수 있습니다.
AWS Bedrock Knowledge Bases 문서에서도 RAG를 데이터 소스의 정보를 활용해 응답의 관련성과 정확도를 높이는 기법으로 설명합니다. 즉 RAG의 목적은 멋진 답변이 아니라 근거 있는 답변입니다.
3. 동작 흐름
4. 구조를 그림처럼 보면
5. 서비스 예시로 이해하면
지식베이스형 서비스에서는 사용자가 콘텐츠를 작성할 때 기존 콘텐츠 중 비슷한 내용을 먼저 찾아줄 수 있습니다. 이후 그 문서들을 참고해 작성안을 만들면, 아무 근거 없이 콘텐츠를 생성하는 것보다 안전합니다.
예를 들어 지식베이스형 서비스에서 사용자가 'RAG 구현 정리'라는 문서를 쓰려고 하면, 시스템은 기존의 RAG 설계 문서, embedding job 처리 문서, OpenAI API 연결 문서를 찾아 참고 자료로 붙일 수 있습니다.
사용자 입력
-> 유사 콘텐츠 검색
-> top-k 콘텐츠 추출
-> references로 프롬프트에 삽입
-> AI 작성안 생성
-> 참고 문서 링크와 경고 메시지 표시
6. 헷갈리기 쉬운 비교
| LLM 단독 답변 | 모델이 가진 일반 지식으로 답합니다. | 최근 콘텐츠 내용은 모를 수 있습니다. |
| 검색 기능 | 관련 문서를 찾아 목록으로 보여줍니다. | 사용자가 직접 읽고 판단해야 합니다. |
| RAG | 검색 결과를 답변 생성에 함께 사용합니다. | 관련 문서를 근거로 작성안과 요약을 만듭니다. |
7. 실무에서 조심할 점
- 검색된 자료가 부정확하면 답변도 흔들립니다. RAG는 검색 품질에 크게 의존합니다.
- 검색 결과를 많이 넣는다고 항상 좋아지는 것은 아닙니다. context window와 token limit 때문에 적절히 줄여야 합니다.
- 근거가 없을 때는 없다고 말해야 합니다. 유사 문서 없음 처리를 하지 않으면 모델이 억지로 답을 만들 수 있습니다.
8. 구현할 때 먼저 볼 코드 책임
RAG를 구현할 때는 'LLM 호출 코드'보다 검색 책임을 먼저 나누는 것이 중요합니다.
검색 결과가 없거나 유사도가 낮은 경우를 별도 분기로 만들지 않으면, 모델이 근거 없는 답변을 만들 가능성이 커집니다.
DocumentSearchService
- 사용자 입력 embedding 생성
- document_embeddings에서 top-k 검색
RAGContextBuilder
- references 구성
- similarity threshold 검사
- 유사 문서 없음 warning 생성
AiDraftService
- references를 prompt에 삽입
- 근거 기반 작성안 생성
- 참고 문서 링크 반환
스스로 점검
- RAG와 일반 검색 기능의 차이를 설명할 수 있는가?
- 왜 유사 문서 없음 처리가 필요한지 말할 수 있는가?
- 지식베이스형 서비스에서 RAG가 필요한 기능을 하나 떠올릴 수 있는가?
참고한 공식 문서
'개발 > 용어 사전' 카테고리의 다른 글
| Job Queue란? 오래 걸리는 작업을 뒤로 미루는 구조 (0) | 2026.06.12 |
|---|---|
| Reranker란? 검색 결과를 다시 정렬하는 모델 (0) | 2026.06.11 |
| Vector DB란? 벡터 검색을 위한 데이터베이스 (0) | 2026.06.11 |
| Embedding이란? 문장을 숫자 벡터로 바꾸는 이유 (0) | 2026.06.11 |
| BM25란? 검색 엔진에서 키워드 점수를 매기는 방식 (0) | 2026.06.11 |