RAG, 교육 운영 시스템에 어떻게 적용했을까?
RAG(Retrieval-Augmented Generation) 기술은 LLM의 환각(Hallucination) 현상을 해결하고, 외부 정보 활용을 가능하게 함
교육 운영 시스템에 RAG을 적용하여 분산된 데이터 통합 및 자연어 검색 기능 구현
MCP(Model Context Protocol) 활용 시도 실패 후, RAG 서버 직접 구축을 통해 격리 환경 접근 및 성능 개선
RAG 구현을 위한 6단계 가이드(필요성 평가, 요구사항 분석, 프레임워크 결정, 색인, 생성, 평가) 제시
RAG 도입 전, 프롬프트 엔지니어링(Prompt Engineering) 검토
본문에서는 RAG 도입에 앞서, 프롬프트 엔지니어링(Prompt Engineering)으로 해결 가능한지 먼저 검토해야 한다고 강조한다. RAG은 쿼리-컨텍스트 결합도가 높아지는 시점에 도입하는 것이 적절하며, 단순 텍스트 처리나 정적 데이터에는 적합하지 않다.
RAG 필요성 평가: 정보의 실시간 업데이트, 도메인 특화 지식 필요 여부 판단
프롬프트 엔지니어링(Prompt Engineering) 활용: 간단한 텍스트 처리, 정적 데이터, 일반적인 대화에는 프롬프트 엔지니어링(Prompt Engineering)으로 충분
쿼리-컨텍스트 결합도: 쿼리 준비 시 적절한 컨텍스트를 함께 준비해야 하는 부담을 의미
교육 운영 RAG 시스템 아키텍처
교육 운영 시스템에서 RAG을 구현하기 위해, 여러 시스템에 분산된 데이터를 통합하고 자연어 검색 기능을 제공하는 아키텍처를 구축했다. MCP(Model Context Protocol)를 활용하려 했으나, 환경 제약과 LLM의 한계로 인해 RAG 서버를 직접 구현하는 방식으로 전환했다.
데이터 소스 통합: 데이터베이스, Google 드라이브, Google 캘린더 등 다양한 소스에서 데이터 수집
RAG 서버 구축: 데이터베이스와 동일한 VPC 환경에 구축하여 격리된 리소스에 접근
6단계 구현 가이드: 사용 사례 식별, 요구사항 분석, 프레임워크 결정, 색인, 생성, 평가 파이프라인 구현
RAG 파이프라인(Pipeline) 상세 분석
RAG은 색인, 생성, 평가의 세 가지 파이프라인으로 구성되며, 각 파이프라인은 여러 단계를 거쳐 구현된다. 색인 파이프라인은 로딩, 청킹, 임베딩, 저장소로 구성되며, 생성 파이프라인은 검색, 증강, 생성 단계를 거친다. 마지막으로 평가 파이프라인은 컨텍스트 관련성, 답변 충실성, 답변 관련성을 측정한다.
색인 파이프라인: 로딩(Loading), 청킹(Chunking), 임베딩(Embedding), 저장소(Storage) 단계
생성 파이프라인: 검색(Retrieval), 증강(Augmentation), 생성(Generation) 단계
평가 파이프라인: 컨텍스트 관련성, 답변 충실성, 답변 관련성 측정
RAG 프레임워크 선택 시 고려 사항
RAG 프레임워크 선택 시, 기술적 장점보다 팀의 숙련도가 더 중요한 요소로 작용한다. Spring AI와 LangChain을 비교하며, 팀이 익숙한 환경을 선택하는 것이 생산성에 긍정적인 영향을 미친다고 강조한다. 모든 항목에서 완벽한 선택지는 없으므로, 상황에 맞는 우선순위를 설정해야 한다.
기술 스택: 팀의 기술 스택과 숙련도를 고려하여 프레임워크 선택
생산성: 팀이 익숙한 환경이 생산성에 미치는 영향
우선순위 설정: 모든 항목에서 완벽한 선택지는 없으므로, 상황에 맞는 우선순위 설정
RAG 시스템 평가 지표 및 개선 방안
RAG 시스템의 성능을 평가하기 위해 컨텍스트 관련성, 답변 충실성, 답변 관련성 세 가지 지표를 사용한다. 각 지표는 시스템의 특정 측면을 평가하며, 낮은 점수는 해당 파이프라인의 개선 필요성을 나타낸다. 예를 들어, 답변 충실성이 낮다면 증강 단계의 프롬프트 설계를 재검토해야 한다.
컨텍스트 관련성: 검색된 청크가 쿼리와 얼마나 관련 있는지 측정
답변 충실성: LLM이 생성한 답변이 검색된 컨텍스트에만 근거하는지 측정
답변 관련성: 생성된 최종 답변이 사용자의 질문에 얼마나 직접적으로 응답하는지 측정
평가 지표를 기반으로, 파이프라인 변경 시 재평가를 통해 지속적인 시스템 개선을 수행해야 한다.