역할: PM & AI Engineer
기간: 2024.11 -- 2025.07
Repository: https://github.com/ISAAC-chatbot/isaac_rag
LangGraph를 기반으로 대화 흐름의 상태를 명확히 정의하고, OpenSearch를 통해 근거 문서를 찾으며, 사용자의 질문에 출처가 있는 답변을 제공하는 RAG 기반 챗봇을 설계했습니다.

대학교 행정 정보는 학교 내 여러 조직이 운영하는 여러 홈페이지에 흩어져 있어, 학생이 원하는 정보를 찾으려면 직접 여러 페이지를 오가며 검색해야 했습니다.
실제 사용자 여정에서도 교환학생 공고를 찾는 데 3번의 검색과 5번의 클릭이 필요했고, 설문조사 결과 행정 서비스에 불만족한 사용자가 10명 중 7명으로 확인되었습니다.
학생은 답을 늦게 받고 조교는 같은 질문을 반복해서 처리했기 때문에, 24시간 행정 정보를 답해줄 수 있는 AI 조교 챗봇이 필요했습니다.
하지만 단순 LLM 챗봇은 할루시네이션이 발생하고, 답변의 출처를 함께 주지 못한다는 문제가 있었습니다.
먼저 할루시네이션을 줄이기 위해 RAG 구조를 제안했고, 이를 위한 데이터를 수집하기 위해 DFS 방식의 크롤링으로 메인 홈페이지 아래의 페이지를 순회하며 교내 행정 정보를 수집했습니다.
수집한 내용은 추후 출처 추적이 가능하도록 홈페이지의 URL까지 OpenSearch에 저장했습니다.
처음에는 의미에 기반한 벡터 검색만으로 정보를 찾았지만, 학교 행정 정보는 학과명이나 장학금명처럼 정확한 키워드도 중요한 경우가 많아 성능이 매우 나빴습니다.
그래서 의미 기반 검색과 키워드 검색을 함께 쓰는 하이브리드 검색을 사용했고, 질문에서 학과나 주제에 대한 키워드 문자열을 뽑아 그것과 관련된 범위 안에서만 답을 찾도록 개선했습니다.
이렇게 챗봇을 구축했지만 한 번의 질문에만 잘 작동하고 두 번째 질문부터는 이전 맥락을 잃어 대화가 자연스럽지 않았습니다. 즉 multi-turn 기능을 지원하지 못 했습니다.
이를 해결하기 위해 이전 대화 내용을 요약해 다음 질문과 함께 context로 넘기도록 만들었습니다.