[커널아카데미] 백엔드 12기 19주차 회고 (토이프로젝트4, AI 프로젝트를 곁들인)

david1-p·2025년 8월 3일

회고

목록 보기
19/27

커널아카데미에서의 2번째 프로젝트가 끝났다.
3주동안의 프로젝트였지만, 오랜만에 밤을 새기도 하고 하루에 3시간 이내로 자면서 해본 프로젝트인 것 같다. 챗봇, AI에 대해 아무것도 모르던 내가, 이제는 RAG 전처리에 대해서는 어느정도 할 줄 알게 되었다. Java와 python을 api로 처음 연결해보았고, FastAPI, Swagger, ElasticSearch, OpenAI, Gemini, Ollama 등을 이용한 RAG 구성 등 해보고 싶은 것은 다 해본 것 같다.

너무나도 재밌었던 프로젝트였다. 1팀 팀원분들 너무 고생많았고, 다들 묵묵히 자기 할일들을 해줘서 너무 고마웠다. 솔직히 나는 팀원들이 차려준 밥상에 숟가락만 얹어서 먹기만 했는데, 생각보다 결과물이 잘나온 것 같았다. 에러도 많이 뜨고, 시행착오도 많이 겪었지만 좋은 경험을 한 것 같다.
프로젝트에 간략하게 설명을 하고 회고를 마무리하려고 한다.

시스템 아키텍처

멀티 컨테이너 구조

  • Spring Boot: 사용자 인증, 상태 관리, PDF 렌더링, 노트 관리
  • FastAPI + LangChain: AI 로직, RAG 처리, LLM 호출
  • MySQL: 사용자 데이터, 채팅 이력, 노트 정보 저장
  • Elasticsearch: 문서 임베딩 및 벡터 검색

모든 서비스는 Docker Compose로 통합 관리되며, backend 네트워크로 연결되어 내부 DNS를 통해 안정적인 서비스 간 통신을 구현함.


핵심 기능 구현

1. 상태 기반 챗봇 시스템

  • 15개의 세부 상태로 구성된 대화 흐름
  • 기능 선택 → 문제 생성 → 답변 평가 → 피드백 → 다음 액션
  • 각 상태에 적절한 응답과 다음 단계 안내 제공

2. RAG (Retrieval-Augmented Generation) 구현

  • PDF 문서 청킹 및 임베딩 생성
  • Elasticsearch를 활용한 의미 기반 유사도 검색
  • 검색된 문서를 기반으로 LLM이 응답 생성

3. 멀티 LLM 지원

  • OpenAI GPT-4
  • Google Gemini
  • Ollama (로컬 기반 모델)

기술적 성과

Java ↔ Python API 연동

  • Spring WebClient 기반 FastAPI 호출 구조 구축
  • 타임아웃 설정 및 예외 핸들링으로 안정성 확보

벡터 검색 시스템

  • Elasticsearch의 dense_vector 활용
  • Nori 분석기 적용으로 한국어 검색 성능 개선

API 문서화

  • FastAPI의 Swagger 자동 문서화 기능으로 개발 협업 효율성 향상

프로젝트 성과

완성된 주요 기능

  • PDF 업로드 및 전처리
  • 상태 기반 대화 흐름 관리
  • RAG 기반 문제 생성
  • 개념 설명 및 페이지 추천
  • 사용자 인증 및 이력 관리
  • 반응형 웹 인터페이스 구현

기술적 안정성

  • Docker Compose 기반의 일관된 개발 및 배포 환경
  • 환경 변수 관리로 보안 강화
  • 서비스 간 의존성 및 연결 구조 명확화

배운 점

멀티 서버 아키텍처의 이해

  • 서로 다른 언어(Spring Boot, FastAPI)를 API로 연결하며 마이크로서비스 설계 이해도 향상

RAG 시스템 설계 및 구현

  • 임베딩, 벡터 검색, 컨텍스트 기반 생성형 AI 흐름을 실제 구현을 통해 체득

상태 관리의 중요성

  • 사용자 응답 흐름을 유도하기 위한 설계와 상태 전이 관리의 필요성 깊이 인식

개선 사항 및 향후 과제

성능 최적화

  • 캐싱 시스템 도입으로 반복 질의 응답 속도 개선
  • 임베딩 처리 시간을 줄이기 위한 배치 처리 도입

확장성 확보

  • 다중 사용자 동시 접속을 위한 비동기 처리 구조 개선
  • 대용량 PDF 처리 효율성 향상

모니터링 및 로깅

  • 실시간 상태 확인을 위한 모니터링 시스템 구축
  • 사용자 로그 수집 및 분석 체계 마련

결론

이번 프로젝트를 통해 기획부터 개발, 배포까지 AI 애플리케이션의 전반적인 구조를 경험할 수 있었습니다. 특히, RAG 시스템을 처음부터 직접 설계하고 구축하면서 생성형 AI가 실질적으로 어떤 방식으로 학습 도우미 역할을 수행할 수 있는지를 체감할 수 있었습니다.

멀티 서버 아키텍처, 상태 기반 챗봇 설계, 벡터 검색 등의 기술적 요소들을 조화롭게 연결하며
완성도 있는 결과물을 만들어낸 값진 경험이었습니다.

profile
DONE IS BETTER THAN PERFECT.

0개의 댓글