초등/중등 지역사 교육을 위한 메타버스 플랫폼과 연동할 규칙 기반의 챗봇
- 경북대학교 산학협력 프로젝트
- 한국정보처리학회 ASK 2024 게제승인 및 제1저자
- 전체 사용자 : 500명
- 동시 사용자 : 30명
⚠️ 제약 조건- 학생에게 정확한 역사 정보를 제공해야 한다.
- 내부 데이터를 쉽게 확장할 수 있어야 한다.
- 최소 예산으로 프로젝트를 완성해야 한다.
🚩 목표 : 학생이 보낸 질문에 정확한 응답을 제공하자
(주)모티버의 메타버스와 연동되는 챗봇 엔진으로 실제 연동하여 사용된 사진입니다.
🚨멘토의 요청에 따라서 세부적인 요소는 공개하지 못함을 알립니다.
Python
,FastAPI
,Pandas
,Pytorch
,KoNLPy
,OpenAI
GCP Compute Engine
,Docker
,Nginx
GitHub
- 질의응답: Vector Search를 기반으로 사용자의 질문에 응답합니다.
- 데이터 증강: 내장된 질의응답 데이터의 질문을 다양한 표현으로 증강합니다.
- 챗봇 구현을 위해 데이터 전처리를 거쳐 하나의 텐서로 저장하면 검색에 많은 시간이 소모된다.
- 오버헤드를 줄이고 빠른 검색을 유도하기 위하여, 각 텐서를 HashTable과 같이 각각 저장하여 해결.
- 초기 프로젝트 진행하며 모델 이름, 컬럼 등의 요소를 하드코딩으로 사용했다.
- 하드코딩 등의 리터널 사용은 가독성, 유지보수성에서 매우 좋지 않다.
- 따로 설정파일을 분리하고, 시스템에서 이를 로드하도록 변경하여 가독성, 유지보수성 개선
- GPU 자원, 비용 등의 문제로 전통적인 방식의 챗봇을 구현하였다.
- 사람이 수동으로 데이터를 구성해야하는 불편함이 존재한다.
- 해당 문제를 해결하기 위하여 각 질문을 패러프레이징하여 자동으로 데이터를 증강하도록 구성하였다.
- 이를 통해 더욱 다양한 질문으로 구성되어 응답 성공률을 높일 수 있을 것으로 기대한다.
- 현재 챗봇은 코사인 유사도와 SBert 모델을 기반으로 Vector Search를 구현한다.
- GPU 자원은 존재하지 않으며 다양한 제약조건으로 GPT를 통해 RAG를 구성할 수 없는 환경이다.
- Nginx와 Docker를 통해서 수평 확장하여 부하를 분산하여 조금이라도 Latency를 줄이도록 노력하였다.
- 각 서버가 자원을 따로 점유하여 여러 개의 코어를 Time Sharing으로 동시에 잘 활용하도록 하였다.
BE/PM | Data Mining | Data Mining |
---|---|---|
김동주 |
김나현 |
김다희 |