골든셋 다산 기준 재확장 — 13건 → 150건

무엇을

다산콜센터 단일 도메인 기준으로 골든셋을 150건까지 늘린다.

왜

도메인 축소(_project/decisions/201)로 50건이 13건으로 줄었다. 13건으로 낸 Recall@5·MRR 은 신뢰할 수 없다 — 1건이 7.7%p 를 움직인다. 3주차 150건 계획이 4개 도메인 배분을 전제로 짜여 있어 그대로는 쓸 수 없다.

어떻게

완료 조건


결과 (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 가 이제 이것을 표시한다(전에는 깨끗한 해시로 기록됐다).

이 확장이 실제로 잡아낸 것 셋

  1. C-5 절대 규칙이 처음으로 ❌ 가 됐다. 전에는 표본 18건 위의 「누락 0건 ✅」이었다. 뚫린 두 건은 둘 다 P6(인명) — "저는 최지훈이고요" · "신청인 이름은 한서윤으로" 가 규칙 폴백의 문맥 밖이다. 미결 “P6·P7 NER — ai/ 몫” 이 이 자리다.
  2. 채점기가 「안 가려짐」과 「다른 이름으로 가려짐」을 구분하지 못했다. "집 전화 0221234567" 은 값이 가려졌는데 P3 로 잡혀 누락으로 셌다 — 가짜 위반이 진짜 누락을 가리고 있었다. pattern_mismatch_count 를 따로 세도록 고쳤다.
  3. 서류 문의의 상당수가 단독으로는 답이 없는 중간 턴이다. AI Hub 실제 전사에서 "필요한 서류가 있나요?" 같은 발화가 계속 나온다. context_utterances 필드와 harness.retrieval_query() 를 새로 두었다 — 없으면 우리가 재는 것이 「검색 성능」이 아니라 「발화가 자족적인가」가 된다.

검색 실패 16건은 전부 어휘 불일치

「가방을 두고 내렸다」↔「분실물」, 「마스크」↔「방역수칙」, 「휠체어」↔「교통약자」, 「돌려받다」↔「환급」. 4주차 dense_vector + RRF 의 근거가 계획서 주장에서 실측 목록으로 바뀌었다 — 4주차에 같은 골든셋으로 다시 재면 개선 폭이 이 16건 안에서 보여야 한다.

남긴 것