CallZip · 상담 지원 AI 시스템
분류·검색 품질 실험
분류 라벨 기준, 임베딩·재순위 모델, 답변 말투를 같은 평가셋으로 비교해 반영 여부를 결정했습니다.
- Python
- pgvector
- Qwen3
- bge-m3
- LoRA
핵심 기여
- 분류 성능을 막던 원인을 라벨 기준에서 찾아 고객 의도 기준 라벨링 가이드 수립·재학습
- 임베딩·재순위 모델 교체를 서비스 검색 코드 그대로 비교하고, 근거 없는 답 증가를 이유로 재순위 교체 보류
- 상담사 답변체 어댑터를 빈칸 보존·없는 내용 생성 기준으로 기본 모델과 비교
원칙: 바꾸기 전에 효과와 부작용을 함께 잰다
상담 지원 AI는 답을 더 많이 내는 것보다 근거 없는 답을 내지 않는 것이 더 중요합니다. 그래서 모델이나 프롬프트를 바꿀 때마다 서비스 코드를 그대로 부르는 실험을 만들고, 같은 평가셋에서 좋아진 점과 나빠진 점을 함께 비교한 뒤 반영 여부를 정했습니다.
다이어그램을 불러오는 중...
분류 모델: 문제는 모델이 아니라 정답 기준이었다
문의 유형 분류 성능이 학습 설정을 바꿔도 오르지 않았습니다. 오분류 사례를 읽어 보니, 학습에 쓴 상담원 라벨은 상담을 어떻게 처리했는지를 따르고 있었고, 실증에서 재야 하는 것은 고객이 무엇을 물었는지였습니다.
- 고객 의도 기준 라벨링 가이드를 만들고 판을 올려 가며 기준을 다듬었습니다.
- 가이드에 맞춰 학습 라벨을 다시 판정하고 재학습했습니다.
- 기계 판정 정답은 표본을 사람이 직접 검수해 맞는지 확인했습니다.
검색: 임베딩은 교체, 재순위 모델은 보류
고객사 표준 모델로 검색 모델을 바꾸는 안을 단계별로 나눠 검증했습니다. 서비스의 검색 코드(글자 유사도 검색과 벡터 검색을 합치는 RRF, 재순위)를 그대로 부르고, 바꾸는 단계만 갈아 끼웠습니다.
- 임베딩: 차원을 줄여 써도 기존 모델보다 검색 품질이 나빠지지 않았고, 답변에 쓰이는 근거도 같았습니다. 저장 공간을 고려해 줄인 차원으로 가기로 했습니다.
- 재순위 모델: 근거 검색과 정확한 답은 늘었지만, 근거에 없는 내용이 든 답도 함께 늘었습니다. 점수 분포가 달라 기준값을 다시 맞춰 재실험했고, 이득이 줄어드는 것을 확인했습니다. GPU 여유도 부족해 서비스 반영은 보류했습니다.
- 같은 설정을 두 번 돌려 생성 자체의 흔들림을 먼저 재고, 그보다 큰 차이만 개선으로 보았습니다.
답변 말투: 상담사 답변체 어댑터
상담사가 실제로 보낸 답변으로 말투 어댑터를 학습하고, 같은 프롬프트로 기본 모델과 비교했습니다. 말투가 비슷한지보다 답변 템플릿의 빈칸을 그대로 지키는지, 문의에 없는 내용을 만들어 내지 않는지를 먼저 보았습니다. 상담사가 고칠 곳이 적은 초안이 목표였기 때문입니다.