contents
검색 증강 생성(Retrieval-Augmented Generation, RAG) 은 거대 언어 모델(LLM)이 응답을 생성하기 전에 외부의 최신 지식 소스에 연결하여 그 능력을 향상시키는 강력한 기술입니다.
마치 닫힌 책 시험과 오픈북 시험의 차이와 같습니다. 일반적인 LLM은 훈련된 정보(자신의 "기억")에만 의존하는 닫힌 책 시험을 치릅니다. 반면 RAG 기반 LLM은 오픈북 시험을 치르는 것과 같습니다. 질문에 답하기 직전에 교과서(지식 베이스)에서 관련 사실을 찾아볼 수 있습니다.
RAG가 해결하는 핵심 문제점
RAG는 표준 LLM의 몇 가지 근본적인 한계를 해결하기 위해 설계되었습니다.
-
지식 단절 (Knowledge Cutoff): LLM은 훈련 데이터 수집이 끝난 이후에 발생한 사건에 대해서는 알지 못합니다. 2023년까지 훈련된 모델은 2024년 슈퍼볼 우승팀을 알려줄 수 없습니다.
-
환각 (Hallucinations): LLM은 답을 모를 때, 그럴듯하게 들리지만 사실이 아닌 답변을 지어내는 경향이 있습니다.
-
특정 도메인 지식 부족: 일반적인 인터넷 데이터로 훈련된 LLM은 회사의 내부 정책, 최신 제품 사양, 또는 비공개 문서의 특정 세부 사항을 알지 못합니다.
-
출처 추적 불가: 표준 LLM은 출처를 인용할 수 없어 답변을 검증하기 어렵습니다.
RAG는 쿼리가 발생하는 바로 그 순간에 모델을 사실적이고 시의적절하며 관련성 있는 데이터에 근거하게 함으로써 이러한 모든 문제를 직접적으로 완화합니다.
RAG의 작동 방식: 상세 워크플로우 🧠
RAG 시스템은 오프라인 인덱싱 단계와 온라인 검색 및 생성 단계의 두 가지 주요 단계로 작동합니다.
1단계: 인덱싱 (지식 라이브러리 준비) 📚
이는 지식 베이스에 대해 한 번 수행하는 설정 과정입니다.
-
데이터 로드: LLM이 알기를 원하는 문서 모음(회사의 위키, 제품 매뉴얼, 법률 계약서, 과학 논문 모음 등)에서 시작합니다.
-
청킹 (Chunking): 문서를 더 작고 관리하기 쉬운 조각(예: 단락 또는 문장)으로 나눕니다. 전체 긴 문서가 아닌 가장 관련성 높은 작은 정보 조각을 검색할 것이기 때문에 이 과정은 매우 중요합니다.
-
임베딩 (Embedding): 각 조각을 임베딩 모델에 입력합니다. 이 모델은 텍스트 조각을 그 의미적 의미를 포착하는 수치적 벡터(숫자 목록)로 변환합니다.
-
인덱싱 (Indexing): 이 벡터들을 전문 벡터 데이터베이스에 로드합니다. 이 데이터베이스는 유사한 벡터를 매우 빠르게 검색할 수 있는 인덱스(일반적으로 HNSW와 같은 알고리즘 사용)를 생성합니다.
이 단계가 끝나면, 모든 정보 조각이 벡터로 표현된 검색 가능한 지식 라이브러리가 생성됩니다.
2단계: 검색 및 생성 (질문에 답변하기) 🔍
이는 사용자가 쿼리를 제출할 때 실시간으로 발생하는 과정입니다.
-
사용자 쿼리: 사용자가 질문을 하면서 프로세스가 시작됩니다(예: "우리 회사의 육아휴직 정책은 무엇인가요?").
-
쿼리 임베딩: 사용자의 질문이 인덱싱 단계에서 사용된 _동일한 임베딩 모델_을 사용하여 벡터로 변환됩니다.
-
관련 컨텍스트 검색: 시스템이 벡터 검색을 수행합니다. 쿼리 벡터를 사용하여 벡터 데이터베이스에서 가장 유사한 벡터를 가진 문서 조각들을 찾습니다. 가장 관련성이 높은 상위 k개의 조각(예: 상위 3개 또는 5개)을 검색합니다.
-
프롬프트 증강: 이것이 핵심적인 "증강" 단계입니다. 검색된 텍스트 조각들을 원래의 사용자 쿼리와 결합하여 새롭고 확장된 프롬프트를 만듭니다. 이 프롬프트는 LLM에게 지시하도록 신중하게 구조화됩니다. 예를 들면 다음과 같습니다.
"컨텍스트: [여기에 육아휴직 정책에 대해 검색된 텍스트가 들어갑니다...]
위에 제공된 컨텍스트를 바탕으로 다음 질문에 답하세요: 우리 회사의 육아휴직 정책은 무엇인가요?"
-
응답 생성: 이 최종적으로 증강된 프롬프트가 LLM에 전송됩니다. 이제 LLM은 질문에 정확하게 답하는 데 필요한 모든 구체적이고 사실적인 정보를 갖게 됩니다. 제공된 컨텍스트에 근거하여 응답을 생성하며, 종종 사용한 출처를 인용하기도 합니다.
RAG 시스템의 핵심 구성 요소
-
지식 베이스: 정보의 원천 (PDF, 웹사이트, 데이터베이스).
-
임베딩 모델: 텍스트를 벡터로 변환하는 모델 (예: OpenAI, Cohere 또는 오픈소스 모델).
-
벡터 데이터베이스: 벡터를 효율적으로 저장하고 검색하기 위한 전문 데이터베이스 (예: Pinecone, Weaviate, Milvus, Chroma).
-
LLM (생성기): 증강된 프롬프트를 기반으로 답변을 생성하는 최종 언어 모델 (예: Gemini, GPT-4).
RAG가 강력한 이유 ✅
-
환각 감소: 사실적인 컨텍스트를 제공함으로써 모델이 사실을 지어내는 것을 방지합니다.
-
항상 최신 상태 유지: 모델의 지식을 업데이트하려면 벡터 데이터베이스의 문서를 업데이트하기만 하면 됩니다. 비싸고 시간이 많이 걸리는 모델 재훈련이 필요 없습니다.
-
특정 도메인 전문성: 범용 LLM이 특정 비공개 데이터에 대한 전문가가 될 수 있게 합니다.
-
비용 효율적: 새로운 데이터로 LLM 전체를 파인튜닝하는 것은 매우 비쌉니다. RAG는 지식을 보강하는 훨씬 저렴하고 빠른 방법을 제공합니다.
-
추적성 제공: 어떤 조각이 검색되었는지 알 수 있으므로 LLM 답변의 출처를 인용할 수 있어 신뢰도와 검증 가능성을 높입니다.
references