
우아한형제들의 교육 운영 시스템 사례로 배우는 삽질 방지 RAG 아키텍처 설계법
단순한 이론을 넘어 실제 서비스에 RAG(검색 증강 생성)를 도입하며 겪은 시행착오와 해결책을 담았습니다. MCP 활용부터 커스텀 서버 구축까지의 과정을 통해, 백엔드 엔지니어가 LLM의 한계를 어떻게 극복하고 신뢰할 수 있는 사내 지식 검색 시스템을 만들 수 있는지 상세한 로드맵을 제시합니다.
사내 문서나 파편화된 데이터를 LLM과 연동하고자 하는 백엔드 개발자 및 AI 엔지니어에게 강력 추천합니다. 기술적 호기심을 넘어 실제 서비스 배포와 운영 성능까지 고려해야 하는 분들에게 훌륭한 체크리스트가 될 것입니다.
교육 운영에 필요한 데이터가 DB, Google 드라이브, 캘린더 등 여러 시스템에 파편화되어 있어 정보 확인에 시간이 많이 소요되었으며, 범용 LLM은 사내의 독점적인 최신 데이터를 학습하지 못해 발생하는 환각 현상으로 인해 신뢰도 높은 답변을 얻기 어려웠습니다.
MCP 기반의 초기 시도를 거쳐 사내 VPC 환경 내에 직접 RAG 서버를 구축하였으며, 데이터를 수집 및 가공하는 색인(Indexing) 파이프라인과 유사 정보를 검색해 답변을 만드는 생성(Generation) 파이프라인, 그리고 결과의 품질을 측정하는 평가(Evaluation) 파이프라인을 체계적으로 구현했습니다.
여러 시스템을 개별 방문하던 방식에서 자연어 검색 하나로 통합하여 정보 분석 시간을 5분에서 30초로 단축하고, 시스템 접근 횟수를 1회로 줄였으며, 90% 이상의 쿼리에 대해 3초 이내 응답이라는 성능 목표를 달성했습니다.
Trade-off
본문에 구체적인 한계점이 명시되지는 않았으나, Redis Vector Store를 활용할 때 데이터 규모가 커질수록 인메모리 관리 비용이 상승할 수 있으며, 문맥적 임베딩 도입에 따라 일반 임베딩 방식 대비 검색 시 추가적인 연산 비용과 지연 시간이 발생할 수 있을 것으로 예상됩니다.
LLM이 학습하지 않은 외부 데이터를 검색하여 답변 생성 시 참고 컨텍스트로 활용하게 함으로써 환각을 줄이고 정확도를 높이는 기술입니다.
방대한 문서를 검색 효율과 LLM의 처리 한계를 고려하여 의미 있는 작은 조각으로 나누는 과정입니다.
단어의 주변 문맥을 반영하여 텍스트의 의미를 고차원 숫자 벡터로 변환하는 기술입니다.








