1T
/

wt-kure-insurance-v1

๊ธด ๋ฌธ์„œ ์ธ๋ฑ์‹ฑ์šฉ ํ•œ๊ตญ์–ด ๋ณดํ—˜ ๋„๋ฉ”์ธ ์ž„๋ฒ ๋”ฉ LoRA ์–ด๋Œ‘ํ„ฐ. 256 ~ 7,500 ํ† ํฐ์„ ํ•œ ๋ชจ๋ธ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

nlpai-lab/KURE-v1 (bge-m3 backbone, 568M, 1024-dim, max_seq 8,192) ์— LoRA ์–ด๋Œ‘ํ„ฐ๋ฅผ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ์งง์€ ์ฒญํฌ๋งŒ ์ž˜ ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ธด ์ฒญํฌ์ผ์ˆ˜๋ก base ๋ฐ ์ƒ์šฉ API ์™€์˜ ๊ฒฉ์ฐจ๊ฐ€ ๋ฒŒ์–ด์ง€๋„๋ก ํ•™์Šตํ•œ ์ ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค (7,500 ํ† ํฐ Recall@1 ์—์„œ base +22.2pp, OpenAI text-embedding-3-large +59.5pp). ๊ฐ™์€ ์ฝ”ํผ์Šค๋ฅผ ์งง์€ ์ฒญํฌ(์ •๋ฐ€ ๊ฒ€์ƒ‰)์™€ ๊ธด ์ฒญํฌ(๋งฅ๋ฝ ๋ณด์กด)๋กœ ๋™์‹œ์— ์ธ๋ฑ์‹ฑํ•˜๋Š” multi-resolution ์ „๋žต์„ ๋‹จ์ผ ๋ชจ๋ธ๋กœ ์ปค๋ฒ„ํ•˜๋Š” ์šฉ๋„์ž…๋‹ˆ๋‹ค.

Base nlpai-lab/KURE-v1 (bge-m3, 568M, 1024-dim, max_seq 8,192)
Adapter LoRA r=16, alpha=32, target Q/K/V/dense
Trainable params 7,110,656 (base ๋Œ€๋น„ 1.24%) ยท ์–ด๋Œ‘ํ„ฐ 28.5 MB
Loss MultipleNegativesRankingLoss, temperature 0.05, in-batch + mined hard negative 4
ํ•™์Šต ๋ฐ์ดํ„ฐ ๋น„๊ณต๊ฐœ ๋ณดํ—˜ ๋„๋ฉ”์ธ ๋ฌธ์„œ 437๊ฑด โ†’ 4-resolution ์ฒญํฌ 15,500๊ฐœ โ†’ ํ•ฉ์„ฑ query 46,500๊ฑด (3/์ฒญํฌ) โ†’ hard negative 8/query mining โ†’ ์ƒํ’ˆ ๋‹จ์œ„ split (train 40,344 / eval 5,397 / out-of-domain test 759)
Curriculum epoch 1 short-heavy (256 ํ† ํฐ 50%) โ†’ epoch 3 long-heavy (7,500 ํ† ํฐ 50%)
ํ•™์Šต H100 80GB ร— 1, bf16 + gradient checkpointing, peak VRAM 18.6 GB, 15h 21m (3 epoch)

๋ฒค์น˜๋งˆํฌ

๊ธธ์ด๋ณ„ ๋„๋ฉ”์ธ retrieval โ€” Recall@1 (๋น„๊ณต๊ฐœ ํ‰๊ฐ€์…‹)

resolution ๋ณธ ๋ชจ๋ธ base KURE-v1 OpenAI 3-large vs base vs OpenAI
256 tok 96.32% 93.23% 89.73% +3.09pp +6.60pp
1,024 tok 94.77% 88.45% 76.51% +6.31pp +18.26pp
4,096 tok 82.06% 65.16% 37.02% +16.90pp +45.04pp
7,500 tok 77.74% 55.59% 18.22% +22.15pp +59.52pp

์œ ์˜์„ฑ์€ paired permutation test + Bonferroni ๋ณด์ •์œผ๋กœ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค (OpenAI ๋Œ€๋น„ 14์Šน 2๋ฌด 0ํŒจ).

ํ‰๊ฐ€ ์ฝ”ํผ์Šค๊ฐ€ ์‹ค์„œ๋น„์Šค (200K+ ์ฒญํฌ) ๋ณด๋‹ค ์ž‘์•„ ์ ˆ๋Œ€ ์ˆ˜์น˜๋Š” inflated ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ฐ„ ์ƒ๋Œ€ ๊ฒฉ์ฐจ๋Š” ๋™์ผ ์กฐ๊ฑด์ด๋ผ ๊ณต์ •ํ•ฉ๋‹ˆ๋‹ค. OpenAI 3-large ๋Š” 4,096/7,500 ํ† ํฐ ์ž…๋ ฅ์—์„œ 8,192 token ํ•œ๊ณ„๋ฅผ ํ”ผํ•˜๋ ค 6,000์ž๋กœ cap ํ–ˆ์Šต๋‹ˆ๋‹ค (ํ•œ๊ตญ์–ด cl100k_base ๊ธฐ์ค€ ์•ฝ 5.5~6.5K ํ† ํฐ). ํ‰๊ฐ€ ๋ฐ์ดํ„ฐ๋Š” ๋น„๊ณต๊ฐœ๋ผ ์žฌํ˜„ ๋ถˆ๊ฐ€ โ€” ๊ณต๊ฐœ ๊ฒ€์ฆ์€ ์•„๋ž˜ KorSTS ๋ฅผ ๋ณด์„ธ์š”.

์ผ๋ฐ˜ ํ•œ๊ตญ์–ด (KorSTS, 519 sentence pair ยท ๊ณต๊ฐœ ๋ฐ์ดํ„ฐ)

๋ณดํ—˜ ํŠนํ™” ํ•™์Šต์œผ๋กœ ์ผ๋ฐ˜ ์„ฑ๋Šฅ์ด ๊นŽ์˜€๋Š”์ง€ ๋ณด๋Š” forgetting probe ์ž…๋‹ˆ๋‹ค.

๋ชจ๋ธ Spearman
๋ณธ ๋ชจ๋ธ 0.8766
base KURE-v1 0.8774 (โˆ’0.07pp)
OpenAI 3-large 0.8234
e5-small-ko + LoRA (384-dim) 0.7996

base ๋Œ€๋น„ โˆ’0.07pp. forgetting ์—†์Šต๋‹ˆ๋‹ค.

Latency (per query)

ํ™˜๊ฒฝ seq=128 seq=1,024 seq=4,096 seq=7,500
H100 80GB, bf16 (์ถ”์ •, train profile ๊ธฐ๋ฐ˜) ~3 ms ~13 ms ~52 ms ~124 ms
Apple M-series CPU (์‹ค์ธก, batch=2) 108 ms 517 ms 2,488 ms 6,805 ms

568M ๋ชจ๋ธ์ด๋ผ CPU ๋Š” ๊ธด seq ์—์„œ ๋น„ํ˜„์‹ค์ ์ž…๋‹ˆ๋‹ค. GPU ๋ฅผ ์“ฐ์„ธ์š”. ์–ด๋Œ‘ํ„ฐ๋ฅผ base ์— ๋ณ‘ํ•ฉํ•˜๋ฉด base ์™€ ๋™์ผํ•œ latency ๋กœ ์„œ๋น™๋ฉ๋‹ˆ๋‹ค (PEFT inference mode ๋Š” ์งง์€ seq ์—์„œ 3~20% ์˜ค๋ฒ„ํ—ค๋“œ).

Quick Start

pip install sentence-transformers peft
from peft import PeftModel
from sentence_transformers import SentenceTransformer

m = SentenceTransformer("nlpai-lab/KURE-v1", device="cuda")
m[0].auto_model = PeftModel.from_pretrained(m[0].auto_model, "1T/wt-kure-insurance-v1")

q = m.encode(["๋ณดํ—˜๋ฃŒ ๋ถ„ํ•  ๋‚ฉ์ž… ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?"], normalize_embeddings=True)
p = m.encode(["๋ณดํ—˜๋ฃŒ๋Š” ์ผ์‹œ๋‚ฉ์„ ์›์น™์œผ๋กœ ํ•˜๋˜ ํ•„์š”์‹œ ๋ถ„ํ•  ์˜์ˆ˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.",
              "๋ณดํ—˜๊ธˆ ์ฒญ๊ตฌ๊ถŒ์˜ ์†Œ๋ฉธ์‹œํšจ๋Š” 3๋…„์ž…๋‹ˆ๋‹ค.",
              "์˜ค๋Š˜ ์ ์‹ฌ ๋ญ ๋จน์„๊นŒ"], normalize_embeddings=True)
print(q.shape, (q @ p.T).round(3))   # (1, 1024) [[0.73 0.038 0.178]]

query prefix ๋Š” ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค (bge-m3 ๊ณ„์—ด). ๋Œ€์กฐ ํ•™์Šต์œผ๋กœ cosine ์ ˆ๋Œ€๊ฐ’ ๋ถ„ํฌ๊ฐ€ base ์™€ ๋‹ค๋ฅด๋ฏ€๋กœ ์ž„๊ณ„๊ฐ’์€ ์žฌ์บ˜๋ฆฌ๋ธŒ๋ ˆ์ด์…˜ํ•˜์„ธ์š”.

vLLM (--task embed) ๋“ฑ ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ง์ ‘ ๋ชป ์ฝ๋Š” ๋Ÿฐํƒ€์ž„์€ ๋ณ‘ํ•ฉํ•ด์„œ ์“ฐ์„ธ์š”.

m[0].auto_model = m[0].auto_model.merge_and_unload()
m.save("wt-kure-insurance-v1-merged")

ํ•œ๊ณ„

  • 1024-dim ยท 568M ์ด๋ผ CPU ๋‹จ๋… ์šด์˜์—๋Š” ๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค. ์งง์€ ์งˆ์˜ ์œ„์ฃผ๋ฉด 1T/wt-e5-small-ko-insurance-v1 (384-dim, CPU 13 ms) ์ชฝ์ด ๋งž์Šต๋‹ˆ๋‹ค.
  • ํ•™์Šต query ๊ฐ€ LLM ํ•ฉ์„ฑ์ด๋ผ ์‹ค์ œ ์‚ฌ์šฉ์ž ๋ฐœํ™” ๋ถ„ํฌ์™€ ์™„์ „ํžˆ ๊ฐ™์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • ์–ด๋Œ‘ํ„ฐ๋งŒ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. tokenizer ยท pooling ์„ค์ •์€ base ๋ฅผ ๊ทธ๋Œ€๋กœ ์”๋‹ˆ๋‹ค.

์ธ์šฉ

@misc{wt-kure-insurance-v1,
  title  = {wt-kure-insurance-v1: a long-context Korean insurance-domain retrieval LoRA for KURE-v1},
  author = {Kim, Wontae},
  year   = {2026},
  url    = {https://huggingface.co/1T/wt-kure-insurance-v1}
}

๋ผ์ด์„ ์Šค ยท ๊ณ ์ง€

์–ด๋Œ‘ํ„ฐ MIT (base ๋ผ์ด์„ ์Šค ์Šน๊ณ„). base nlpai-lab/KURE-v1 MIT, ๊ทธ backbone BAAI/bge-m3 MIT. ๋„๋ฉ”์ธ ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” ๋น„๊ณต๊ฐœ์ด๋ฉฐ ๋ณธ repo ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Downloads last month
14
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for 1T/wt-kure-insurance-v1

Base model

BAAI/bge-m3
Adapter
(1)
this model

Evaluation results