본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout

내비게이션

  • Tech
  • Projects
  • Books
  • About
  • Tags

카테고리

  • AI / ML
  • 웹 개발
  • 프로그래밍
  • 개발 도구

연결

  • GitHub
  • Email
  • RSS
© 2026 Kreath Archive. All rights reserved.Built with Next.js + MDX
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 1장: RAG 시스템 소개와 아키텍처 개요
2026년 1월 13일·AI / ML·

1장: RAG 시스템 소개와 아키텍처 개요

검색 증강 생성(RAG)이 무엇이고 왜 필요한지, 핵심 구성 요소와 전체 아키텍처를 체계적으로 살펴봅니다.

14분212자7개 섹션
ragvector-databaseembeddingretrievalllm
공유
rag-system1 / 10
12345678910
다음2장: 임베딩 모델의 이해와 선택

RAG란 무엇인가

검색 증강 생성(Retrieval-Augmented Generation, RAG)은 대규모 언어 모델(LLM)이 외부 지식 소스에서 관련 정보를 검색한 뒤, 그 정보를 바탕으로 응답을 생성하는 아키텍처 패턴입니다. 2020년 Meta AI(당시 Facebook AI Research)의 Patrick Lewis 등이 발표한 논문에서 처음 제안된 이 접근법은, LLM의 가장 큰 한계인 지식의 정적성과 환각(Hallucination) 문제를 해결하기 위해 등장했습니다.

LLM은 학습 데이터의 컷오프 시점 이후의 정보를 알지 못하며, 학습 과정에서 접하지 못한 도메인 특화 지식에 대해서는 정확한 답변을 제공하기 어렵습니다. RAG는 이 문제를 모델 재학습 없이 해결합니다. 질문이 들어오면 관련 문서를 실시간으로 검색하고, 검색된 컨텍스트를 프롬프트에 포함시켜 모델이 사실에 기반한 응답을 생성하도록 합니다.

text
기존 LLM 방식:
  사용자 질문 --> LLM --> 응답 (학습 데이터에만 의존)
 
RAG 방식:
  사용자 질문 --> 검색 엔진 --> 관련 문서 추출 --> LLM + 컨텍스트 --> 응답

RAG가 필요한 이유

환각 문제 해결

LLM은 학습 데이터에 없는 내용을 그럴듯하게 지어내는 환각 현상이 있습니다. RAG는 검색된 문서를 근거로 답변하도록 강제함으로써, 환각 발생 빈도를 크게 줄입니다. 검색된 컨텍스트에 없는 내용은 "모르겠습니다"라고 답하도록 시스템 프롬프트로 제어할 수 있습니다.

최신 정보 반영

모델을 재학습하는 데는 막대한 비용과 시간이 필요합니다. RAG는 외부 지식 저장소만 업데이트하면 최신 정보를 즉시 반영할 수 있습니다. 기업의 내부 문서, API 문서, 정책 변경 사항 등을 실시간으로 반영하는 것이 가능합니다.

도메인 특화

법률, 의료, 금융 등 전문 분야에서는 일반적인 LLM의 지식만으로는 충분하지 않습니다. RAG를 통해 해당 도메인의 전문 문서를 검색 대상으로 설정하면, 미세 조정(Fine-tuning) 없이도 도메인 전문가 수준의 응답을 생성할 수 있습니다.

비용 효율성

파인튜닝은 모델 학습 비용, 데이터 준비 비용, 그리고 지속적인 재학습 비용이 발생합니다. RAG는 추론 시점에 검색만 추가되므로, 지식 업데이트 비용이 문서 인덱싱 비용으로 제한됩니다.

Info

RAG와 파인튜닝은 상호 배타적이지 않습니다. 파인튜닝으로 모델의 기본 역량을 강화하고, RAG로 최신 지식을 보강하는 조합이 프로덕션 환경에서 가장 효과적인 전략입니다.

RAG 시스템의 핵심 구성 요소

RAG 시스템은 크게 두 단계로 나뉩니다. 오프라인에서 수행되는 인덱싱(Indexing) 단계와, 사용자 요청 시 실시간으로 수행되는 검색 및 생성(Retrieval & Generation) 단계입니다.

인덱싱 파이프라인

인덱싱 파이프라인은 원본 문서를 검색 가능한 형태로 변환하는 과정입니다. 이 과정은 다음 세 단계로 구성됩니다.

첫째, 문서 로딩(Document Loading)입니다. PDF, HTML, Markdown, 데이터베이스 등 다양한 소스에서 원본 텍스트를 추출합니다.

둘째, 청킹(Chunking)입니다. 추출된 텍스트를 LLM의 컨텍스트 윈도우에 적합한 크기의 조각으로 분할합니다. 청킹 전략은 RAG 시스템의 성능에 결정적인 영향을 미치며, 3장에서 자세히 다룹니다.

셋째, 임베딩 및 저장입니다. 각 청크를 임베딩 모델을 통해 벡터로 변환하고, 벡터 데이터베이스에 저장합니다.

python
# 인덱싱 파이프라인 의사 코드
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
 
# 1. 문서 로딩
loader = PyPDFLoader("company_policy.pdf")
documents = loader.load()
 
# 2. 청킹
splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,
    chunk_overlap=50,
    separators=["\n\n", "\n", ". ", " "]
)
chunks = splitter.split_documents(documents)
 
# 3. 임베딩 및 저장
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma.from_documents(chunks, embeddings)

검색 파이프라인

사용자의 질문이 들어오면, 검색 파이프라인이 관련 문서 청크를 찾아냅니다.

python
# 검색 파이프라인
query = "재택근무 신청 절차가 어떻게 되나요?"
 
# 질문을 벡터로 변환하고 유사한 청크 검색
results = vectorstore.similarity_search(query, k=5)
 
# 검색된 컨텍스트를 프롬프트에 포함
context = "\n\n".join([doc.page_content for doc in results])

생성 파이프라인

검색된 컨텍스트와 사용자 질문을 조합하여 LLM에 전달합니다.

python
from openai import OpenAI
 
client = OpenAI()
 
prompt = """다음 컨텍스트를 바탕으로 질문에 답변하세요.
컨텍스트에 없는 내용은 "해당 정보를 찾을 수 없습니다"라고 답하세요.
 
컨텍스트:
{context}
 
질문: {query}
""".format(context=context, query=query)
 
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "당신은 회사 정책 안내 도우미입니다."},
        {"role": "user", "content": prompt}
    ]
)

Naive RAG의 한계

위에서 설명한 기본적인 RAG 구현을 Naive RAG라고 부릅니다. 개념 검증(PoC) 수준에서는 잘 작동하지만, 프로덕션 환경에서는 여러 한계에 부딪힙니다.

검색 품질 문제

2026년 기준 실무 경험에 따르면, RAG 실패의 80%는 생성이 아닌 검색 단계에서 발생합니다. 잘못된 청킹으로 문맥이 손실되거나, 단순 벡터 유사도 검색만으로는 사용자의 의도를 정확히 파악하지 못하는 경우가 빈번합니다.

컨텍스트 윈도우 제약

검색된 청크를 모두 프롬프트에 넣으면 컨텍스트 윈도우를 초과할 수 있습니다. 반대로 너무 적은 청크만 포함하면 답변에 필요한 정보가 누락됩니다.

멀티홉 추론의 어려움

"A 제품의 할인율과 B 제품의 할인율 중 어느 것이 더 높은가?"처럼 여러 문서를 교차 참조해야 하는 질문에는 단일 검색으로 대응하기 어렵습니다.

발전된 RAG 아키텍처

이러한 한계를 극복하기 위해 다양한 고급 RAG 패턴이 등장했습니다.

Advanced RAG

Naive RAG의 검색 품질을 개선한 접근법입니다. 쿼리 재작성(Query Rewriting), 하이브리드 검색(Hybrid Search), 리랭킹(Reranking) 등의 기법을 검색 파이프라인에 추가합니다. 이 시리즈의 6장과 7장에서 각각 다룹니다.

text
Advanced RAG 파이프라인:
  질문 --> 쿼리 변환 --> 하이브리드 검색 --> 리랭킹 --> 상위 K개 선택 --> LLM 생성

Modular RAG

검색, 생성, 평가 등 각 단계를 독립적인 모듈로 분리하여, 필요에 따라 조합하고 교체할 수 있는 구조입니다. 각 모듈을 개별적으로 최적화하고 테스트할 수 있다는 장점이 있습니다.

Agentic RAG

LLM 에이전트가 검색 전략을 스스로 판단하고, 필요에 따라 쿼리를 수정하거나 추가 검색을 수행하는 자율적인 RAG 시스템입니다. Self-Correcting RAG, Corrective RAG(CRAG) 등이 이 범주에 속합니다. 9장에서 자세히 다룹니다.

이 시리즈에서 다루는 내용

이 시리즈는 총 10장으로 구성되며, RAG 시스템의 기초부터 프로덕션 배포까지 체계적으로 다룹니다.

  • 2장: 임베딩 모델의 원리와 선택 기준
  • 3장: 청킹 전략의 종류와 벤치마크 결과
  • 4장: 벡터 데이터베이스 비교와 선택 가이드
  • 5장: 인덱싱과 검색 파이프라인 구축
  • 6장: BM25와 시맨틱 검색을 결합한 하이브리드 검색
  • 7장: 리랭킹으로 검색 정밀도 높이기
  • 8장: RAGAS 등 평가 프레임워크와 핵심 메트릭
  • 9장: Agentic RAG와 Self-Correcting RAG
  • 10장: 프로덕션 RAG 파이프라인 구축
Tip

이 시리즈의 코드 예제는 Python과 LangChain/LlamaIndex 생태계를 기반으로 합니다. TypeScript 기반 구현이 필요한 경우에는 해당 라이브러리의 JS/TS 버전을 참고하시기 바랍니다.

정리

RAG는 LLM의 한계를 외부 지식 검색으로 보완하는 아키텍처 패턴입니다. 환각 감소, 최신 정보 반영, 도메인 특화, 비용 효율성이라는 네 가지 핵심 가치를 제공하며, Naive RAG에서 Advanced RAG, Agentic RAG로 발전해 왔습니다.

다음 장에서는 RAG 시스템의 첫 번째 핵심 구성 요소인 임베딩 모델에 대해 살펴봅니다. 텍스트를 벡터로 변환하는 원리부터, 2026년 기준 최신 임베딩 모델의 성능 비교까지 다루겠습니다.

이 글이 도움이 되셨나요?

관련 주제 더 보기

#rag#vector-database#embedding#retrieval#llm

관련 글

AI / ML

2장: 임베딩 모델의 이해와 선택

텍스트 임베딩의 원리부터 2026년 최신 모델 벤치마크, 프로덕션 환경에서의 선택 기준까지 체계적으로 안내합니다.

2026년 1월 15일·17분
AI / ML

3장: 청킹 전략 - 문서 분할의 기술

RAG 검색 품질을 좌우하는 청킹 전략의 종류, 벤치마크 결과, 그리고 최적의 청크 크기를 선택하는 실전 가이드입니다.

2026년 1월 17일·16분
AI / ML

4장: 벡터 데이터베이스 비교와 선택

Pinecone, Weaviate, Qdrant, pgvector 등 주요 벡터 데이터베이스의 특성을 비교하고 상황에 맞는 선택 가이드를 제공합니다.

2026년 1월 19일·15분
다음 글2장: 임베딩 모델의 이해와 선택

댓글

목차

약 14분 남음
  • RAG란 무엇인가
  • RAG가 필요한 이유
    • 환각 문제 해결
    • 최신 정보 반영
    • 도메인 특화
    • 비용 효율성
  • RAG 시스템의 핵심 구성 요소
    • 인덱싱 파이프라인
    • 검색 파이프라인
    • 생성 파이프라인
  • Naive RAG의 한계
    • 검색 품질 문제
    • 컨텍스트 윈도우 제약
    • 멀티홉 추론의 어려움
  • 발전된 RAG 아키텍처
    • Advanced RAG
    • Modular RAG
    • Agentic RAG
  • 이 시리즈에서 다루는 내용
  • 정리