Teaching Sidekick to Say No: Automated Data Curation with LLM Judge Consensus (Shopify)
Author: Shuang Xie (Shopify) | Source: shopify.engineering | Published: 2026
한 줄 요약
프로덕션 로그는 성공 쿼리만 담아 모델이 “거절”을 배우지 못하는 blind spot을, 작은 seed 데이터셋으로 calibrate한 4개 frontier LLM judge의 만장일치 consensus로 학습 데이터를 자동 curate하는 data flywheel로 해결.
핵심 주장/내용
- 문제: Sidekick segmentation skill이 불가능한 쿼리(“직업이 의사인 고객” — Shopify는 직업 데이터 없음)에 거절 대신 0건 반환 쿼리 생성 → merchant 오해. 학습 데이터(수만 production 쿼리)에 거절 예시 0건
- 첫 시도 실패: Toloka로 ~600 standard + 602 refusal 주석 → production과 naive merge하니 같은 쿼리가 양쪽에 반대 라벨(모순 신호) → 제한적 개선
- 해법 — LLM judge consensus: 작은 Toloka seed를 자동 curation 엔진의 seed로. 4개 frontier LLM을 few-shot으로 calibrate(human 주석에 anchor) → 전체 corpus 평가 + conflict resolver
- strict consensus over confidence: 4개 모두 decision + reasoning 일치할 때만 라벨 통과(불일치는 arbitrate 아닌 filter). precision > recall(“4개 모델이 동의 못하면 human이 결정”)
- mutually exclusive taxonomy: solvable-with-context / missing-capability / wrong-skill / ambiguous (모호하면 judge 불일치 → 라벨 불일치 전파)
- data flywheel: 개선 모델 배포 → production 트래픽이 다음 샘플 → 새 패턴을 judge가 라벨 → corpus에 추가 → 다음 fine-tune이 더 크고 깨끗한 baseline에서 시작
주요 수치 / 사실
- segmentation eval 0.619 → 0.798(+28.9% 상대); naive merge vs curation: 0.762 → 0.798
- refusal 정확도 86.3%, false positive 4.6%; judge ensemble ground truth 일치 ~90%, Cohen’s kappa > 0.75
- 교훈: 작은 고품질 seed가 큰 역할, taxonomy mutual exclusivity 필수, 초기엔 consensus > confidence, refusal은 실패가 아닌 제품 기능
관련 위키
Source: 원문 보기