wip: phase_z2 evidence 파이프라인 + matching 실험(phase2~26) + 프론트 trace 패널 진행분 스냅샷
- src: phase_z2 composition/mapper/pipeline/placement_planner/retry, ai_fallback(prompts/schema/validate), mdx_text_atoms 신규 - Front: PipelineTracePanel 신규, FramePanel/SlideCanvas/Home/designAgentApi 등 갱신 + 테스트 4종 추가 - templates/phase_z2: catalog(component_expansion_registry, node_slot_mapping 신규), frames, families, slide_base 갱신 - tests/matching: phase2~26 매칭 실험 스크립트·리포트·온톨로지 전체 (미커밋 진행분) - tests: b4_v4 evidence, task5~28.5 시리즈, regression(imp95 baseline) 등 신규 테스트 대량 추가 - docs/reference: MDX 구조 인벤토리, MDX→Frame 구조 계약 문서 - scripts: mdx 계약/parity/coverage/viewport 체크, gitea comment, run sync 유틸 - .gitignore: tmp*.json, chromedriver, .orchestrator, *.pkl, Front_test* 등 임시/스냅샷 제외 미완성 작업의 보존용 스냅샷 커밋 (2026-07-02) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
# Phase 15 — 왜 키워드만으론 실패하고, AI 구조+의미가 붙으니 성공하는가
|
||||
|
||||
## 🎬 시나리오
|
||||
|
||||
**MDX03-1** "1. DX 시행을 위한 필수 요건" (기술·사람·자연 3요소)
|
||||
|
||||
**정답**: Frame 13 (3열 구조 "필수조건" — 기술/사람/자연 카드)
|
||||
**오답으로 자주 잡히는 후보**: Frame 15 ("정책목표" — 성장·비용절감·안전 4개 카드)
|
||||
|
||||
| 정답 | 오답(TF-IDF 1위) |
|
||||
|------|------------------|
|
||||
| <br>**Frame 13** — 필수조건 | <br>**Frame 15** — 정책목표 |
|
||||
|
||||
두 프레임 모두 **3~4열 카드 배치** + 건설·DX 관련 용어가 등장 → 단어만 보면 구분이 어려움.
|
||||
|
||||
---
|
||||
|
||||
# Part 1. 기존 방식 — TF-IDF (키워드 표면만 본다)
|
||||
|
||||
### TF-IDF Top-3 결과
|
||||
|
||||
| 순위 | Frame | 점수 | 결과 |
|
||||
|------|-------|------|------|
|
||||
| 1위 | **15** | 57% | ✗ 오답(1위) |
|
||||
| 2위 | **13** | 39% | ⭐ 정답 |
|
||||
| 3위 | **20** | 25% | |
|
||||
|
||||
### 왜 Frame 15가 1위로 잘못 뽑혔나 — 공통 단어 분해
|
||||
|
||||
**MDX03-1 ↔ Frame 15 (정책목표) — 공통 단어 상위 8개**
|
||||
|
||||
| 단어 | MDX TF-IDF | Frame 15 TF-IDF | 기여도 |
|
||||
|------|------------|-----------------|--------|
|
||||
| 지식 | 0.045 | 0.057 | 0.0026 |
|
||||
| 등에 | 0.034 | 0.043 | 0.0015 |
|
||||
| 능력 | 0.017 | 0.086 | 0.0015 |
|
||||
| 사용자 | 0.027 | 0.051 | 0.0014 |
|
||||
| 투자 | 0.036 | 0.031 | 0.0011 |
|
||||
| 경험 | 0.051 | 0.022 | 0.0011 |
|
||||
| 프로세스의 | 0.020 | 0.051 | 0.0010 |
|
||||
| DX | 0.054 | 0.017 | 0.0009 |
|
||||
|
||||
**MDX03-1 ↔ Frame 13 (필수조건, 정답) — 공통 단어 상위 8개**
|
||||
|
||||
| 단어 | MDX TF-IDF | Frame 13 TF-IDF | 기여도 |
|
||||
|------|------------|-----------------|--------|
|
||||
| 기술 | 0.050 | 0.052 | 0.0026 |
|
||||
| 역량 | 0.020 | 0.104 | 0.0021 |
|
||||
| 투자 | 0.036 | 0.042 | 0.0015 |
|
||||
| 여건 | 0.020 | 0.069 | 0.0014 |
|
||||
| 지식 | 0.045 | 0.026 | 0.0012 |
|
||||
| 지속적인 | 0.034 | 0.030 | 0.0010 |
|
||||
| 위한 | 0.034 | 0.029 | 0.0010 |
|
||||
| Process의 | 0.020 | 0.035 | 0.0007 |
|
||||
|
||||
### TF-IDF가 실패하는 이유
|
||||
|
||||
1. **단어 표면만 본다**: "요건"이라는 단어가 MDX(필수 **요건**)에도 있고 Frame 15(실행**요건**)에도 있음. 문맥·의미는 완전 다른데 TF-IDF는 그냥 같은 단어로 취급
|
||||
2. **Frame 13의 핵심 단어 "필수조건"이 깨진다**: Kiwi 같은 형태소 분석기는 "필수조건"을 "필수" + "조건"으로 분해. MDX는 "필수 **요건**"을 쓰는데 Frame 13은 "필수**조건**". "요건" ↔ "조건"은 동의어인데 글자가 달라 매칭이 안 됨
|
||||
3. **구조를 못 본다**: "이 MDX는 3요소 병렬 설명이고 Frame 13도 3열 병렬 카드"라는 구조 정보를 TF-IDF는 인지 불가. "몇 열", "어떤 패턴" 정보가 통째로 빠짐
|
||||
|
||||
→ 결과: 표면 단어 겹침이 많은 Frame 15가 1위로, 진짜 같은 구조·의미인 Frame 13이 2위로 밀림
|
||||
|
||||
---
|
||||
|
||||
# Part 2. AI-Meta — AI가 구조와 의미를 개념 집합으로 정규화
|
||||
|
||||
### AI가 사전에 뽑아둔 개념 집합 (metadata_db.yaml)
|
||||
|
||||
**MDX03-1** (layout_hint: `3col-parallel`)
|
||||
|
||||
```yaml
|
||||
concepts: ['기술', '디지털', '사람', '역량', '자연', '여건', '투자', '지식', '혁신', '경험', '전문지식', '창의성']
|
||||
```
|
||||
|
||||
**Frame 13** (정답)
|
||||
|
||||
```yaml
|
||||
concepts: ['기술', '디지털', '사람', '역량', '자연', '여건', '지식', '투자', '필수조건']
|
||||
```
|
||||
|
||||
**Frame 15** (TF-IDF가 1위로 찍었던 오답)
|
||||
|
||||
```yaml
|
||||
concepts: ['정책', '목표', '실행', '요건', '성장', '비용절감', '안전', '고부가가치']
|
||||
```
|
||||
|
||||
### AI-Meta Top-3 결과
|
||||
|
||||
| 순위 | Frame | 점수 | 결과 |
|
||||
|------|-------|------|------|
|
||||
| 1위 | **13** | 76.2% | ⭐ 정답 |
|
||||
| 2위 | **27** | 12.7% | |
|
||||
| 3위 | **04** | 4.8% | |
|
||||
|
||||
### 왜 Frame 13이 1위가 됐나 — 개념 교집합
|
||||
|
||||
**MDX03-1 ∩ Frame 13 (정답)**
|
||||
|
||||
| 공통 개념 | Figma 출현 빈도 | IDF (희귀도) |
|
||||
|-----------|----------------|--------------|
|
||||
| **사람** | 1/32 | 3.47 |
|
||||
| **여건** | 1/32 | 3.47 |
|
||||
| **자연** | 1/32 | 3.47 |
|
||||
| **역량** | 1/32 | 3.47 |
|
||||
| **지식** | 1/32 | 3.47 |
|
||||
| **기술** | 2/32 | 2.77 |
|
||||
| **투자** | 2/32 | 2.77 |
|
||||
| **디지털** | 5/32 | 1.86 |
|
||||
|
||||
**공통 8개 (IDF 합 = 24.73)**
|
||||
|
||||
**MDX03-1 ∩ Frame 15 (오답)**
|
||||
|
||||
**공통 개념 0개** — "요건" 같은 표면 단어는 TF-IDF 단계에서 걸리지만, AI는 "요건"이 Frame 15에서는 "정책 실행요건"을 의미하기에 MDX03-1의 "필수 요건" 개념과 다르게 추출함
|
||||
|
||||
### AI-Meta가 성공하는 이유
|
||||
|
||||
1. **동의어 정규화**: AI가 MDX03-1 본문을 읽고 "필수 요건"을 직접 단어로 쓰지 않고, 그 내용인 `[기술, 사람, 자연, 여건, ...]`로 개념화. Frame 13도 같은 핵심 개념으로 태그. **표면 단어가 다르더라도 의미 일치**
|
||||
2. **구조 힌트 포함**: `layout_hint: 3col-parallel`이라는 구조 태그가 있어 "3열 병렬 카드"끼리 매칭 선호 가능 (현재 구현은 concepts만 쓰지만 layout_hint도 활용 가능)
|
||||
3. **희귀 개념 우대**: IDF로 "여건, 사람, 자연, 역량" 같은 이 MDX에만 특징적인 개념은 3.47이라는 큰 가중치. "디지털"처럼 많은 프레임에 나오는 일반어는 1.86으로 낮은 가중치
|
||||
4. **근거가 투명**: 어떤 개념이 겹쳐서 몇 점이 됐는지 한눈에 확인 가능. Cross-encoder 같은 블랙박스와 달리 사람이 metadata_db를 직접 편집해서 튜닝 가능
|
||||
|
||||
---
|
||||
|
||||
# 최종 Before/After 비교
|
||||
|
||||
| | TF-IDF (키워드만) | AI-Meta (키워드+구조+의미) |
|
||||
|---|---|---|
|
||||
| 1위 선택 | Frame 15 ❌ | Frame 13 ⭐ |
|
||||
| 기준 | 단어 표면 겹침 | 개념 집합 일치 (구조 포함) |
|
||||
| 동의어 | 못 다룸 ("요건"↔"조건" 실패) | AI가 사전에 같은 개념으로 정규화 |
|
||||
| 구조 | 무시 | layout_hint로 명시적 태깅 |
|
||||
| 설명 가능성 | 공통 단어 나열 → 설명 제한적 | 개념 교집합 + IDF → 명확 |
|
||||
| 튜닝 | corpus 변경하면 IDF 전체 재계산 | metadata_db에 개념 추가/수정으로 조정 |
|
||||
| 비용 | AI 불필요, 가벼움 | 사전 AI 1회 호출 필요 (이후 저장된 데이터만 사용) |
|
||||
|
||||
**결론**: 키워드 기반은 표면 단어 한계에 막힌다. AI가 구조·의미를 미리 개념 집합으로 정규화하는 순간, 동의어·구조 불일치 문제가 자연스럽게 해결된다.
|
||||
Reference in New Issue
Block a user