본문 바로가기
패캠 환챌 07월 시작

패스트캠퍼스 환급챌린지 44일차 : 모두의 AI 케인의 Agent로 완성하는 RAG: 데이터 별 아키텍처 설계를 중심으로 강의 후기

by 논문보관함 2025. 8. 13.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://fastcampus.info/4n8ztzq

 

(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스

초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!

fastcampus.co.kr

  오늘은 reasoning_rag.ipynb를 기반으로, RAG(Retrieval-Augmented Generation) 파이프라인을 실제로 구현하고 실행하는 전 과정을 학습했다. 단순히 개념적인 설명에 그치지 않고, 실습을 통해 각 단계가 어떻게 연결되고 동작하는지 구체적으로 경험할 수 있었다는 점이 큰 장점이었다.

  먼저 환경을 세팅하는 단계에서 필요한 라이브러리들을 설치하고, 경고 메시지를 억제하는 설정을 통해 깔끔한 실행 환경을 만들었다. 이후 두 개의 LLM을 초기화했는데, 하나는 deepseek-r1:7b 모델로 reasoning(사고 과정 생성)에, 다른 하나는 exaone3.5 모델로 최종 답변 생성을 담당하도록 구성했다. 이 구조 덕분에 사고 과정과 답변 생성을 분리하여, 더 명확하고 해석 가능한 RAG 파이프라인을 만들 수 있었다.

  그 다음 단계에서는 RAGState라는 상태 클래스를 정의하여, 질의(query), 사고 과정(thinking), 검색된 문서(documents), 최종 답변(answer) 등 RAG 수행에 필요한 모든 데이터를 하나의 흐름으로 관리할 수 있도록 했다. 이로써 이후 LangGraph를 사용해 노드를 연결하고 상태를 주고받는 설계가 가능해졌다.

  문서 로딩 과정에서는 DoclingLoader를 사용해 논문 PDF를 마크다운 형태로 변환하고, MarkdownHeaderTextSplitter를 이용해 헤더 단위로 세분화했다. 이렇게 분할된 문서 조각들은 Qdrant 벡터스토어에 임베딩되어 저장되었고, bge-m3:latest 임베딩 모델을 사용했다. 검색 시에는 기본 retriever에 CrossEncoderReranker를 적용해, 관련성이 높은 상위 5개 문서만 추출하도록 압축 리트리버를 구성했다.

  또한 RetrievalChain과 ReasoningChain을 각각 구성해, 질문에 대한 사고 과정을 먼저 생성하고, 이후 문서 검색 및 답변 생성을 수행하는 단계별 파이프라인을 만들었다. LangGraph의 StateGraph를 이용해 reasoning → retrieve → answer 순으로 노드를 연결하고, 최종적으로 그래프를 실행하여 결과를 확인할 수 있었다.

  이번 실습을 통해 단순한 RAG 구현이 아니라, 사고 과정 생성과 문서 검색·답변 생성을 분리한 구조, 벡터 검색 + 재순위화 결합, LangGraph 기반 상태 관리 등 실제 서비스 수준의 설계 패턴을 배웠다는 점이 인상 깊었다. 특히, 모델을 단일로 쓰는 대신 역할을 분리해 조합함으로써, 답변의 신뢰성을 높이고 디버깅 가능성을 확보하는 접근법은 현업에서도 충분히 활용할 수 있겠다고 느꼈다.

결론적으로, 오늘 배운 내용은 단순한 코드 예제가 아닌, 재사용 가능하고 확장성 있는 RAG 아키텍처 설계 방법론을 실습한 시간이었으며, 이 과정을 통해 RAG 구현에 대한 실무 감각과 자신감을 크게 높일 수 있었다.

   좀 더 나아가서 사견을 덧붙이자면, 이러한 부록 같은 짧은 프로젝트라도 조금 더 많이 제공되었다면 어땠을까 하는 생각을 해본다. 실제로 이런 미니 프로젝트가 많아질수록 다양한 응용 아이디어와 문제 해결 경험을 쌓을 수 있고, 아마 더 깊이 있는 챌린지에 도전하면서 한층 더 높은 완성도의 결과물을 만들어낼 수 있었을 것이라 확신한다.