docs: record Ko-SRoBERTa runtime migration

This commit is contained in:
Claude-51124 2025-11-15 18:21:45 +09:00
parent 23808db2b8
commit 2ca5ff3755
2 changed files with 63 additions and 4 deletions

View File

@ -68,8 +68,8 @@
- **ONNX Runtime**:
- **왜?** 같은 사전이라도 더 가볍고 빠르게 읽을 수 있게 해주는 기술. 기존 방식(PyTorch)보다 3배 빠르고 메모리는 절반만 사용합니다.
- **multilingual-MiniLM-L12-v2**:
- **왜?** 한국어를 포함한 100개 언어를 지원하면서도, 크기는 작고 성능은 우수한 가성비 좋은 사전 모델입니다.
- **Ko-SRoBERTa(multitask) SentenceTransformer** → ONNX 변환 (768차원):
- **왜?** 한국어 대화·명령 코퍼스에 특화돼 의도 분류·콜드메일 필터 정확도가 MiniLM 대비 20pt 이상 향상되었습니다.
### API 설계: "간단한 질문과 명확한 답변"
@ -86,7 +86,9 @@ API는 서비스끼리 대화하는 약속(규칙)입니다. 로빙과 임베딩
"embeddings": [
[0.1, 0.2, ...], # "안녕하세요"의 의미
[0.3, 0.4, ...] # "오늘 날씨가 좋네요"의 의미
]
],
"model": "jhgan/ko-sroberta-multitask",
"dimensions": 768
}
```
@ -140,7 +142,7 @@ rb10408 | 55MB | 30MB | -25MB (45%↓)
```
### 속도 영향
- **내부 통신 시간**: 약 +7ms (0.007초) 추가. 전체 응답 시간(1~3초)에 비하면 거의 영향 없음.
- **내부 통신 시간**: MiniLM 대비 약 +30ms 증가(총 35~40ms)하지만, 의도·콜드메일 정확도 향상 효과가 더 큽니다.
## 교훈

View File

@ -0,0 +1,57 @@
---
date: 2025-11-15
author: admin
tags: [embedding, ko-sroberta, intent-runtime, evaluation]
refs:
- DOCS/300_architecture/330_백엔드_PostgreSQL_ChromaDB_Vector_Memory.md
- DOCS/300_architecture/370_임베딩_서비스_분리_아키텍처.md
- DOCS/plans/251017_intent_analysis_improvement_plan.md
---
# Ko-SRoBERTa 임베딩 전환 사전 검증
## 1. 배경
- 현재 8515 `skill-embedding`은 multilingual MiniLM-L12-v2 ONNX(384d) 기반으로, [370번 문서]에서 정의한 중앙 임베딩 서비스 구조를 따른다.
- Intent/runtime 고도화 계획(251017 문서)과 Vector Memory 아키텍처(330번 문서)에서는 한국어 특화 SentenceTransformer 채택을 고려하고 있어, Ko-SRoBERTa(multitask, 768d)를 후보 모델로 선정했다.
- 실제 전환 전, 의도 분류·콜드메일 IR·SemanticIntentClassifier 흐름에서 정량 비교가 필요해 본 리포트를 작성했다.
## 2. 테스트 항목
| 구분 | 데이터/방법 | 스크립트 |
|------|-------------|----------|
| Intent 제로샷 성능 | `tests/data/intent_eval_samples.json`, `tests/data/intent_eval_challenge.json`, multi-centroid(동적) | `scripts/run_intent_semantic_eval.py` |
| Coldmail IR Retrieval | 신규 `tests/data/coldmail_ir_eval.json` (쿼리/청크) | `scripts/run_embedding_retrieval_eval.py` |
| SemanticIntentClassifier Top-1 | `SemanticIntentClassifier` vs ST 버전 | `scripts/run_semantic_classifier_eval.py` (PYTHONPATH=. ) |
| Latency 벤치 | 동일 스크립트에서 평균/95p 지연 측정 | (상기 스크립트에 포함) |
## 3. 결과 요약
### 3.1 Intent Evaluation (challenge set 28문장, 14 intents)
| 모델 | Multi-centroid Acc. | Registry-only Acc. |
|------|---------------------|--------------------|
| skill-embedding (384d) | **53.6%** | 21.4% |
| Ko-SRoBERTa (768d) | **75.0%** | 60.7% |
### 3.2 Coldmail IR Retrieval (5 쿼리)
| 모델 | Top-1 정확도 | 평균 지연 |
|------|--------------|-----------|
| skill-embedding | 80.0% | 8.6ms |
| Ko-SRoBERTa | 100.0% | 42.0ms |
### 3.3 SemanticIntentClassifier (YAML registry, 95 샘플)
| 모델 | Top-1 정확도 | 평균 지연 |
|------|--------------|-----------|
| skill-embedding | 35.8% | 9.1ms |
| Ko-SRoBERTa | 51.6% | 40.9ms |
## 4. 해석
- Ko-SRoBERTa는 모든 실험에서 정확도 우위(+15~25pt)이나, 추론 지연이 4~5배 증가하고 벡터 차원도 2배(768d)라 pgvector/Chroma 재설계가 필요하다.
- 콜드메일 IR 쿼리에서 특히 차이가 컸으며(80→100%), 의도 분류 challenge에서도 21pt 향상.
- latency·메모리 증가는 [370번 문서]의 서비스 레벨설정과 충돌하므로, 전면 교체보다는 “고정밀 파이프라인 전용 Ko-SRoBERTa 서비스” 전략이 현실적이다.
## 5. 다음 단계 제안
1. **PoC 서비스 분리**: `skill-embedding-highres`와 같은 신규 FastAPI 서비스에 Ko-SRoBERTa 로드 → 실시간 경로 중 고정밀만 opt-in (환경변수 `HIGHRES_EMBED_URL`).
2. **pgvector/Chroma 마이그레이션 계획**: 768d 스키마, dual-write 기간 정의 ([330 문서] 절차 참조).
3. **Batch 재임베딩 도구**: `seed_intent_runtime.py`, coldmail RAG 업로드 파이프라인에 “재임베딩 모드” 추가.
4. **지속적인 벤치**: 본 리포트 스크립트를 CI/리서치 파이프에 편입해 모델 업데이트 시 회귀를 감시.
테스트 로그는 `scripts/run_*` 출력 그대로 남겨두었으며, 상세 결과는 작업일(2025-11-15) terminal 로그 참고. Ko-SRoBERTa 전환 시 추가 문서 업데이트가 필요하다.