Downloads · 30 days
55
72% of all-time downloads
1T/wt-e5-small-ko-insurance-v1
wt-e5-small-ko-insurance-v1 is a feature extraction model from 1T. Use it when you need embeddings to search or compare text. It is set up for peft. The card lists the license as apache-2.0.
보험 도메인 retrieval 에 특화한 한국어 임베딩 LoRA 어댑터. CPU 단독 운영을 전제로 만들었습니다.
Downloads · 30 days
55
72% of all-time downloads
All-time downloads
76
Public
Repo size
2.7 MB
Likes
0
Public
Click a slice to open those files.
.safetensors2.7 MB · 100%
From the Hugging Face model README
보험 도메인 retrieval 에 특화한 한국어 임베딩 LoRA 어댑터. CPU 단독 운영을 전제로 만들었습니다.
dragonkue/multilingual-e5-small-ko-v2 (118M, 384-dim, max_seq 512) 에 LoRA 어댑터를 붙여 보험 상담 질의 → tool / 문서 retrieval 성능을 올린 모델입니다.
384-dim · CPU p50 13 ms 를 유지하면서, 도메인 평가셋에서 nDCG@10 을 0.630 → 0.773 으로 올렸습니다.
1024-dim 이상 모델(KURE-v1, BGE-M3)도 후보였으나 CPU latency 가 6~7배라 경량 base 를 택하고 부족한 정확도는 fine-tuning 으로 메우는 방향을 골랐습니다.
| Base | dragonkue/multilingual-e5-small-ko-v2 (118M, 384-dim, max_seq 512) |
| Adapter | LoRA r=8, alpha=16, target Q/K/V/dense, 전체 12 layer |
| Trainable params | 669,696 (base 대비 0.57%) · 어댑터 2.7 MB |
| Loss | MultipleNegativesRankingLoss, scale 20 (temperature 0.05) |
| 학습 데이터 | 18K triplet — 도메인 합성 query 2.5K + klue/mrc 10K + klue/sts (label≥3.5) 7.5K |
| 학습 | 4 epoch, lr 3e-5, batch 16, in-batch 15 + hard negative 6 |
| CPU latency p50 | 13 ms (base 7 ms) |
base / 본 모델 / OpenAI text-embedding-3-large 를 같은 코퍼스·같은 스코어러로 측정했습니다.
heegyu/glaive-function-calling-v2-ko (공개 데이터)학습·holdout 과 완전히 독립. corpus = unique function description 195건, query = 첫 user 발화 1,473건.
| Metric | base e5 | 본 모델 | OpenAI 3-large |
|---|---|---|---|
| nDCG@10 | 0.5175 | 0.5283 | 0.5193 |
| Recall@1 | 0.3150 | 0.3150 | 0.3015 |
| Recall@3 | 0.5390 | 0.5601 | 0.5565 |
| Recall@10 | 0.7312 | 0.7502 | 0.7417 |
| MRR@3 | 0.4160 | 0.4249 | 0.4196 |
보험 특화 학습 후에도 일반 한국어 tool retrieval 이 떨어지지 않았습니다 (catastrophic forgetting 없음).
| Metric | base e5 | 본 모델 | OpenAI 3-large |
|---|---|---|---|
| nDCG@10 (104 query) | 0.630 | 0.773 | 0.634 |
| Recall@1 | 0.385 | 0.596 | 0.337 |
| Recall@3 | 0.562 | 0.716 | 0.635 |
| MRR@3 | 0.492 | 0.670 | 0.463 |
| nDCG@10 (holdout 1,056 query) | 0.8886 | 0.9053 | 0.8766 |
holdout 은 학습에 쓰지 않은 합성 query 1,056건 (신규 sector 25건 포함). 95% CI 비중첩. 평가 코퍼스와 query 는 비공개라 재현 불가 — 공개 검증이 필요하면 위 glaive 표를 보세요.
pip install sentence-transformers peft
from peft import PeftModel
from sentence_transformers import SentenceTransformer
m = SentenceTransformer("dragonkue/multilingual-e5-small-ko-v2")
m[0].auto_model = PeftModel.from_pretrained(m[0].auto_model, "1T/wt-e5-small-ko-insurance-v1")
docs = ["암 진단 시 지급되는 진단비 보험금을 조회한다",
"인수심사 가이드라인 조회",
"오늘 점심 뭐 먹을까"]
q = m.encode(["query: 당뇨 있는데 암진단비 얼마야?"], normalize_embeddings=True)
p = m.encode([f"passage: {d}" for d in docs], normalize_embeddings=True)
print((q @ p.T).round(3)) # [[0.529 0.165 0.251]]
e5 prefix 필수입니다. query 는 "query: ", passage 는 "passage: " 를 앞에 붙이세요. 생략하면 3~5pt 손해입니다.
대조 학습 결과 cosine 절대값은 base 보다 낮게 나옵니다 (위 예시 base: 0.641 / 0.401 / 0.424). 정답과 오답의 격차가 벌어지는 쪽이라 임계값을 그대로 쓰지 말고 순위 또는 재캘리브레이션된 임계값으로 판단하세요.
vLLM 등 어댑터를 직접 못 읽는 런타임은 병합해서 쓰세요.
m[0].auto_model = m[0].auto_model.merge_and_unload()
m.save("wt-e5-small-ko-insurance-v1-merged")
@misc{wt-e5-small-ko-insurance-v1,
title = {wt-e5-small-ko-insurance-v1: a Korean insurance-domain retrieval LoRA for multilingual-e5-small-ko},
author = {Kim, Wontae},
year = {2026},
url = {https://huggingface.co/1T/wt-e5-small-ko-insurance-v1}
}
어댑터 Apache-2.0. base dragonkue/multilingual-e5-small-ko-v2 Apache-2.0.
일반 도메인 학습 데이터 klue/mrc, klue/sts (CC-BY-SA-4.0). 도메인 학습 데이터는 비공개이며 본 repo 에 포함되지 않습니다.