학교 학사 AI 챗봇 챗불이에서 공지사항 데이터 파이프라인을 맡고 있습니다. 학생이 "장학금 신청 어떻게 해?"라고 물으면, 챗봇이 그날 올라온 공지의 첨부파일 속 신청 절차까지 읽고 출처를 붙여 답하게 만드는 일입니다.
외부 상용 API 없이 교내 H100 GPU 4장으로 모든 모델이 돌아가기 때문에, 대부분의 설계는 "학생 답변이 느려지지 않게 GPU를 아끼는 것"에서 출발했습니다.
크롤러 대신 intip API: 학생 약 3천 명이 쓰는 교내 앱의 공지 API를 넓혀 본문 전체와 첨부까지 받도록 했습니다.
규칙 → LLM 2단 선별: 규칙이 먼저 거르고, 남은 공지만 LLM이 판단합니다. 수동 라벨 551건 기준 정확도 98.9%, LLM 호출은 40여 건뿐이었습니다.
첨부는 색인할 공지만: HWP 표 복원(비어 있던 표 478개 → 4개), 스캔본은 이미 떠 있던 비전 LLM으로 OCR, 빈 신청서 양식은 제외.
요약 대신 원문: 요약을 넣었더니 챗봇이 틀린 학점을 자신 있게 답해서, 큰 안내문은 원문 그대로 넣고 표는 학과·트랙별로 나눴습니다.
날짜는 정규식으로: 학기와 신청 마감일을 붙여, 챗봇이 "이미 마감됐습니다"를 구분하게 했습니다.
우분투 업데이트 때 환경변수 이름이 바뀌면서, 일주일 동안 LLM 판정이 전부 401로 실패했습니다. 그런데 공지 하나의 실패가 전체를 멈추지 않게 예외를 잡아 둔 탓에 크론 로그는 계속 '성공'이었습니다.
10월 기준 수집 공지 1,797건 중 128건 색인, 첨부 285건 색인
intip 앱에 붙어 실제 학생 질문을 받는 중
10/30 중간발표 → 학사과 검증·재학생 사용성 평가 → 2월 최종발표
설계 결정의 이유와 막혔던 지점들은 velog 원문에 자세히 정리했습니다. 👉 https://velog.io/@kdy9883/notice-rag-pipeline-retrospective