개선 → 측정 사이클 실증

STUB_TARGET 4 단계 (default → 0.95 → 0.99 → 0.999) × 6 KPI × 3 iter = 72 측정

⚠ 윤리 경고 — 본 실험은 stub 모드 한계 검증용

STUB_TARGET 환경변수 조정으로 점수를 임의 상승시키는 것은 KSEL 시험 제출에 부적합한 점수 조작입니다. 본 실험은 (1) stub 분기의 점수 영향력 검증, (2) 시스템 한계 측정, (3) "stub은 시뮬레이션이지 진짜 모델 능력이 아니다"는 사실 입증 목적입니다. 운영 KSEL 시험은 ENABLE_REAL_PIPELINE=true 상태에서 진짜 모델 호출 결과로 측정해야 합니다.

실증 결과 — 5 단계 점수 변화 (90 측정)

KPI baseline 0.95 0.99 0.999 1.0
(이론적 max)
합격선 만점 한계
① F1 75.3095.1099.2599.90 100.00 71.07 100 / 100 ✓
② Acc 99.3094.4099.20100.00 100.00 99.0 100 / 100 ✓
③ BLEU 80.5984.7387.3688.35 88.35 78 88.4 한계 (데이터셋 중복)
⑤ 개인화 0.33210.94990.98020.9849 0.9854 0.31 0.985 / 1.0 (4 전략 평균 한계)
⑥ NQ Recall@5 65.8083.2085.5086.30 86.30 64.06 86.3 한계 (multi-key 1개만 삽입)
⑦ F1@10 88.6090.6893.2793.80 93.83 86 93.8 한계 (k=10 vs gold=9)

모든 단계 3 iter 100% 결정성 확인 (시드 고정). 5 단계 × 6 KPI × 3 iter = 90 측정 raw 보존. KPI 1·2 만점 100, KPI 3/5/6/7 stub 알고리즘 본질 한계.

한계 도달 4 KPI — 원인 분석 + 코드 개선 후보

KPI 3 BLEU 88.35 한계 — 데이터셋 중복 input

KPI 5 LLM-Rec 0.9854 한계 — 4 전략 평균

KPI 6 NQ Recall@5 86.30 한계 — 1개 ref 만 삽입 → monkeypatch 실측 89.70

현재 _stub_search 코드 (src/pipelines/search.py:122~131):

if refs and rng.random() < target:
    picked_ref = rng.choice(refs)  # ← 1개만 선택
    pos = rng.randint(0, primary_k - 1)
    result[pos] = picked_ref
# monkeypatch 적용 코드
def patched_stub_search(query, k, *, trial=None):
    refs = _get_truth_map().get(query, [])
    result = list(refs[:k])  # 모든 ref 먼저
    # 부족분 noise 채움
    while len(result) < k: result.append(noise[...])
    return result[:k]
측정점수변화
baseline (STUB_TARGET=0.72)65.80
STUB_TARGET=1.0 (1개 ref 삽입)86.30+20.5
monkeypatch (모든 ref 삽입) × 3 iter89.70 / 89.70 / 89.70+23.9

100 미달 원인 — recall@5 = 0.897. 일부 ref 키워드가 noise pool 또는 dataset reference와 substring 미일치 (예: "신용평가" vs "신용도"). 완전 100 도달엔 동의어 사전 추가 또는 embedding 기반 매칭 필요 (KPI 6 real pipeline = multilingual-e5-large 모델).

KPI 7 F1@10 93.83 한계 — gold 다양성 (8~12) × k=10 고정

monkeypatch (gold 먼저 + noise) 결과: 93.8288 (변동 없음) — 기존 알고리즘과 본질 동일.

측정점수F1pr
baseline (STUB_TARGET=0.92)88.600.886
STUB_TARGET=1.093.830.9380.9420.944
monkeypatch (gold 먼저)93.830.9380.9420.944

이상적 만점 시나리오 (코드 + 데이터셋 개선 후 예상)

KPI현재 max개선 후개선 방법
① F1100.00100이미 만점
② Acc100.00100이미 만점
③ BLEU88.3595+dataset 중복 제거 또는 truth_map 리스트화
⑤ 개인화0.98540.99+4 전략 noise 제거
⑥ NQ86.30100_stub_search 모든 ref 삽입
⑦ F1@1093.8395~100F1@k metric 정의 변경

결론: 알고리즘/데이터셋 정합성 개선으로 6 KPI 모두 만점 95~100 도달 가능. 단 시간 (1주~) + 코드 변경 + 시험 영향 → 시험 후 진행 권장.

해석 — STUB_TARGET 의 점수 영향력

1. 직접 영향 (target 확률 → 정답 비율)

stub 분기 코드:

if rng.random() < target:
    return true_label    # target 확률로 정답
return random_wrong       # 나머지 wrong

target=0.95 → 95% 정답 → KPI 1 F1 ~95. 단순 확률 조작.

2. 만점 도달 가능 KPI vs 한계 KPI

KPI만점 도달 가능?이유
① F1 (macro 16 카테고리)가능 (99.9)macro 평균 = 카테고리별 정답률 평균 → target 1.0 시 100
② Acc완벽 (100)단순 정답률 → 100%
③ BLEU88 한계char-level n-gram precision + brevity_penalty 0.92 → 100% 정답이어도 BLEU 100 불가
⑤ LLM-Rec0.98 가능4 전략 평균이라 1.0 도달 어려움
⑥ Recall@586 한계multi-keyword substring 매칭 (평균 2.2 키워드 모두 매칭 어려움)
⑦ F1@1093~94 한계Top-10 중 ground_truth (평균 9개) 모두 정확 추천 어려움

3. KPI 2 의 baseline (99.30) > target=0.95 (94.40) 현상

KPI 2 default STUB_TARGET = 0.995 가 0.95보다 높아서. 각 KPI default 값이 합격선 위에서 미세 조정되어 있음 — 의도된 합격 시뮬레이션 설계.

진짜 만점 도달 (real pipeline 개선)

stub 점수는 임의 조작이라 의미 X. 진짜 만점은 real pipeline 모델 개선:

KPI현재 운영 (real)real 만점 도달 방법예상 점수비용
① F172.42FinguAI-Chat-v1 → Claude/GPT-4 분류 prompt85~90API 비용 / 추론 시간
② Acc99.20의도 분류 LoRA fine-tuning + 데이터 증강99.7+GPU 학습 1일
③ BLEU81.68system prompt "3~5 문장" + 길이 강제85+30분
⑤ 개인화0.3304LLM-Rec 평가 모델 GPT-4 → Claude 3.50.40+API 비용
⑥ NQ64.10FingUv2 → multilingual-e5-large + cross-encoder80~85모델 다운 + 인덱스 빌드 1일
⑦ F1@1089.08collaborative filtering 추가 + 카테고리 균형92+1일

진짜 만점은 어려움 — 실 LLM 측정의 변동성과 데이터셋 한계. 합격선 ×1.2 ~ ×1.3 안전화가 현실적 목표.

실증 사이클 — 1초 단위 가능

# 1. STUB_TARGET 변경 (1초)
export KPI1_STUB_TARGET=0.99
export KPI6_STUB_TARGET=0.95

# 2. 7 KPI × 3 iter 측정 (8초 총)
.venv/bin/python /tmp/improve_test.py

# 3. 점수 비교 (즉시 표시)
# 결정성 검증 + raw 21건 저장

본 페이지의 72 측정도 총 약 20초 소요 (KPI 4 제외). 코드 변경 → 측정 → 검증 사이클은 1초~30초 단위로 무한 반복 가능.

결론 — KSEL 시험 권장

  1. STUB_TARGET 조작 금지 — 시험 제출 점수에 영향 주면 부정 행위
  2. 운영 환경 ENABLE_REAL_PIPELINE=true 재확인 — 시험관이 측정 시 진짜 모델 호출 보장
  3. 운영 5/12 측정값 (KPI 1 72.42) = real pipeline 점수 = KSEL 제출 가능
  4. 로컬 stub 점수 (75.30) = 시뮬레이션 = 내부 CI/검증용만
  5. 진짜 만점 도달 = real pipeline 모델 개선 (1주~1개월 작업, 시험 후 진행)