검색 증강 생성(RAG)의 개념과 구조

1. ChatGPT 이후, 챗봇은 어떻게 달라졌나?

ChatGPT가 등장하면서 많은 사람들의 관심은 '나만의 챗봇을 만들 수 있을까?'라는 질문으로 옮겨갔습니다. 그런데 막상 만들려고 하면, 단순히 프롬프트만으로는 한계가 느껴지고, 어느 순간 '검색 증강 생성(RAG)'이라는 개념과 마주하게 됩니다. 이 RAG라는 구조가 무엇이며, 왜 중요한지 하나씩 살펴보겠습니다.
기존의 챗봇은 대부분 시나리오 기반으로 작동했습니다. 예를 들어, 사용자가 특정 질문을 하면 미리 정해놓은 시나리오 흐름에 따라 응답하는 방식이죠. 반면 ChatGPT 같은 최신 챗봇은 자연어로 된 질문에서 의도를 파악하고 그에 맞는 답변을 생성합니다. 바로 이 점이 기존 챗봇과 가장 큰 차이라고 할 수 있습니다.

2. RAG란 무엇인가?

핵심은 ‘내 데이터로 답변하기’ GPT 모델은 인터넷 데이터를 기반으로 학습되었기 때문에, 특정 기업 내부 문서나 교재 같은 개인화된 정보에는 약합니다. 이럴 때 필요한 방식이 바로 '검색 증강 생성(RAG)'입니다. 내가 올린 데이터를 검색하고, 그 검색 결과를 바탕으로 답변을 생성하는 구조죠.
RAG는 다음과 같은 흐름으로 작동합니다. 사용자의 질문이 들어오면, 우선 그 질문을 ‘임베딩’이라는 과정을 통해 벡터로 변환합니다. 그리고 벡터 데이터베이스에 저장된 문서들과 비교하여 가장 유사한 내용을 찾아냅니다. 이렇게 검색된 내용을 GPT 같은 언어 모델에게 질문과 함께 전달하면, 모델은 이 정보를 바탕으로 적절한 답변을 생성합니다.

3. RAG 구조의 핵심 구성요소

RAG 구조에는 다음과 같은 주요 구성요소들이 있습니다.
첫째, 문서 가공 단계입니다. 우리가 사용하는 문서들(PDF, DOCX, HTML 등)은 그대로 사용되기도 하지만, 대부분 토큰 제한 문제로 ‘나누기’ 작업이 필요합니다. 일반적으로는 문서의 주제 기준으로 나누는 것이 가장 범용적입니다. 예를 들어 계약서라면 제목, 부제목, 주요 조항 등으로 나눌 수 있겠죠.
둘째, 임베딩 모델입니다. 임베딩이란 텍스트를 숫자로 변환하는 과정입니다. 예를 들어 ‘사과’라는 단어는 사람이 보기에 빨갛고 둥글며 맛있다는 속성을 갖지만, 컴퓨터에게는 그런 의미가 없기 때문에 수치로 의미를 부여해야 합니다. 임베딩 모델은 바로 이 역할을 하며, 대표적으로 OpenAI의 text-embedding-ada-002가 널리 사용됩니다.
셋째, 벡터 데이터베이스입니다. 임베딩된 문서들을 저장하고, 질문이 들어왔을 때 가장 유사한 임베딩 벡터를 찾아주는 저장소입니다. 이곳에 저장된 각 텍스트는 특정 좌표에 위치한 하나의 ‘점’이라고 생각하면 됩니다.
넷째, 언어 모델입니다. 최종적으로 검색된 데이터를 바탕으로 답변을 생성하는 모델이며, GPT-4나 Claude 등 다양한 모델이 사용될 수 있습니다.
다섯째, 프롬프트 구성입니다. 언어 모델에 질문과 검색 결과를 어떻게 전달하느냐도 품질에 큰 영향을 줍니다. 검색 결과가 부족할 경우 “정보가 부족해 답변할 수 없습니다”와 같은 안내 메시지를 포함하는 것도 하나의 전략입니다.

4. 임베딩은 어떻게 작동하는가?

임베딩은 단어, 문장, 문서 등 다양한 단위를 벡터 형태로 변환하는 과정입니다. 각 벡터는 수백 개의 숫자로 구성되며, 서로 의미상 가까운 단어일수록 비슷한 위치에 위치하게 됩니다. 예를 들어 ‘나는 사과를 먹는다’라는 문장을 임베딩하면, 벡터 데이터베이스 안에서 ‘사과’, ‘먹는다’와 관련된 정보 근처에 위치하게 됩니다.
검색 시에는 사용자 질문도 같은 방식으로 임베딩됩니다. 그러면 질문의 벡터와 가장 가까운 문서 벡터를 찾아낼 수 있게 되는 것이죠. 이를 통해 AI는 실제로 의미상 유사한 정보를 바탕으로 응답하게 됩니다.

5. 프롬프트, 토큰, 검색 결과 수…

변수는 많지만 핵심은 일관성 RAG 구조에서 중요한 것은 구성요소 간의 일관성입니다. 예를 들어, 문서는 단락 단위로 나누었는데 프롬프트는 전체 문서를 기대하고 있다면 좋은 결과를 얻기 어렵습니다. 또 벡터 검색에서 가져오는 문서 수(TOP K)도 너무 많거나 적으면 모델의 응답 품질에 영향을 줄 수 있습니다.
프롬프트는 사용자의 질문과 함께 검색된 문서를 어떤 방식으로 붙여서 모델에게 전달할지에 대한 설계입니다. 이 프롬프트 설계에 따라 같은 검색 결과도 전혀 다른 응답이 나올 수 있기 때문에 매우 중요합니다.

6. 챗봇 개발에 RAG가 필요한 이유

기업 내부 문서, 교육 자료, 매뉴얼, 상담 기록 등 개인화된 정보에 기반한 답변을 제공하고 싶을 때, 기존의 GPT 모델만으로는 한계가 있습니다. 이럴 때 RAG 구조는 큰 힘을 발휘합니다. 특히 정확도가 중요한 교육, 의료, 법률 등의 분야에서 매우 유용하게 사용될 수 있습니다.

결론적으로, RAG는 단순한 검색과 답변 생성의 결합이 아니라, 사용자 맞춤형 AI 챗봇을 만들기 위한 핵심 기술입니다. 구조를 제대로 이해하고 설계한다면, GPT보다 더 정교하고 신뢰할 수 있는 챗봇을 누구나 만들 수 있게 되는 것입니다.