🤖 AI

[토이 PJT #1] RAG란? - 검색해서 답하는 AI 만들기

elffffy 2026. 6. 25. 22:35

아플 땐 병원을 가시오.

"몸이 아프다" 하면 병원을 가죠.

기침이랑 열이 난다 → 내과
귀가 좀 아프다 → 이비인후과
충치 때문에 아프다 → 치과
넘어져서 골절됐다 → 정형외과

증상에 따라 우리는 다른 원을 찾아갑니다.

 

이번에 만들어본 토이 프로젝트도 똑같은 구조입니다!

영화를 주제로 질문이 들어오면,

AI가 자동으로 질문 유형을 판단해서

네 가지 처리 방식 중 하나로 보내주는 구조예요.

네 가지 중 오늘 집중적으로 다룰 건 RAG입니다!

지금부터 알아보겠습니다!


1️⃣ RAG가 뭔가요?

Retrieval-Augmented Generation의 줄임말로,
관련 문서를 먼저 검색해온 뒤, 그 내용을 바탕으로 AI가 답변을 생성하는 방식

 

🤷‍♂️ 그럼, ChatGPT나 Cluade랑 똑같은 거 아닌가? 하는 생각이 들 수도 있지만,,,

 

아닙니다!

 

위와 같은 LLM은 학습 데이터를 기반으로 답변을 하기 때문에,

학습 데이터에 없는 정보는 그럴 듯하게 지어내서 답을 제공해주는 경우도 있습니다..

 

RAG는 이 할루시네이션 문제를 이렇게 해결합니다!

➡️ 답하기 전에 먼저 관련 문서를 찾고, 그 문서를 참고해서 답하자.

얼마나 똑똑하게요,,, 이 녀석은 헛소리 하지 않는다는 뜻이죠.

??: 헛소리 하지마 임마 / RAG:네, 형.

크게 두 단계로 나뉩니다.

  1. Retrieval (검색) : 사용자 질문과 관련된 문서 조각을 벡터 DB에서 꺼내온다.
  2. Generation (생성) : 꺼내온 문서를 context로 넣어서 LLM이 답변을 만든다.

이러한 단계를 통해 신뢰할 수 있는 답변을 사용자에게 제공하게 됩니다!

 

다음으로,

RAG의 흐름에 대해 한 번 살펴볼까요?


2️⃣ RAG 흐름 살펴보기

✨ 1단계 : 문서 준비 · 청킹

AI가 참고할 문서를 준비하는 단계입니다!

 

PDF, 웹페이지, DB 등 다양한 소스에서 텍스트를 가져온 뒤, 이를 적당한 크기로 잘라냅니다.

이 과정을 청킹(Chunking) 이라고 합니다!

 

텍스트를 자를 때,

너무 길면 하나의 벡터에 너무 많은 의미가 섞여 핵심을 잃고,

너무 짧으면 문장이 끊겨서 맥락이 사라지기 때문에

적절한 단위로 나누는 게 중요합니다.

🤖 실무에서는 보통100~500 토큰 단위로 자르고, 청크 간에 약간 겹치게 설정해서 문장이 끊기는 걸 방지하기도 해요!

✨ 2단계 : 임베딩 · 벡터 저장

잘라낸 텍스트 조각들을 숫자 벡터로 변환해야 합니다.

이 과정을 임베딩(Embedding) 이라고 합니다!

 

의미가 비슷한 텍스트는 벡터 공간에서 가까이 위치하게 되는데,

변환된 벡터는 Vector DB에 저장해두고, 나중에 빠르게 검색할 수 있도록 준비합니다.

Vector DB/https://weaviate.io/assets/images/vector-search-c9852b39f62abb6122b2123e6d5f7ed5.jpg

 


✨ 3단계 : 검색

사용자의 질문이 들어오면,

그 질문도 동일한 방식으로 벡터로 변환합니다.

 

그리고 Vector DB에서 이 벡터와 가장 유사한 문서 조각들을 찾아냅니다.

이 과정이 바로 RAG의 "R"을 담당하고 있는 Retrieval 검색입니다!


✨ 4단계 : 생성

검색된 문서 조각들을 사용자의 질문과 함께 LLM에게 전달합니다.

LLM은 이 자료를 바탕으로 답변을 생성하게 됩니다!

 

이 과정이 바로 RAG의 "G"를 담당하고 있는 Generation 생성입니다!


무엇이든 아는 척 답하는 AI가 아니라,

관련 문서를 찾아보고 그 범위 안에서만 답하게 만드는 것!

 

그것이 바로 RAG의 핵심입니다.

 

다음 글에서는 텍스트가 아닌 이미지를 이해하는 AI, VLM을 다루도록 하겠습니다!

 

이상 끝!