RAG란
RAG는 검색 증강 생성(Retrieval-Augmented Generation)의 약자로, 정보 검색(Retrieval)과 생성(Generation)을 결합한 AI 모델입니다.

왜 RAG를 사용하는가
기존의 LLM(Large Language Model)은 학습된 데이터만을 기반으로 답변을 생성하는 방식이었습니다. 하지만 이 방식에는 다음과 같은 한계가 존재합니다.
- 최신 정보 반영이 어려움
다량의 실시간 정보를 LLM에 학습시켜 새로운 정보를 답변에 반영하는 데는 한계가 있습니다.
반면, RAG는 외부 데이터베이스에서 최신 정보를 검색하여 활용한다면, 항상 최신 상태의 답변을 제공할 수 있습니다. - 할루시네이션(Hallucination) 문제
LLM은 종종 사실과 다른 정보를 생성하는 문제(할루시네이션; 환각)이 발생할 수 있습니다.
하지만, RAG는 검색된 문서를 기반으로 답변을 생성하므로, 잘못된 정보가 생성될 가능성을 줄일 수 있습니다. - 너무 일반적인 정보 제공
기존 LLM은 일반적인 지식을 기반으로 답변을 생성하는 경우가 많아, 특정 산업(의료, 법률, 금융 등)에 맞는 전문적인 정보를 제공하기 어렵습니다. 그러나, RAG는 도메인 특화된 문서를 검색하여 활용할 수 있어, 보다 정확하고 산업 맞춤형 답변 제공이 가능합니다.
RAG의 동작과정
RAG(Retrieval-Augmented Generation)는 정보를 검색하고 생성하는 과정을 거칩니다. 이 과정은 크게 전처리(Pre-processing) 단계와 실시간 검색 및 생성 단계로 나눌 수 있습니다.
1. 전처리(Pre-processing) 단계
문서를 벡터화하여 데이터베이스에 저장하는 과정입니다.
① Document Load (문서 로드)
- 텍스트, 오디오 등 다양한 형태의 데이터를 불러옵니다.
- 문서, PDF, 웹페이지, 데이터베이스 등의 정보를 활용할 수 있습니다.
② Text Split (텍스트 분할)
- 불필요한 부분을 제거하고, 관련성이 높은 단락을 추출합니다.
- 사람이 목차, 키워드, 마인드맵을 활용해 정보를 구조화하는 것과 비슷한 개념입니다.
- AI가 한 번에 이해할 수 있도록 맥락의 크기(Context Length)를 조정합니다.
③ Embedding (벡터 변환)
- 텍스트를 컴퓨터가 이해할 수 있도록 숫자로 변환합니다.
- 데이터의 유사도를 측정하기 위해 고차원 벡터 공간으로 매핑됩니다.
- 예: "새콤달콤" → [새콤: 0.7, 달콤: 0.3]
- OpenAI의 경우 1536차원의 임베딩 벡터를 사용합니다.
④ DB(VectorDB) 저장
- 매번 Load, Split, Embedding을 수행하면 비효율적이므로, 벡터값을 벡터 데이터베이스(Vector DB)에 저장합니다.
- 이후 검색 요청이 들어오면 벡터 검색을 통해 빠르게 관련 정보를 찾아 반환할 수 있습니다.
2. 실시간 검색 및 생성 단계
사용자의 질문을 입력받아 적절한 답변을 생성하는 과정입니다.
① 사용자 입력 (Query 입력)
- 사용자가 질문을 입력합니다.
- 예: "쿠버네티스 CKA 인증 시험이 뭐야?"
② 검색 (Retrieval - Vector Search)
- 입력된 질문을 벡터 변환(Embedding) 후,
- 벡터 데이터베이스(VectorDB)에서 유사한 임베딩 벡터를 검색하여 관련 문서를 찾습니다.
③ 생성 (Generation - LLM Processing)
- 검색된 문서를 LLM(Large Language Model)에 입력하여, 답변을 생성합니다.
- 기존 LLM이 단순히 학습된 데이터만 사용했다면, RAG는 검색한 최신 정보를 활용하여 답변을 보강합니다.
④ 최종 응답 출력
- 생성된 답변을 사용자에게 출력합니다.
- 예: "CKA(Certified Kubernetes Administrator)는 쿠버네티스 관리자를 위한 인증 시험으로, 실습 기반 평가 방식입니다."
참고자료
728x90