2025-08-12 22:18
Tags:
RAG 핸드북 LLM의 환각을 잠재우는 비법, A부터 Z까지
대규모 언어 모델(LLM)의 등장은 우리 삶의 많은 부분을 바꾸어 놓았다. 하지만 LLM을 사용하다 보면 종종 치명적인 단점과 마주하게 된다. 바로 ‘환각(Hallucination)’ 현상, 즉 그럴듯한 거짓말을 만들어내는 문제와 **‘오래된 정보(Outdated Knowledge)‘**를 사실인 양 이야기하는 문제다. LLM은 훈련 시점의 데이터로 세상에 대한 지식이 고정되어 있기 때문이다.
이러한 LLM의 본질적인 한계를 극복하기 위해 등장한 기술이 바로 **RAG(Retrieval-Augmented Generation, 검색 증강 생성)**다. RAG는 LLM을 더 똑똑하고, 신뢰할 수 있으며, 유용하게 만드는 가장 현실적이고 강력한 방법으로 주목받고 있다.
이 핸드북은 RAG가 무엇인지, 왜 필요한지, 어떻게 작동하는지, 그리고 어떻게 더 발전하고 있는지 A부터 Z까지 상세하게 설명한다.
1. RAG의 탄생: 왜 LLM에게 ‘오픈북 시험’이 필요한가?
LLM의 작동 방식을 학생에 비유해 보자.
-
일반적인 LLM: 세상의 모든 도서관을 통째로 외워버린 천재 학생. 하지만 시험은 **‘클로즈드북(Closed-book)‘**으로 치러야 한다. 이 학생은 방대한 지식을 바탕으로 대부분의 질문에 훌륭하게 답하지만, 때로는 기억이 왜곡되어 틀린 사실을 진짜처럼 말하거나(환각), 몇 년 전의 낡은 정보로 답할 수 있다.
-
RAG 기반 LLM: 같은 천재 학생이지만, 이번엔 시험장에 **‘오픈북(Open-book)‘**으로 참고 자료를 들고 들어갈 수 있다. 질문을 받으면, 외운 기억에만 의존하는 대신 가장 관련 있는 최신 참고 자료(책, 논문 등)를 빠르게 찾아본다. 그리고 그 정확한 사실에 근거하여 답변을 구성한다. 결과는 훨씬 더 정확하고 신뢰할 수 있다.
이 비유처럼, RAG는 LLM이 답변을 생성하기 전에 외부의 신뢰할 수 있는 지식 소스(Knowledge Base)에서 관련 정보를 검색하고, 이 정보를 ‘참고 자료’로 활용하여 답변의 정확성과 최신성을 극대화하는 기술이다. LLM의 내부 지식(Parametric Knowledge)과 외부 지식(Non-parametric Knowledge)을 결합하는 하이브리드 접근 방식인 셈이다.
2. RAG의 핵심 구조: 검색기(Retriever)와 생성기(Generator)
RAG는 이름 그대로 두 가지 핵심 요소로 구성된다. 바로 **‘검색(Retrieval)‘**과 **‘생성(Generation)‘**이다.
-
검색기 (Retriever): 사용자의 질문과 가장 관련성이 높은 정보를 외부 지식 소스에서 찾아오는 역할.
-
생성기 (Generator): 검색된 정보와 사용자의 원본 질문을 함께 입력받아 최종 답변을 만들어내는 LLM.
이 두 단계가 어떻게 유기적으로 작동하는지 그 과정을 자세히 살펴보자.
1단계: 검색 (Retrieval) - 올바른 참고자료 찾기
검색 단계의 목표는 방대한 데이터 속에서 가장 정확하고 유용한 정보를 찾아내는 것이다. 이를 위해 ‘벡터 임베딩’과 ‘벡터 데이터베이스’라는 핵심 기술이 사용된다.
-
벡터 임베딩 (Vector Embeddings): 컴퓨터가 텍스트의 ‘의미’를 이해하도록 만드는 과정. 모든 텍스트 데이터(문서, 문장, 단어 등)를 의미적으로 유사한 항목들이 서로 가깝게 위치하는 다차원 공간상의 좌표, 즉 **벡터(Vector)**로 변환한다. 예를 들어, ‘사과’와 ‘배’는 ‘자동차’보다 벡터 공간에서 더 가까운 위치에 존재한다. 이 과정을 통해 컴퓨터는 단어의 표면적 형태가 아닌 의미적 유사성을 계산할 수 있게 된다.
-
벡터 데이터베이스 (Vector Database): 이렇게 변환된 수많은 벡터들을 저장하고, 특정 벡터와 가장 ‘가까운(유사한)’ 벡터들을 초고속으로 검색할 수 있도록 특화된 데이터베이스다. 우리가 가진 모든 지식(PDF, TXT, 웹페이지 등)을 잘게 쪼개어 벡터로 만들고, 이 벡터 DB에 차곡차곡 저장해 두는 것이 RAG 시스템 구축의 첫걸음이다.
검색 과정:
-
사용자가 질문을 던진다.
-
RAG 시스템은 이 질문을 임베딩 모델을 사용해 벡터로 변환한다.
-
이 질문 벡터를 가지고 벡터 DB에서 **유사도 검색(Similarity Search)**을 수행한다. 즉, 질문 벡터와 가장 가까운 거리에 있는 데이터 조각(Chunk)들의 벡터를 찾아낸다.
-
가장 관련성이 높다고 판단된 상위 몇 개의 데이터 조각을 ‘참고 자료’로 확보한다.
2단계: 증강 생성 (Augmented Generation) - 사실 기반으로 답변하기
검색 단계에서 찾은 ‘참고 자료’를 이제 생성기가 활용할 차례다.
생성 과정:
-
사용자의 원본 질문과 검색을 통해 찾아낸 **관련 정보(Context)**를 결합하여 LLM에게 전달할 새로운 프롬프트를 구성한다.
[프롬프트 예시] **Context:** "RAG(검색 증강 생성)는 2020년 Facebook AI(현 Meta AI)의 Patrick Lewis 등이 발표한 논문 'Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks'에서 처음 제안되었다." **Question:** "RAG 기술은 누가 처음 만들었어?" 위 Context에 근거하여 Question에 답해주세요.
-
**생성기(LLM)**는 이 증강된 프롬프트를 입력받는다.
-
LLM은 이제 뇌피셜이나 오래된 기억이 아닌, 함께 제공된 **명확한 근거(Context)**를 바탕으로 질문에 대한 답변을 생성한다.
-
결과적으로 “RAG 기술은 2020년 Meta AI의 Patrick Lewis와 그의 동료들이 처음 제안했습니다.” 와 같이 사실에 기반한 정확한 답변을 내놓게 된다.
이러한 구조 덕분에 RAG는 답변의 출처를 명시할 수 있어 투명성까지 확보할 수 있다.
3. RAG 시스템 구축하기: 데이터 준비부터 답변 생성까지
RAG 시스템은 크게 두 가지 파이프라인으로 나눌 수 있다. 지식 베이스를 구축하는 **‘인덱싱 파이프라인(오프라인)‘**과 실제 사용자의 질문에 답하는 **‘추론 파이프라인(온라인)‘**이다.
인덱싱 파이프라인 (Indexing Pipeline)
이 단계는 우리의 지식 창고를 만드는 과정이다.
-
데이터 로드 (Load): 답변의 근거가 될 원본 문서들(PDF, HTML, Docx, Notion 등)을 불러온다.
-
데이터 분할 (Split/Chunk): 불러온 문서를 그대로 사용하기엔 너무 크다. 검색 효율과 정확도를 높이기 위해 의미 있는 단위(문단, 문장 등)로 잘게 쪼갠다. 이 ‘조각(Chunk)‘의 크기를 어떻게 설정하느냐가 RAG 시스템의 성능에 큰 영향을 미친다.
-
임베딩 (Embed): 분할된 각 조각들을 임베딩 모델을 통해 벡터로 변환한다.
-
저장 (Store): 변환된 벡터와 원본 텍스트 조각을 한 쌍으로 묶어 벡터 데이터베이스에 저장(인덱싱)한다.
추론 파이프라인 (Inference Pipeline)
이 단계는 사용자의 질문에 실시간으로 답변하는 과정이다.
-
질문 임베딩 (Embed Query): 사용자의 질문을 인덱싱 때 사용한 것과 동일한 임베딩 모델로 벡터화한다.
-
검색 (Retrieve): 이 질문 벡터를 사용해 벡터 DB에서 가장 유사한 데이터 조각(Top-K)들을 검색한다.
-
생성 (Generate): 검색된 데이터 조각들을 원본 질문과 함께 프롬프트로 구성하여 LLM에 전달하고, 최종 답변을 생성한다.
4. 심화 1: RAG vs 파인튜닝, 무엇이 다를까?
LLM을 특정 목적에 맞게 최적화하는 또 다른 대표적인 방법으로 **‘파인튜닝(Fine-tuning)‘**이 있다. RAG와 파인튜닝은 상호 보완적일 수 있지만, 근본적인 목적과 방식에서 차이가 있다.
구분 | RAG (검색 증강 생성) | 파인튜닝 (Fine-tuning) |
---|---|---|
목적 | 사실적 지식 제공, 최신 정보 반영, 환각 감소 | 모델의 스타일, 톤, 특정 작업 수행 능력 학습 |
지식 소스 | 외부 벡터 데이터베이스 (동적) | 내부 모델의 가중치(weights) (정적) |
지식 업데이트 | DB에 새 정보 추가/삭제 (간단하고 빠름) | 새로운 데이터로 모델 재학습 (비용과 시간 소모) |
비용 | 상대적으로 저렴 (주로 DB 운영 비용) | 높은 컴퓨팅 비용 발생 |
투명성 | 답변의 근거(출처) 제시 가능 | 판단 근거를 알기 어려움 (블랙박스) |
비유 | 전문가가 최신 논문을 참고하여 답변 | 학생이 특정 분야를 전공하여 전문가가 됨 |
언제 무엇을 사용해야 할까?
-
RAG: 최신 제품 정보, 사내 규정, 법률 자문 등 지속적으로 변하는 사실에 기반한 질의응답 시스템에 이상적.
-
파인튜닝: 특정 인물(예: 셰익스피어)의 문체를 흉내 내거나, 복잡한 지시를 특정 형식에 맞춰 수행하도록 모델의 근본적인 행동 양식을 바꾸고 싶을 때 적합.
최상의 결과를 위해 **두 가지를 함께 사용(Hybrid Approach)**하기도 한다. 예를 들어, 특정 도메인의 용어와 대화 스타일을 학습시키기 위해 파인튜닝을 먼저 진행한 후, RAG를 통해 최신 사실 정보를 제공하는 방식이다.
5. 심화 2: 더 똑똑한 RAG를 위한 고급 기법들
기본적인 RAG를 넘어, 더 정교하고 정확한 답변을 얻기 위한 다양한 고급 기법들이 연구되고 있다.
1. 검색 전 (Pre-retrieval)
질문 자체를 더 검색하기 좋은 형태로 가공하는 단계.
-
질의 확장 (Query Expansion): 사용자의 질문에 동의어나 관련 용어를 추가하여 검색 범위를 넓힌다. ‘RAG 문제점’ → ‘RAG 문제점, 한계, 단점’
-
HyDE (Hypothetical Document Embeddings): 사용자의 질문에 대해 LLM이 먼저 **‘가상의 이상적인 답변’**을 생성한다. 그리고 실제 질문 대신 이 가상 답변을 임베딩하여 검색에 사용한다. 이는 종종 더 풍부한 의미를 담고 있어 검색 정확도를 높여준다.
2. 검색 중 (Retrieval)
더 나은 검색 결과를 얻기 위한 전략.
- 하이브리드 검색 (Hybrid Search): 키워드 기반의 전통적인 검색(e.g., BM25)과 의미 기반의 벡터 검색을 결합하는 방식. 키워드의 정확성과 벡터 검색의 의미적 유연성을 모두 잡을 수 있다.
3. 검색 후 (Post-retrieval)
검색된 결과를 LLM에 넣기 전에 한 번 더 정제하는 단계.
-
재순위화 (Re-ranking): 1차적으로 빠르게 검색된 상위 N개의 문서들을 대상으로, 더 성능이 좋지만 느린 모델(e.g., Cross-encoder)을 사용해 질문과의 관련도를 다시 정밀하게 계산하여 순위를 재조정한다. 이를 통해 가장 관련성 높은 문서를 맨 앞으로 보낼 수 있다.
-
문맥 압축 (Context Compression): 검색된 문서 조각에서 불필요한 문장이나 단어를 제거하고 핵심 정보만 남겨 LLM의 한정된 컨텍스트 윈도우(Context Window)를 효율적으로 사용한다.
6. RAG의 도전과제와 미래
RAG는 강력하지만 여전히 해결해야 할 과제들이 존재한다.
-
검색 품질의 한계: “Garbage In, Garbage Out.” 검색된 정보의 품질이 낮으면 최종 답변의 품질도 낮아진다. 최적의 데이터 분할(Chunking) 전략을 찾는 것과 검색 정확도를 높이는 것이 여전히 중요한 연구 주제.
-
‘중간 분실(Lost in the Middle)’ 문제: LLM이 긴 컨텍스트의 중간에 있는 정보를 무시하는 경향. 재순위화 등을 통해 가장 중요한 정보를 앞이나 뒤로 배치하는 노력이 필요.
-
복잡한 평가: RAG 시스템의 성능은 최종 답변뿐만 아니라 검색 단계의 성능(정확률, 재현율)까지 함께 평가해야 하므로 복잡하다.
미래의 RAG는 더욱 발전된 형태로 진화할 것이다.
-
에이전트 RAG (Agentic RAG): 단 한 번의 검색으로 끝나는 것이 아니라, 스스로 판단하여 여러 단계의 검색, 추론, 도구 사용을 반복하며 복잡한 질문을 해결하는 자율적인 에이전트 형태로 발전.
-
멀티모달 RAG (Multi-modal RAG): 텍스트를 넘어 이미지, 오디오, 비디오 등 다양한 형태의 데이터를 검색하고 이해하여 답변을 생성.
-
그래프 RAG (Graph RAG): 단순한 텍스트 덩어리가 아닌, 지식 그래프(Knowledge Graph)를 활용하여 데이터 간의 관계를 파악하고 더 깊이 있는 추론을 수행.
결론: 신뢰할 수 있는 AI로 나아가는 길
RAG는 LLM의 ‘환각’이라는 고질병을 치료하고, 세상의 최신 지식을 실시간으로 연결해 주는 가장 효과적인 처방전이다. 이는 LLM을 단순한 ‘언어 생성기’에서 신뢰할 수 있는 ‘지식 응답기’로 격상시키는 핵심 기술이라 할 수 있다.
물론 아직 가야 할 길이 남았지만, RAG는 이미 수많은 기업과 개발자들이 더 안전하고 유용한 AI 서비스를 만드는 데 필수적인 도구로 자리 잡았다. RAG의 발전은 곧 AI가 우리에게 더 정확하고 투명하며 책임감 있는 파트너로 다가오는 미래를 의미한다. 이 핸드북이 그 미래를 이해하고 준비하는 데 훌륭한 안내서가 되기를 바란다.