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)‘**이다.

  1. 검색기 (Retriever): 사용자의 질문과 가장 관련성이 높은 정보를 외부 지식 소스에서 찾아오는 역할.

  2. 생성기 (Generator): 검색된 정보와 사용자의 원본 질문을 함께 입력받아 최종 답변을 만들어내는 LLM.

이 두 단계가 어떻게 유기적으로 작동하는지 그 과정을 자세히 살펴보자.

1단계: 검색 (Retrieval) - 올바른 참고자료 찾기

검색 단계의 목표는 방대한 데이터 속에서 가장 정확하고 유용한 정보를 찾아내는 것이다. 이를 위해 ‘벡터 임베딩’과 ‘벡터 데이터베이스’라는 핵심 기술이 사용된다.

  • 벡터 임베딩 (Vector Embeddings): 컴퓨터가 텍스트의 ‘의미’를 이해하도록 만드는 과정. 모든 텍스트 데이터(문서, 문장, 단어 등)를 의미적으로 유사한 항목들이 서로 가깝게 위치하는 다차원 공간상의 좌표, 즉 **벡터(Vector)**로 변환한다. 예를 들어, ‘사과’와 ‘배’는 ‘자동차’보다 벡터 공간에서 더 가까운 위치에 존재한다. 이 과정을 통해 컴퓨터는 단어의 표면적 형태가 아닌 의미적 유사성을 계산할 수 있게 된다.

  • 벡터 데이터베이스 (Vector Database): 이렇게 변환된 수많은 벡터들을 저장하고, 특정 벡터와 가장 ‘가까운(유사한)’ 벡터들을 초고속으로 검색할 수 있도록 특화된 데이터베이스다. 우리가 가진 모든 지식(PDF, TXT, 웹페이지 등)을 잘게 쪼개어 벡터로 만들고, 이 벡터 DB에 차곡차곡 저장해 두는 것이 RAG 시스템 구축의 첫걸음이다.

검색 과정:

  1. 사용자가 질문을 던진다.

  2. RAG 시스템은 이 질문을 임베딩 모델을 사용해 벡터로 변환한다.

  3. 이 질문 벡터를 가지고 벡터 DB에서 **유사도 검색(Similarity Search)**을 수행한다. 즉, 질문 벡터와 가장 가까운 거리에 있는 데이터 조각(Chunk)들의 벡터를 찾아낸다.

  4. 가장 관련성이 높다고 판단된 상위 몇 개의 데이터 조각을 ‘참고 자료’로 확보한다.

2단계: 증강 생성 (Augmented Generation) - 사실 기반으로 답변하기

검색 단계에서 찾은 ‘참고 자료’를 이제 생성기가 활용할 차례다.

생성 과정:

  1. 사용자의 원본 질문과 검색을 통해 찾아낸 **관련 정보(Context)**를 결합하여 LLM에게 전달할 새로운 프롬프트를 구성한다.

    [프롬프트 예시]
    
    **Context:**
    "RAG(검색 증강 생성)는 2020년 Facebook AI(현 Meta AI)의 Patrick Lewis 등이 발표한 논문 'Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks'에서 처음 제안되었다."
    
    **Question:**
    "RAG 기술은 누가 처음 만들었어?"
    
    위 Context에 근거하여 Question에 답해주세요.
    
  2. **생성기(LLM)**는 이 증강된 프롬프트를 입력받는다.

  3. LLM은 이제 뇌피셜이나 오래된 기억이 아닌, 함께 제공된 **명확한 근거(Context)**를 바탕으로 질문에 대한 답변을 생성한다.

  4. 결과적으로 “RAG 기술은 2020년 Meta AI의 Patrick Lewis와 그의 동료들이 처음 제안했습니다.” 와 같이 사실에 기반한 정확한 답변을 내놓게 된다.

이러한 구조 덕분에 RAG는 답변의 출처를 명시할 수 있어 투명성까지 확보할 수 있다.

3. RAG 시스템 구축하기: 데이터 준비부터 답변 생성까지

RAG 시스템은 크게 두 가지 파이프라인으로 나눌 수 있다. 지식 베이스를 구축하는 **‘인덱싱 파이프라인(오프라인)‘**과 실제 사용자의 질문에 답하는 **‘추론 파이프라인(온라인)‘**이다.

인덱싱 파이프라인 (Indexing Pipeline)

이 단계는 우리의 지식 창고를 만드는 과정이다.

  1. 데이터 로드 (Load): 답변의 근거가 될 원본 문서들(PDF, HTML, Docx, Notion 등)을 불러온다.

  2. 데이터 분할 (Split/Chunk): 불러온 문서를 그대로 사용하기엔 너무 크다. 검색 효율과 정확도를 높이기 위해 의미 있는 단위(문단, 문장 등)로 잘게 쪼갠다. 이 ‘조각(Chunk)‘의 크기를 어떻게 설정하느냐가 RAG 시스템의 성능에 큰 영향을 미친다.

  3. 임베딩 (Embed): 분할된 각 조각들을 임베딩 모델을 통해 벡터로 변환한다.

  4. 저장 (Store): 변환된 벡터와 원본 텍스트 조각을 한 쌍으로 묶어 벡터 데이터베이스에 저장(인덱싱)한다.

추론 파이프라인 (Inference Pipeline)

이 단계는 사용자의 질문에 실시간으로 답변하는 과정이다.

  1. 질문 임베딩 (Embed Query): 사용자의 질문을 인덱싱 때 사용한 것과 동일한 임베딩 모델로 벡터화한다.

  2. 검색 (Retrieve): 이 질문 벡터를 사용해 벡터 DB에서 가장 유사한 데이터 조각(Top-K)들을 검색한다.

  3. 생성 (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가 우리에게 더 정확하고 투명하며 책임감 있는 파트너로 다가오는 미래를 의미한다. 이 핸드북이 그 미래를 이해하고 준비하는 데 훌륭한 안내서가 되기를 바란다.

References

RAG