Skip to main content
Summary

프로젝트 목표 정하기

도메인 챗봇은 "무엇이든 답하는 모델"이 아니라 "정해진 분야에서 안정적으로 답하는 모델"입니다. 먼저 범위를 좁혀야 합니다. 예를 들어 고객지원 FAQ 챗봇이라면 환불, 배송, 계정, 장애 대응처럼 실제 문의가 많은 주제를 고릅니다. 제품 매뉴얼 챗봇이라면 설치 절차, 오류 코드, 부품명, 주의사항이 핵심입니다. 사내 정책 챗봇이라면 휴가, 보안, 결재, 복지처럼 직원이 자주 묻는 항목을 우선합니다.

자료를 고를 때는 양보다 신뢰도가 중요합니다. 오래된 문서, 서로 다른 답을 하는 문서, 담당자가 승인하지 않은 문서는 학습 데이터에서 제외합니다. 모델은 데이터의 모순을 스스로 해결하지 못합니다. 같은 질문에 다른 답이 섞여 있으면 그 혼란까지 배웁니다.

실전 프로젝트: 나만의 도메인 챗봇 만들기

문서를 instruction 데이터셋으로 바꾸기

도메인 문서는 그대로 학습하기 어렵습니다. 챗봇은 질문을 받고 답해야 하므로 문서를 instruction, input, output 구조로 바꾸는 편이 좋습니다. instruction에는 사용자의 요청을, input에는 필요한 조건이나 상황을, output에는 기대 답변을 넣습니다.

예시는 다음과 같습니다.

{"instruction":"배송 지연 시 고객에게 어떻게 안내해야 하나요?","input":"주문 후 5일이 지났고 송장 조회가 되지 않는 상황","output":"먼저 불편에 대해 사과한 뒤 주문번호를 확인합니다. 물류사 송장 등록 지연 가능성을 안내하고, 내부 배송 상태를 조회한 후 예상 출고일 또는 재발송 절차를 알려줍니다."}

이때 평가용 프롬프트도 함께 만듭니다. 학습 데이터와 평가 데이터는 분리해야 합니다. 학습에 사용한 질문으로만 평가하면 모델이 외운 답을 잘 말하는지밖에 확인할 수 없습니다. 같은 의미지만 다른 표현의 질문, 예외 상황이 포함된 질문, 문서에 답이 없는 질문을 따로 준비합니다.

빠른 첫 학습부터 시작하기

처음부터 큰 모델을 오래 학습하지는 않습니다. 3B~8B급 소형 모델에 LoRA 또는 QLoRA를 적용해 빠르게 첫 결과를 봅니다. 목표는 완벽한 모델을 한 번에 만드는 것이 아니라, 데이터 방향이 맞는지 확인하는 것입니다.

첫 학습에서는 다음 세 가지를 고정해 봅니다. 첫째, 데이터셋은 검수된 100~500개 예제로 시작합니다. 둘째, epoch는 낮게 잡아 과적합을 피합니다. 셋째, 평가 프롬프트는 학습 전부터 준비해 같은 기준으로 비교합니다.

응답이 장황하면 답변 예시를 짧게 고칩니다. 근거 없는 내용을 말하면 "문서에 없으면 모른다고 답하라"는 예제를 추가합니다. 말투가 들쭉날쭉하면 output의 문체를 통일합니다. 이 단계에서 중요한 것은 학습 설정을 복잡하게 만드는 것이 아니라, 데이터가 원하는 방향을 가리키고 있는지 확인하는 것입니다.

품질 개선은 데이터에서 시작합니다

모델 품질이 낮을 때 학습 설정만 바꾸는 것은 한계가 있습니다. 먼저 실패 응답을 유형별로 나눕니다. 답이 틀렸는지, 답은 맞지만 너무 긴지, 금지된 표현을 쓰는지, 문서에 없는 내용을 지어내는지 확인합니다.

그다음 데이터셋을 수정합니다. 자주 틀리는 질문은 비슷한 표현으로 3~5개 추가합니다. 예외 정책은 별도 예제로 만듭니다. 답변 형식이 중요하다면 "목록으로 답하라", "고객에게 보낼 문장으로 답하라", "내부 상담원용 메모로 답하라"처럼 목적을 분명히 적습니다.

도메인 챗봇의 실력은 모델 크기보다 데이터의 선명함에서 더 자주 갈립니다. 작은 모델이라도 좋은 예제를 반복해서 보여 주면 특정 업무에서는 충분히 쓸모 있는 결과를 낼 수 있습니다. 반대로 데이터가 모호하면 큰 모델도 같은 실수를 반복합니다.

내보내기와 로컬 테스트

평가를 통과한 모델은 실행 환경에 맞게 저장합니다. Python 기반 서버나 vLLM에서 이어 쓸 계획이라면 Safetensors 형식이 편합니다. Ollama, llama.cpp 같은 로컬 실행 도구에서 가볍게 테스트하려면 GGUF 형식이 유용합니다. Unsloth는 로컬 실행, 데이터셋 생성, 모델 비교, GGUF와 Safetensors 내보내기 같은 흐름을 지원하므로 프로젝트의 시작과 끝을 한 도구 안에서 연결할 수 있습니다.1

내보낸 뒤에는 반드시 실제 챗봇 환경에서 다시 확인합니다. 학습 노트북에서 잘 답하던 모델도 시스템 프롬프트, 최대 토큰 수, temperature, API 서버 설정이 바뀌면 다른 답을 할 수 있습니다. 마지막 테스트는 운영 상황과 최대한 비슷해야 합니다.

완성 기준

이 프로젝트의 완성 기준은 "학습이 끝났다"가 아닙니다. 정해진 평가 질문에서 기준 점수를 넘고, 문서에 없는 질문에 모른다고 답하며, 실제 사용자가 이해할 수 있는 길이와 말투로 응답해야 합니다.

마지막으로 다음 질문에 답해 보세요.

  • 자주 들어오는 질문에 정확히 답하는가?

  • 문서에 없는 내용은 추측하지 않고 확인 불가라고 말하는가?

  • 답변 길이와 말투가 실제 사용자에게 적절한가?

  • 기본 모델보다 개선된 지점이 기록으로 남아 있는가?

  • 내보낸 모델이 새 실행 환경에서도 같은 품질을 보이는가?

이 기준을 통과하면 작은 도메인 챗봇 하나를 만든 것입니다. 이후에는 새 문서가 생길 때 데이터셋을 갱신하고, 실패 대화를 다시 학습 데이터로 정리하면서 모델을 반복 개선하면 됩니다.

참고

1Unsloth 공식 사이트

책 목록

Unsloth 실전 가이드: 로컬 LLM 실행부터 고속 파인튜닝과 배포까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기