Search

RAG, 들어는 봤는데… 내 서비스엔 어떻게 쓰지?

URL
생성 일시
2026/03/10 03:06
최종 편집 일시
2026/03/10 03:06
태그
우아한형제들
파일과 미디어
개요 RAG(Retrieval-Augmented Generation, 검색 증강 생성)은 LLM이 학습하지 못한 정보를 외부에서 검색하여 활용할 수 있게 하는 기술입니다. 이 글에서는 RAG이 왜 필요한지부터, 교육 운영 시스템에 실제로 적용하며 겪은 시행착오(MCP 활용 → RAG 서버 직접 구현)와 그 과정에서 정리한 6단계 구현 가이드(필요성 평가 → 요구사항 분석 → 프레임워크 결정 → 색인 → 생성 → 평가)를 다룹니다. […] The post RAG, 들어는 봤는데… 내 서비스엔 어떻게 쓰지? first appeared on 우아한형제들 기술블로그. || 개요 RAG(Retrieval-Augmented Generation, 검색 증강 생성)은 LLM이 학습하지 못한 정보를 외부에서 검색하여 활용할 수 있게 하는 기술입니다. 이 글에서는 RAG이 왜 필요한지부터, 교육 운영 시스템에 실제로 적용하며 겪은 시행착오(MCP 활용 → RAG 서버 직접 구현)와 그 과정에서 정리한 6단계 구현 가이드(필요성 평가 → 요구사항 분석 → 프레임워크 결정 → 색인 → 생성 → 평가)를 다룹니다. RAG을 처음 접하는 분이라면 개념부터 구현까지의 전체 흐름을, 이미 익숙한 분이라면 각 단계별 핵심 질문과 유의사항을 참고하실 수 있습니다. 이 글은 2025년 10월 WOOWACON 2025에서 "RAG, 들어는 봤는데… 내 서비스엔 어떻게 쓰지?"라는 주제로 진행한 발표를 기반으로, 블로그에 맞게 재구성하고 보충 설명을 추가한 글입니다. 본문에 앞서, RAG의 발음 이야기를 잠깐 하겠습니다. WOOWACON 2025 발표 당시 "랙 발표한다"고 했더니 컴퓨터 랙(Lag) 걸린 걸로 발표까지 하냐는 반응이 돌아왔는데요. 사실 RAG과 Lag은 영어 발음이 각각 /ræɡ/, /læɡ/로, 한글로 옮기면 둘 다 ‘래그’가 맞습니다. 다만 Lag은 ‘렉’, ‘랙’ 등으로 이미 널리 쓰이고 있어 혼동이 생기곤 합니다. 이 글에서 RAG을 읽으실 때는 ‘랙’으로 읽어주시면 됩니다. 왜 RAG이 필요한가? RAG에 대해 이야기하기 전에, LLM을 사용하면서 한 번쯤 겪어봤을 불편함부터 짚어보겠습니다. LLM에게 질문을 던지면 어떤 때는 정확한 답변이 돌아오지만, 어떤 때는 "응답이 불가합니다"라거나 사실이 아닌 내용을 그럴듯하게 답변하는 환각(Hallucination) 현상이 발생합니다. 이런 일이 발생하는 이유는 간단합니다. LLM은 인터넷에 공개된 데이터뿐만 아니라, 해당 LLM 제공업체만이 가진 독점적/고유한 데이터, 즉 학습 데이터로만 학습했기 때문입니다. 학습 데이터에 없는 정보는 알 수 없는 것이죠. LLM의 한계를 넘는 방법 예를 들어 "이번 주 미팅 일정은?"이라고 질문한다고 해보죠. LLM의 학습 데이터에는 우리의 미팅 일정이 없으니 정상적인 응답을 받을 수 없습니다. 하지만 캘린더 파일을 질문과 함께 전달하면 이야기가 달라집니다. LLM이 캘린더 파일의 내용을 이해하고, 질문과 관련된 정확한 답변을 생성할 수 있게 됩니다. 즉, 질문과 관련된 컨텍스트(Context)를 함께 전달하면 LLM은 훨씬 정확하게 답변할 수 있습니다. 컨텍스트를 매번 보내야 한다면? 그런데 만약 아래와 같은 질문들을 자주 해야 한다면 어떨까요? "이번 주 미팅 일정은?" "기획서 내용을 요약해줘." "이 데이터가 존재하는지 확인해줘." 각각의 요청마다 관련 컨텍스트를 항상 함께 보내줘야 합니다. 이를 ‘쿼리-컨텍스트 결합도가 증가했다’라고 표현할 수 있는데, 이는 쿼리를 준비할 때마다 적절한 컨텍스트도 함께 준비해야 한다는 부담을 의미합니다. 더 큰 문제는, "이번 주 미팅 일정은?"이라고 물었는데 엉뚱한 파일 시스템 정보를 컨텍스트로 보