
모델은 학습한 시점까지의 것만 압니다. 우리 회사 내부 문서는 당연히 모르고요. 그렇다고 문서를 넣어 다시 학습시키는 건 비싸고 느립니다. RAG는 다른 길을 택합니다. 모델을 바꾸는 대신, 질문할 때 자료를 같이 건네줍니다.
📚 한 줄 요약: 오픈북 시험
RAG는 검색(Retrieval)과 생성(Generation)을 붙인 것입니다. 사용자가 질문하면 먼저 관련 문서를 찾아서, 그 내용을 질문과 함께 모델에게 넘깁니다. 모델은 그걸 읽고 답합니다.
핵심은 모델 자체는 전혀 안 바뀐다는 점입니다. 바뀌는 건 넣어주는 자료뿐입니다. 그래서 문서가 바뀌면 즉시 반영되고, 근거를 인용할 수 있습니다.

🔧 파이프라인은 두 갈래입니다
미리 해두는 쪽(색인): 문서를 적당한 크기로 자르고 → 각 조각을 임베딩(의미를 담은 숫자 벡터)으로 바꾸고 → 벡터 저장소에 넣어둡니다.
질문이 올 때(검색·생성): 질문도 같은 방식으로 임베딩하고 → 저장소에서 벡터가 가까운 조각들을 꺼내고 → 그 조각들을 프롬프트에 붙여 모델에게 넘기고 → 답을 받습니다.
"벡터가 가깝다"가 곧 "의미가 비슷하다"입니다. 이게 단어가 겹치지 않아도 찾아낼 수 있는 이유입니다. "차 수리"로 검색해도 "자동차 정비" 문서가 걸립니다.
✂️ 실제로 성패를 가르는 건 청킹입니다
구현해보면 알게 되는데, RAG의 품질은 화려한 모델이 아니라 문서를 어떻게 자르느냐에서 대부분 갈립니다.
너무 잘게 자르면 문맥이 끊깁니다. "이 경우 환불이 됩니다"라는 문장만 떼어 오면 어떤 경우인지가 없습니다. 너무 크게 자르면 관련 없는 내용이 잔뜩 섞여 들어와 정작 핵심이 묻힙니다.
그래서 문단이나 제목 같은 의미 단위로 자르고, 조각끼리 조금씩 겹치게 하는 방법을 씁니다. 표나 목록은 특히 조심해야 합니다. 중간에서 잘리면 완전히 다른 의미가 됩니다.

🎯 벡터 검색만으론 부족합니다
의미 검색은 정확한 고유명사에 약합니다. 제품 코드 "A-1024" 같은 걸 찾을 때 벡터는 오히려 헤맵니다. 그래서 키워드 검색을 같이 돌려 결과를 합치는 방식을 많이 씁니다.
그리고 꺼내온 조각들의 순서를 다시 매기는 단계를 넣기도 합니다. 처음 검색은 넓게 후보를 가져오고, 더 정밀한 모델로 질문과의 관련도를 다시 채점해 상위 몇 개만 남기는 식입니다. 넣을 수 있는 분량이 한정돼 있으니, 무엇을 넣느냐보다 무엇을 버리느냐가 중요해집니다.
⚠️ 오해: RAG를 붙이면 환각이 사라진다
가장 흔한 오해입니다. RAG는 환각을 줄이지만 없애지 못합니다.
검색이 엉뚱한 문서를 가져오면 모델은 그 엉뚱한 문서를 근거로 자신 있게 틀린 답을 합니다. 근거까지 달려 있어서 더 그럴듯해 보입니다. 관련 문서가 아예 없을 때 "자료에 없습니다"라고 말하게 만드는 것도 따로 신경 써야 하는 일입니다. 안 그러면 모델이 알아서 지어냅니다.
그래서 RAG 시스템을 손볼 때는 답이 이상하면 모델 탓하기 전에 검색 결과부터 봐야 합니다. 대개 그쪽에 원인이 있습니다.
👉 정리하면
RAG는 "모델을 똑똑하게 만들기"가 아니라 "모델에게 좋은 자료를 쥐여주기"입니다. 그래서 대부분의 개선은 검색 쪽에서 일어납니다. 자르는 방식, 찾는 방식, 고르는 방식이요.
이전 글에서 다룬 어텐션이 문장 안에서 관련 있는 것을 섞는 연산이었다면, RAG는 그 바깥에서 무엇을 넣어줄지 고르는 문제라고 볼 수 있습니다.
📚 함께 보면 좋은 글
ChatGPT vs 제미나이 vs 클로드, 뭘 골라야 하나 (용도별 비교)
AI 프롬프트 작성법 실전 가이드 — 원하는 답 얻는 공식
AI로 엑셀·자동계산 하는 법
한국 AI 기본법 시행 — 생성형 AI 워터마크·고지 의무
이 블로그는 AI 홈페이지 빌더 레이블웹스에서 운영합니다.

'AI 기술 노트' 카테고리의 다른 글
| 컨텍스트 윈도우 — 길이 제한이 실제로 걸리는 지점 (1) | 2026.07.17 |
|---|---|
| 트랜스포머 어텐션 — 단어가 서로를 참조한다는 게 실제로 무슨 계산인가 (0) | 2026.07.17 |