[포트폴리오] RAG 기반 대학교 챗봇
프로젝트 개요
- 프로그램명: 동국대학교 AI 정보 탐색 파트너 (`알려동`)
- 소개:
Retrieval-Augmented Generation(RAG)기술을 활용하여 학사 공지사항, 학업이수가이드의 정보를 제공하는 대학교 챗봇 시스템- 카카오톡의 채널과 챗봇 기능을 활용하여 사용자의 질문을 입력받아 검색된 문서의 내용을 반영한 답변을 제공
- 개발 기간: 2024년 11월 ~ 2024년 12월
- 인력 구성: 팀(4인)
- 백엔드 2인 (본인)
- 모델 개발 2인
-
수행업무 (백엔드 담당)
- 스킬 서버 개발:
- 카카오톡의 챗봇 서비스를 활용하기 위해
FastAPI로 카카오톡 챗봇 서버에 응답값을 보내는 스킬서버 구축 - 프롬프트 단위로 작동하던 챗봇 모델을 카카오톡 챗봇 서버 형태로 변환
- 사용자와의 대화를 기억하기 위한 세션 관리 시스템을 싱글톤 패턴으로 구현
- 5초 내에 응답을 해야하는 카카오 챗봇 서버를 고려하여 4초 내에 답변을 받을 수 없는 경우, 콜백 URL을 통해 비동기적으로 처리 결과를 전달하도록 구현
- 관리자의 문서 업로드 기능 구현
- 공지사항의 주기적 크롤링 및 업데이트, 메타데이터의 추가를 통한 출처(공지사항 링크) 제공 기능 구현
- 대학교 중앙도서관 사이트를 크롤링하여 실시간으로 도서 정보를 제공하는 기능 구현
- 스케줄링 기능 구현
- 카카오톡의 챗봇 서비스를 활용하기 위해
- 배포
Docker이미지를 생성하여 컨테이너 기반 배포 환경 구축- docker-compose 파일을 이용하여
AWS Elastic Beanstalk로 서버에 배포
- 스킬 서버 개발:
기술 스택 (Backend)
- 스킬 서버
FastAPI: 챗봇 API 서버 구현 및 빠른 응답 처리BeautifulSoup: 공지사항, 도서 정보, 식단 정보 크롤링LangChain: 문서 기반 검색 및 챗봇 답변 생성PyMuPDFLoader: PDF 형식의 학업이수 가이드 및 기타 문서에서 정보 추출PIL: 이미지 형태의 공지사항 처리 및 변환APScheduler: 공지사항과 식단 정보의 주기적 크롤링httpx: 콜백 응답을 위한 비동기 HTTP 요청 처리Chroma DB: 벡터 DB로 문서 검색 및 관련 답변 제공
- 배포
Docker,Docker ComposeAWS Elastic Beanstalk
- 외부 API
OpenAI API
시스템 구조도
- 시스템 아키텍처
- 시퀀스 다이어그램
주요 기능
- 자유로운 질문과 답변
2024 학업이수가이드와공지사항(일반, 학사, 장학, 행사)기반으로 질문에 대한 답변- 답변에 대한
출처(학업이수가이드 페이지 또는 공지사항 사이트 링크)를 표기 - 스케줄링 기능을 통해 새로운 공지사항 데이터 업데이트
- 대화 기억
- 사용자와의 대화를 10~20분까지 기억하여 과거 대화이력을 바탕으로 답변
- 사용자의 정보를 매번 입력할 필요없이 꼬리 질문 가능
- 도서 조회
- 실시간으로 도서정보(발행년, 작가, 보유도서관, 대출가능여부 등)를 제공
- 식단 조회
- 당일 식당별 식단을 제공
- 다양한 언어 지원
- 사용자가 사용하는 언어에 맞추어 답변을 생성
결과
- 시간과 자원 절약
- 학생들이 챗봇을 통해 정보를 얻음으로써 이미 공지된 사항에 대한 답변으로 인한 행정 업무 축소
- 방대한 양의 학업이수 가이드나 공지사항을 일일이 확인할 필요 없이 챗봇을 통해 정확한 정보를 빠르게 획득
- 외국인 학생의 불편함 감소
- 영어 외에도 다양한 언어로 챗봇을 지원하기 때문에 외국인 학생들의 정보 접근 취약성 보완
- 지식의 범위 확장 가능
- 다양한 문서와 공지사항을 전처리하여 챗봇의 범위를 확장 가능
주요 화면
- 기본 메뉴
- 자유질문 & 답변
-
외국어 질문
Leave a comment