Skip to content

RAG: 검색 증강 생성

서문

왜 ChatGPT는 가끔 "그럴듯하게 헛소리"를 할까요? 대형 언어 모델의 지식은 학습 데이터에서 비롯되지만, 학습 데이터에는 마감 시한이 있고 회사 내부 문서도 포함되어 있지 않습니다. RAG(Retrieval-Augmented Generation, 검색 증강 생성)는 이 문제를 해결하는 핵심 기술입니다——AI가 답변하기 전에 먼저 "자료를 찾아보게" 하는 것입니다.

이 글에서 무엇을 배울 수 있나요?

이 장을 마치면 다음을 얻을 수 있습니다:

  • 핵심 개념 이해: RAG가 무엇인지, 왜 필요한지, 그리고 대형 모델의 "환각" 문제를 어떻게 해결하는지 이해
  • 전체 흐름 인지: 문서 로딩, 청크 분할, 벡터화부터 검색, 생성까지의 엔드투엔드 흐름 파악
  • 기술 선택 능력: 다양한 청크 전략, 검색 방법의 장단점을 이해하고 상황에 맞게 선택
  • 아키텍처 진화 관점: RAG가 Naive에서 Advanced, Modular로 진화하는 경로 이해
  • 실전 의사 결정 능력: 언제 RAG를 사용하고 언제 파인튜닝을 사용할지 판단
내용핵심 개념
제1장RAG 기본 흐름인덱싱, 검색, 생성 3단계
제2장텍스트 청크 전략고정 청크, 의미적 청크, 재귀적 청크
제3장검색 기술벡터 검색, 키워드 검색, 하이브리드 검색
제4장아키텍처 진화Naive RAG → Advanced RAG → Modular RAG
제5장RAG vs 파인튜닝두 가지 방안의 적용 시나리오 비교

0. 전체 그림: 왜 대형 모델은 "자료를 찾아봐야" 할까?

당신이 수많은 책을 읽은 박식한 교수라고 상상해 보세요. 하지만 누군가 "어제 회사 매출 데이터가 얼마인가요?"라고 물으면 당신은 대답할 수 없을 것입니다——왜냐하면 이 정보는 당신이 읽은 책에 없기 때문입니다.

대형 언어 모델도 똑같은 딜레마에 직면합니다:

  • 지식에 마감 시한이 있음: GPT-4의 학습 데이터는 특정 시점까지이며, 그 이후의 일은 알지 못함
  • 비공개 지식 부족: 회사 내부 문서, 제품 매뉴얼, 고객 데이터——모델이 본 적 없는 정보
  • 환각 발생 가능성: 모델이 답변을 확신하지 못할 때, 그럴듯해 보이는 답변을 "날조"하는 경향

RAG의 핵심 아이디어

RAG의 해결책은 매우 직관적입니다: 모델이 답변하기 전에 관련 참고 자료를 먼저 찾아주는 것. 마치 오픈북 시험처럼——모든 지식을 기억할 필요 없이, 어디서 어떻게 찾을지만 알면 됩니다.

RAG = 검색(Retrieval) + 증강(Augmented) + 생성(Generation)


1. RAG 기본 흐름: 인덱싱, 검색, 생성

RAG의 작업 흐름은 두 단계로 나눌 수 있습니다: 오프라인 인덱싱온라인 쿼리.

오프라인 단계는 도서관의 목록 작업과 같습니다——모든 책을 분류, 번호 매기기, 진열하여 나중에 찾기 쉽게 합니다. 온라인 단계는 독자가 도서관에 자료를 찾으러 오는 과정입니다——질문에 따라 관련 책을 찾고 정보를 종합하여 답변을 제공합니다.

选择问题:
💬
用户提问
我们公司的年假政策是什么?
🔍
语义检索
📋
上下文组装
🤖
LLM 生成
返回结果
用户提问 — 详细说明
用户向系统提出一个自然语言问题。这个问题会被转化为向量表示,用于后续的语义检索。
1 / 5

세 가지 핵심 단계

  1. 인덱싱 단계(Indexing): 원본 문서를 로딩, 정리, 청크 분할한 후 임베딩 모델을 통해 벡터로 변환하여 벡터 데이터베이스에 저장합니다. 이는 일회성 준비 작업입니다.
  2. 검색 단계(Retrieval): 사용자 질문 시, 질문도 벡터로 변환하여 벡터 데이터베이스에서 가장 유사한 문서 청크를 검색합니다.
  3. 생성 단계(Generation): 검색된 문서 청크와 사용자 질문을 함께 Prompt로 조합하여 대형 모델에 전달, 최종 답변을 생성합니다.
단계입력출력핵심 기술
인덱싱원본 문서벡터 데이터베이스텍스트 청크 분할, 임베딩 모델
검색사용자 질문Top-K 문서 청크벡터 유사도, 재정렬
생성질문 + 컨텍스트최종 답변Prompt 엔지니어링, LLM

2. 텍스트 청크 분할: 코끼리를 냉장고에 넣기

텍스트 청크 분할은 RAG에서 가장 간과되기 쉽지만 효과에 가장 큰 영향을 미치는 단계입니다. 왜 청크 분할이 필요한가? 대형 모델의 컨텍스트 윈도우는 제한되어 있기 때문에 책 전체를 넣을 수 없습니다. 더 중요한 것은 청크 분할의 품질이 검색 품질을 직접 결정한다는 점입니다.

도서관에서 책의 특정 지식을 찾는다고 상상해 보세요. 책 전체가 하나의 "청크"라면 검색해도 소용없습니다——여전히 책 전체를 뒤져야 합니다. 하지만 장이나 단락별로 청크를 나누면 필요한 내용을 정확히 찾을 수 있습니다.

输入文本
固定大小
按照固定的字符数切分文本,是最简单直接的分块方式。通常会设置一定的重叠区域(overlap),避免在切分边界丢失上下文。
块大小: 80 字符重叠: 20 字符
分块结果 共 0 个块
请输入文本后查看分块结果
策略优点缺点适用场景
📏 固定大小实现简单,块大小均匀可能在句子中间截断结构化程度低的长文本
📝 按句子保持句子完整性块大小不均匀文章、报告等自然文本
🧠 语义分块主题连贯,语义完整计算成本高,需要嵌入模型多主题混合的复杂文档
🔄 递归分块兼顾结构与大小实现较复杂通用场景,推荐默认选择

청크 전략 선택

  • 고정 크기 청크: 문자 수 또는 토큰 수로 분할, 간단하고 직관적이지만 의미를 단절시킬 수 있음
  • 재귀적 청크: 먼저 단락별로 분할하고, 단락이 너무 길면 문장별로 분할하여 의미적 완전성 유지
  • 의미적 청크: 임베딩 모델로 의미적 경계를 판단, 유사도가 급변하는 지점에서 분할
  • 문서 구조 청크: Markdown 제목, HTML 태그 등 구조 정보를 활용하여 분할

"최고의" 청크 전략은 없으며, 데이터에 가장 적합한 전략만 있습니다. 일반적으로 재귀적 청크부터 시작하여 청크 크기 200-500 토큰, 오버랩 10-20%를 권장합니다.


3. 검색 기술: 가장 관련성 높은 내용을 찾는 방법?

청크 분할이 완료되면 다음 핵심 질문은: 사용자가 질문을 했을 때, 수천 개의 문서 청크 중에서 가장 관련성 높은 것을 어떻게 찾을까?

이는 거대한 도서관에서 책을 찾는 것과 같습니다. 책 제목 키워드로 검색하거나(키워드 검색), 원하는 내용을 설명하여 사서에게 찾아달라고 하거나(의미적 검색), 가장 좋은 방법은 두 가지를 결합하는 것입니다(하이브리드 검색).

选择查询:
1
查询编码
2
向量搜索
3
重排序
4
Top-K 选择
查询编码
将用户的自然语言查询通过嵌入模型(如 text-embedding-ada-002)转化为高维向量表示。这个向量捕捉了查询的语义信息。
查询文本
如何申请年假?
↓ 嵌入模型编码
查询向量
0.12-0.450.780.33-0.210.560.89-0.14
검색 방식원리장점단점
키워드 검색(BM25)단어 빈도와 역문서 빈도 기반정확한 매칭, 빠른 속도의미 이해 불가, 동의어 처리 실패
벡터 검색임베딩 벡터의 코사인 유사도 기반의미 이해, 퍼지 매칭 지원고유 명사에 둔감
하이브리드 검색키워드와 벡터 검색 결과 융합정확성과 의미 모두 고려가중치 조정 필요, 복잡도 높음

재정렬(Reranking)

후보 문서를 검색한 후 일반적으로 "재정렬" 단계가 필요합니다. 초기 검색은 재현율(누락 최소화)을 추구하고, 재정렬은 정밀도(가장 관련성 높은 것을 최상단으로)를 추구합니다. Cohere Rerank, BGE Reranker 등이 널리 사용되며, 크로스 인코더로 query-document 쌍을 정밀하게 점수 매깁니다.


4. 아키텍처 진화: 단순함에서 지능으로

RAG 기술은 불과 2년 만에 3세대 진화를 거쳤으며, 각 세대는 이전 세대의 문제점을 해결합니다.

最基础的 RAG 架构,流程简单直接:索引 → 检索 → 生成。适合快速原型验证,但在复杂场景下效果有限。
📄
文档加载
✂️
文本分块
🔢
向量化
🔍
检索
🤖
生成
点击流程节点查看详细说明
架构特点
实现简单,上手快
适合结构化知识库
⚠️检索质量依赖分块策略
无法处理复杂查询
架构演进路线
Naive RAG
2023
Advanced RAG
2024
Modular RAG
2025

3세대 RAG 아키텍처 비교

  • Naive RAG(2023): 가장 기본적인 "인덱싱→검색→생성" 흐름, 구현은 간단하지만 효과 제한적. 문제점: 검색 품질 불안정, 복잡한 쿼리 처리 불가, 노이즈 컨텍스트 도입 가능성.
  • Advanced RAG(2024): Naive RAG에 쿼리 재작성, 하이브리드 검색, 재정렬, 컨텍스트 압축 등 최적화 단계를 추가하여 검색 정밀도와 생성 품질을 크게 향상.
  • Modular RAG(2025): RAG를 플러그인 가능한 모듈로 분해, 라우팅 판단, 적응형 검색, 자기 반성 등 고급 기능 지원. 쿼리 유형에 따라 최적의 처리 흐름을 동적으로 선택.

5. RAG vs 파인튜닝: 어떤 것을 선택해야 할까?

대형 모델이 특정 분야 지식을 습득하게 하려면 일반적으로 두 가지 길이 있습니다: RAG와 파인튜닝(Fine-tuning). 이들은 상호 배타적이지 않고 상호 보완적입니다.

비유하자면: 파인튜닝은 학생이 학원에 다니는 것, 지식을 뇌에 내재화하는 것; RAG는 학생에게 참고서를 주는 것, 시험 때 펼쳐볼 수 있는 것. 두 방식 모두 장단점이 있으며, 핵심은 구체적인 요구사항에 달려 있습니다.

RAG 检索增强生成
VS
Fine-tuning 微调
知识更新速度
实时更新,修改文档即生效
需要重新训练,周期长
实施成本
搭建检索系统,成本适中
💰
需要 GPU 资源和标注数据
回答风格控制
依赖 Prompt 工程
🎨
可深度定制输出风格
幻觉控制
有据可查,可追溯来源
🎯
仍可能产生幻觉
推理延迟
需要额外的检索步骤
⏱️
直接生成,无额外开销
私有数据安全
数据留在本地,不进入模型
🔒
数据融入模型权重
一句话总结
RAG 像是给模型配了一个实时更新的参考书库,适合知识频繁变化的场景; 微调像是让模型上了一门专业课,适合需要特定风格或领域深度的场景。 实际项目中,两者常常结合使用。
차원RAG파인튜닝
지식 업데이트실시간 업데이트, 문서만 수정하면 됨재학습 필요
비용낮음(GPU 학습 불필요)높음(학습 리소스 필요)
설명 가능성높음(출처 추적 가능)낮음(지식이 가중치에 내재화)
적용 시나리오지식 베이스 Q&A, 문서 검색스타일 전이, 특정 작업 최적화
환각 제어양호(참고 근거 있음)보통(여전히 환각 가능)

실전 제안

대부분의 시나리오에서는 먼저 RAG를 시도하세요. RAG의 장점: 학습 불필요, 지식 실시간 업데이트 가능, 답변 출처 추적 가능. 모델의 "행동 패턴"(출력 형식, 언어 스타일, 추론 방식 등)을 변경해야 할 때만 파인튜닝을 고려하세요. 가장 강력한 방안은 종종 RAG + 파인튜닝의 조합입니다.


요약

RAG는 현재 대형 모델을 "실전에 적용"하는 가장 실용적인 기술 중 하나입니다. 핵심 가치는: 모델의 답변이 근거 있고, 지식이 실시간 업데이트 가능하며, 환각을 효과적으로 제어할 수 있다는 점입니다.

이 장의 핵심 포인트를 되돌아보면:

  1. RAG가 해결하는 핵심 문제: 대형 모델의 지식 노후화, 비공개 데이터 부족, 쉬운 환각 발생
  2. 3단계 흐름: 인덱싱(오프라인 준비) → 검색(온라인 조회) → 생성(종합 답변)
  3. 청크 분할이 기초: 청크 품질이 검색 품질을 직접 결정, 적절한 청크 전략 선택이 매우 중요
  4. 검색이 핵심: 하이브리드 검색 + 재정렬이 현재 가장 효과적인 조합
  5. 아키텍처는 진화 중: Naive RAG에서 Modular RAG로, 시스템이 점점 더 지능적이고 유연해짐
  6. RAG와 파인튜닝은 상호 보완적: 대부분 시나리오에서 먼저 RAG 시도, 모델 행동 변경 필요 시 파인튜닝 고려

더 읽어보기