이 프로젝트는 충남대학교 학생들을 위한 챗봇 서비스입니다. LLM(Large Language Model)과 RAG(Retrieval-Augmented Generation) 기술을 Naive하게 활용하여 교내 게시물 데이터를 기반으로 사용자에게 정보를 제공합니다.
LLM을 기반으로 충남대학교의 다양한 정보를 제공하는 챗봇 서비스를 개발하고자 프로젝트를 진행하였습니다. RAG 기술을 적용하여 검색된 정보를 기반으로 챗봇이 더욱 정확한 답변을 할 수 있도록 합니다.
- LLM: 한국어로 학습된 모델(MLP-KTLim/llama-3-Korean-Bllossom-8B)을 사용하여 사용자 질문에 한국어 답변을 생성합니다.
- RAG: 검색 증강 생성 기술을 통해 사용자 질문과 관련된 문서를 검색하고, 그 정보를 기반으로 챗봇이 답변을 생성합니다.
- Vector DB: 문서 데이터를 임베딩하여 저장하고, 유사도 검색을 수행할 수 있도록 Chroma DB를 활용합니다.


- 사용자가 질문을 입력하면 웹 서버가 이를 처리하여 서버로 전달합니다.
- 서버는 질문과 관련된 문서를 Vector DB에서 검색합니다.
- 검색된 문서를 LLM에 전달하여 최종 답변을 생성합니다.
- 생성된 답변이 사용자에게 웹 UI를 통해 제공됩니다.
-
데이터 수집: 충남대학교 정보화본부 API를 통해 약 8,490개의 게시물 데이터를 수집하여 지식 베이스로 활용하였습니다.
-
데이터 처리: 수집된 데이터를 Vector DB에 임베딩 처리 하였습니다. 데이터는 다음과 같이 구성됩니다.
본 프로젝트에서는 챗봇의 성능을 평가하기 위해 20개의 질문에 대한 Golden Dataset을 구축하여 테스트를 진행했습니다.

-
평가 기준: 정확도, 일관성, 적합성을 기준으로 LLM의 답변을 평가하였으며, 검색 결과의 추론 가능성 및 질문 연관성도 함께 평가하였습니다.
-
프롬프트: 프롬프트는 다음과 같이 작성하였습니다.
결과 분석: 일부 질문에 대해 낮은 정밀도 및 재현율을 확인하였으며, 데이터 부족과 청크 분할로 인한 정보 누락 문제를 분석하였습니다.
- 데이터 보완: 현재 수집된 데이터 외에도 추가적인 데이터를 확보하여 검색 정확도를 높입니다.
- 키워드 기반 검색: 임베딩 벡터 계산에 의존하지 않고, 핵심 키워드를 기반으로 한 검색 방식을 도입합니다.
- Reranking: 검색된 결과를 순위별로 다시 평가하여 검색 정확도를 높이는 reranking 기법을 적용합니다.



현재 레포지토리는 LLM Server이며, 이에 대한 실행 방법을 명시합니다.
이외 구현부에 대해서는, 아래에 추후 링크 업데이트 예정입니다.
Backend:
Web Server(Front):
Infra:
-
rag/env_set의 README.md를 확인하여 환경 설정을 마쳐주세요
-
프로젝트를 로컬 환경에 클론합니다.
git clone https://github.com/username/CNU-ChatBot.git cd CNU-ChatBot
-
필요한 패키지를 설치합니다.
pip install -r requirements.txt
-
FastAPI 서버를 uvicorn으로 실행합니다.
uvicorn router:app --reload
-
API_Doc.md를 읽고 LLM Server의 API를 이용하여 모델을 서버에 통합할 수 있습니다.