CPN 한국어 자습서 · 러닝패스 2 / 4 — Building with the Claude API
RAG
Introducing Retrieval Augmented Generation
수백 페이지짜리 문서에 구체적인 질문을 던지려면, 그 정보를 어떻게든 Claude에게 전달해야 합니다. 방법은 크게 둘 — 문서 전체를 프롬프트에 넣기, 그리고 관련 부분만 찾아 넣기. 두 번째가 바로 RAG(검색 증강 생성)입니다. 이 장에서는 왜 RAG가 필요한지, 그리고 RAG 파이프라인의 큰 그림을 잡습니다.
Stephen Grider · Anthropic 기술 스태프
어떤 회사의 아주 큰 금융 문서가 있다고 해봅시다. 수백 페이지, 어쩌면 천 페이지가 넘을 수도 있습니다. 그리고 우리는 그 문서에 대해 아주 구체적인 질문을 하고 싶습니다. 예를 들어 "이 회사의 주요 리스크 요인은 무엇인가?" 같은 질문이죠. 이 질문에 답하려면 문서 안의 정보를 어떻게든 Claude에게 줘야 합니다. 크게 두 가지 방법이 있습니다.
첫 번째 방법은 단순합니다. 문서 전체 텍스트를 그냥 프롬프트에 통째로 집어넣고 질문을 던지는 것입니다. 이게 될 수도 있고, 안 될 수도 있습니다. 그런데 이 방식에는 분명한 단점이 세 가지 있습니다.
하나, 모든 모델에는 입력 길이의 하드 리밋(컨텍스트 윈도우)이 있습니다. 문서가 그 한계를 넘으면 프롬프트를 보내는 순간 곧바로 에러가 납니다. 둘, 프롬프트가 길수록 Claude의 정확도가 떨어지는 경향이 있습니다. 정보가 너무 많으면 그 안에서 우리가 정말 무엇을 원하는지 파악하기가 더 어려워지기 때문입니다. 셋, 프롬프트가 길수록 비용이 올라가고 응답도 느려집니다. 사용자 입장에서는 답을 받기까지 오래 기다려야 하니 경험이 나빠집니다.
두 번째 방법이 바로 RAG입니다. 핵심 아이디어는 이렇습니다. 문서 전체를 넣는 대신, 질문과 가장 관련 있는 부분만 골라서 넣자는 것입니다. 이건 두 단계로 나뉩니다.
1단계는 사전처리입니다. 사용자가 아직 아무 질문도 하기 전에, 우리는 큰 문서를 미리 작은 조각들 — 청크(chunk) — 로 쪼개 둡니다. 2단계는 질의 시점입니다. 사용자가 질문을 하면, 그 질문과 가장 관련 있는 청크를 찾아서 그 청크만 프롬프트에 넣고 Claude에게 보냅니다.
이렇게 하면 장점이 많습니다. Claude는 관련 있는 내용에만 집중할 수 있고, 문서가 아무리 크거나 여러 개여도 확장할 수 있으며, 프롬프트가 작으니 더 빠르고 더 저렴합니다.
물론 단점도 있습니다. 우선 시스템이 복잡해집니다. 문서를 미리 처리하고, 관련 청크를 찾는 검색 메커니즘을 만들고, 무엇이 "관련 있다"는 것인지 정의해야 합니다. 또 우리가 고른 청크가 답에 필요한 맥락을 전부 담고 있다는 보장이 없습니다. 게다가 문서를 청크로 쪼개는 방법이 한 가지가 아닙니다 — 길이로 균등하게 자를 수도, 헤더를 기준으로 자를 수도 있죠. 그래서 어떤 방식이 우리 상황에 맞는지 평가가 필요합니다.
이 두 번째 방법이 바로 RAG, 즉 Retrieval Augmented Generation(검색 증강 생성)입니다. 적용하기 전에 우리 use case에 정말 맞는지 단계별로 따져 봐야 한다는 점만 기억하면 됩니다. 다음 장부터는 이 파이프라인을 한 단계씩 직접 구현해 보겠습니다.
이 장에서 배우는 것What you'll learn
약 7분큰 문서의 정보를 Claude에 주는 두 가지 방법
옵션1 — 전체 텍스트를 프롬프트에: 단점 3가지(길이 한계·정확도↓·비용/지연↑)
옵션2 — RAG: 관련 청크만 찾아 넣기
RAG의 2단계 — 사전처리(청킹)와 질의(검색)
RAG의 장점(집중·확장·저렴)과 단점(복잡도·맥락·청킹 선택)
RAG 파이프라인의 큰 그림: 문서 → 청크 → 검색 → 프롬프트
수백 페이지짜리 회사 금융 문서가 있고, 거기에 "이 회사의 주요 리스크 요인은?" 같은 아주 구체적인 질문을 하고 싶다고 해봅시다. 답하려면 문서 속 정보를 어떻게든 Claude에게 전달해야 합니다. 방법은 크게 두 가지입니다.
문서가 클수록 "전부 넣을까, 일부만 넣을까"의 선택이 중요해집니다. 이 장은 그 선택을 다룹니다.
옵션 1은 문서 전체를 프롬프트에 통째로 넣는 것이고, 옵션 2는 질문과 관련된 부분만 골라 넣는 것입니다. 카드를 눌러 각 방식의 장단점을 펼쳐 보세요.
▶ 짧은 문서엔 충분하지만, 크고 많아지면 무너집니다.
▶ 이 방식이 바로 RAG입니다.
옵션 2(RAG)는 공짜가 아닙니다 — 복잡도를 떠안는 대신 대용량·다문서·저비용을 얻습니다. 적용 전 우리 use case에 맞는지 따져야 합니다.
관련 청크만 찾아 넣는 두 번째 방법이 바로 RAG(Retrieval Augmented Generation, 검색 증강 생성)입니다. RAG는 두 단계로 동작합니다.
원본 문서
수백 페이지의 큰 문서
청킹
작은 청크들로 쪼갬
(사전처리)
관련 청크 검색
질문과 가장
가까운 청크만
프롬프트 + Claude
그 청크만 넣어
답을 생성
앞의 청킹과 검색 두 단계가 RAG의 핵심입니다. 이어지는 장들에서 이 둘을 차례로 직접 구현합니다 — 다음은 청킹부터.
RAG는 만능이 아닙니다. 복잡도라는 비용을 치르는 대신 대용량·다문서·저비용을 얻습니다. 적용 전에 우리 use case에 맞는지 단계별로 따져 봐야 합니다.
Q1RAG에서 "R"이 뜻하는 것은?
RAG = Retrieval Augmented Generation. 관련 청크를 검색(retrieval)해 생성을 보강합니다.
Q2문서 전체를 프롬프트에 넣는 방식의 단점이 아닌 것은?
청킹·검색이 필요한 건 오히려 RAG(옵션 2) 쪽의 복잡도입니다. 전체 텍스트 방식은 단순한 대신 길이·정확도·비용에서 약합니다.
Q3RAG의 두 단계를 옳게 묶은 것은?
질문 전에 미리 청킹해 두고(사전처리), 질문이 오면 관련 청크를 찾아 넣습니다(질의).
RAG의 큰 그림을 잡았습니다. 이제 파이프라인의 첫 단계 — 문서를 작은 청크로 쪼개는 청킹을 직접 구현합니다. → 텍스트 청킹 전략
전 코스는 계속 무료입니다. 등록하면 이 코스의 남은 76개 레슨을 끝까지 읽을 수 있습니다.
이미 등록하셨다면 그때 쓰신 이메일을 넣어 주세요.