골든셋 다산 기준 재확장 — 13건 → 150건
무엇을
다산콜센터 단일 도메인 기준으로 골든셋을 150건까지 늘린다.
왜
도메인 축소(_project/decisions/201)로 50건이 13건으로 줄었다.
13건으로 낸 Recall@5·MRR 은 신뢰할 수 없다 — 1건이 7.7%p 를 움직인다.
3주차 150건 계획이 4개 도메인 배분을 전제로 짜여 있어 그대로는 쓸 수 없다.
어떻게
- 구비서류를 묻는 발화를 우선 뽑는다. AI Hub 다산에서 실측 174건(2.60%), 69종 서비스에 흩어져 있다 — 새 메인 기능(B)의 채점 대상이다
- 발화는 AI Hub 실제 전사에서 가져온다. 손으로 지어내면 문체 분포가 갈리고,
B-0 실험에서 확인한 전이 실패(
w1-domain-routing하단)를 반복하게 된다 - P1~P7 개인정보 패턴 커버리지를 처음부터 다시 확인한다 — 이전 커버리지는 삭제된 37건에 실려 있었을 수 있다
완료 조건
- 156건, 전부 다산. 문서 ID 는
knowledge-base/dasan/실제 조항을 참조한다 - 구비서류 케이스가 56건
- P1~P7 이 각각 1건 이상 등장한다 (C-5 절대 규칙을 패턴별로 잴 수 있어야 한다)
cd ai && pytest통과 (158건) — 골든셋 구조 테스트가 새 규모에서도 초록불- Recall@5 · MRR 을 다산 기준으로 재측정하고 측정일·커밋·명령·표본 수와 함께 기록
결과 (2026-09-09)
golden-set/v1-150.json · 156건. 기존 13건은 한 글자도 고치지 않고 이어받았다.
선행 작업이 하나 있었다 — w3-kb-dasan-expand. 지식베이스가 20조항이면 상위 5건이 코퍼스의 25%라 Recall@5 자체가 성립하지 않고, 필요서류 조항이 둘뿐이라 서류 케이스 30건의 정답이 두 ID 로 몰린다. 98조항으로 늘린 뒤 골든셋을 썼다. 이 티켓만으로는 완료 조건을 만족시킬 수 없었다.
실측
측정일 2026-09-09 · 커밋 c9da0a3-dirty · eval_run.run_id = 2
ELASTICSEARCH_URL=http://localhost:9200 .venv/bin/python scripts/run_eval.py --runs 3 --record
[retrieval] recall@5 0.833 ✅ · mrr 0.659 ✅ · n 96 (3회 최저치, 절대 원칙 4)
[masking] 누락 2 ❌ · 패턴 오분류 1 · 과잉 0.0 · n 28
[call_guard] 재현율 1.0 · 정밀도 1.0 · n 15 ⚠ 자기충족 — 아래 참고
⚠ -dirty — 커밋되지 않은 변경으로 잰 값이라 c9da0a3 을 체크아웃해도 재현되지 않는다.
scripts/run_eval.py 가 이제 이것을 표시한다(전에는 깨끗한 해시로 기록됐다).
이 확장이 실제로 잡아낸 것 셋
- C-5 절대 규칙이 처음으로 ❌ 가 됐다. 전에는 표본 18건 위의 「누락 0건 ✅」이었다.
뚫린 두 건은 둘 다 P6(인명) —
"저는 최지훈이고요"·"신청인 이름은 한서윤으로"가 규칙 폴백의 문맥 밖이다. 미결 “P6·P7 NER —ai/몫” 이 이 자리다. - 채점기가 「안 가려짐」과 「다른 이름으로 가려짐」을 구분하지 못했다.
"집 전화 0221234567"은 값이 가려졌는데 P3 로 잡혀 누락으로 셌다 — 가짜 위반이 진짜 누락을 가리고 있었다.pattern_mismatch_count를 따로 세도록 고쳤다. - 서류 문의의 상당수가 단독으로는 답이 없는 중간 턴이다. AI Hub 실제 전사에서
"필요한 서류가 있나요?"같은 발화가 계속 나온다.context_utterances필드와harness.retrieval_query()를 새로 두었다 — 없으면 우리가 재는 것이 「검색 성능」이 아니라 「발화가 자족적인가」가 된다.
검색 실패 16건은 전부 어휘 불일치
「가방을 두고 내렸다」↔「분실물」, 「마스크」↔「방역수칙」, 「휠체어」↔「교통약자」, 「돌려받다」↔「환급」. 4주차 dense_vector + RRF 의 근거가 계획서 주장에서 실측 목록으로 바뀌었다 — 4주차에 같은 골든셋으로 다시 재면 개선 폭이 이 16건 안에서 보여야 한다.
남긴 것
- F-2 케이스 0건 —
server/apps/closure_gate규칙표가 아직 삭제된 금융·쇼핑 POLICY 를 참조해서, 다산closure_type을 넣으면UnknownClosureType으로 하네스가 죽는다.server/는 장민석 담당이라 손대지 않았다. - AI Hub 원문은 12건만 썼다. 재배포 금지 조항 + 공개 저장소라 규모를 늘리기 전에
팀 확인이 필요하다.
source필드로 갈라 뒀으니 문체 차이는 이제 측정 가능하다.