개발/용어 사전

RAG란? LLM이 모르는 정보를 검색해서 답하는 구조

cedis 2026. 6. 11. 23:27
AI 응용 기술 용어 정리

RAG는 단순히 AI에게 질문하는 방식이 아니라, 답변 전에 근거 자료를 먼저 찾아 붙이는 구조입니다.

핵심 요약

RAG는 Retrieval-Augmented Generation의 줄임말입니다. 한국어로는 검색 증강 생성 정도로 옮길 수 있습니다. 핵심은 생성 전에 검색을 먼저 한다는 점입니다.

  • RAG, Retrieval, Retriever의 차이
  • Grounding과 Hallucination
  • 문서 검색과 AI 작성안 생성에 쓰이는 방식

1. 한 줄로 정의하면

RAG는 사용자의 질문과 관련된 문서나 데이터를 먼저 검색하고, 그 검색 결과를 LLM의 입력 맥락에 넣어 답변을 생성하는 방식입니다.

Retrieval
필요한 문서나 데이터를 찾아오는 단계입니다.
Generation
찾아온 자료를 참고해 답변을 생성하는 단계입니다.
Grounding
답변이 검색된 근거에 묶여 있도록 만드는 설계입니다.
Hallucination
근거 없이 그럴듯한 내용을 만들어내는 현상입니다.

2. 왜 이 개념이 필요했나

LLM은 훈련된 지식만으로 답할 수 있습니다. 그런데 콘텐츠 서비스에서는 방금 등록된 문서, 내부 공지, 특정 사용자의 문서처럼 모델이 원래 모르는 정보가 중요합니다.

이때 모델을 다시 학습시키는 것은 무겁습니다. 대신 필요한 순간에 관련 문서를 검색해서 프롬프트에 넣어주면, 모델은 외부 데이터를 참고해 답할 수 있습니다.

AWS Bedrock Knowledge Bases 문서에서도 RAG를 데이터 소스의 정보를 활용해 응답의 관련성과 정확도를 높이는 기법으로 설명합니다. 즉 RAG의 목적은 멋진 답변이 아니라 근거 있는 답변입니다.

3. 동작 흐름

1
사용자 질문
예: 이 문서에서 RAG 흐름은 어떻게 설명하나요?
2
관련 문서 검색
콘텐츠, 공지, 설계 문서, FAQ 중 질문과 가까운 자료를 찾습니다.
3
맥락 구성
검색 결과의 제목, 본문 일부, 링크, 작성자, 태그를 프롬프트에 넣습니다.
4
답변 생성
LLM이 검색된 근거를 바탕으로 답변이나 작성안을 만듭니다.

4. 구조를 그림처럼 보면

순서 흐름
1
사용자 질문/작성 요청
2
Retriever가 유사 콘텐츠 top-k 검색
3
RAGContextBuilder가 references와 warnings 구성
4
LLM이 근거 기반 답변 또는 작성안 생성
5
화면에는 답변과 함께 참고 문서 링크 표시

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가 필요한 기능을 하나 떠올릴 수 있는가?

참고한 공식 문서