๐งฌ Fine-tuned E5-small for Korean Drug Product Semantic Embedding
๐ Model Overview
์ด ๋ชจ๋ธ์ intfloat/multilingual-e5-small ๊ธฐ๋ฐ์ผ๋ก,
์์ฝํ ์์ฝยท์์ธ ๋ฐ์ดํฐ(drug_summary, drug_details) ๋ฐ ์ ํ ์ ํ ์ ์(drug_type_definition), DUR ๊ท์ ์ ์(drug_dur_type_definition)๋ฅผ ํ์ฉํ์ฌ
ํ๊ตญ์ด ์์ฝํ ๋๋ฉ์ธ์ ๋ง๊ฒ 3๋จ๊ณ ํ์ธํ๋(fine-tuning) ๋ SentenceTransformer ๋ชจ๋ธ์
๋๋ค.
- GitHub Repository: https://github.com/ryukato/fine-tuned-e5-drugmodel
๐งฉ Base Model Selection Rationale
์ด ํ๋ก์ ํธ๋ ๋ค๊ตญ์ด ํ๊ฒฝ์์๋ ์์ฝํ ๋ช
์นญ, ํจ๋ฅ, DUR ๊ท์ ์ ๋ณต์กํ ์๋ฏธ ๊ด๊ณ๋ฅผ ์ ํํ ์๋ฒ ๋ฉํ๊ธฐ ์ํด
E5(multilingual-E5) ๊ณ์ด ๋ชจ๋ธ ์ค intfloat/multilingual-e5-small์ ์ ํํ์ต๋๋ค.
์ ์ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
๋ค๊ตญ์ด ๋ฌธ์ฅ ํํ๋ ฅ
- ์์ด๋ฟ ์๋๋ผ ํ๊ตญ์ด, ์ผ๋ณธ์ด, ์ค๊ตญ์ด, ๋ ์ผ์ด ๋ฑ ๋ค์ํ ์ธ์ด์์ ๊ท ํ ์กํ ์๋ฏธ ํํ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค.
- ์์ฝํ ๋ฐ์ดํฐ๋ ์ธ๋์ดยทํ์ ์ฉ์ด๊ฐ ํผํฉ๋ ํํ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ multilingual encoder๊ฐ ์ ๋ฆฌํฉ๋๋ค.
ํจ์จ์ ์ฑ๋ฅ ๋๋น ํ๋ผ๋ฏธํฐ ํฌ๊ธฐ (Small Variant)
small๋ชจ๋ธ์ ์ฝ 33M ํ๋ผ๋ฏธํฐ๋ก, M1/M2 ๋งฅ๋ถ ๋ฑ ๋ก์ปฌ ํ๊ฒฝ์์๋ ์์ ์ ์ผ๋ก fine-tuning ๊ฐ๋ฅํ์ต๋๋ค.- FP16 ๋๋ bfloat16 ์ง์์ผ๋ก GPUยทMPS ํ๊ฒฝ์์๋ ํจ์จ์ ์ธ ์ฐ์ฐ์ ์ ๊ณตํฉ๋๋ค.
๋ฌธ์ฅ ๋จ์ ์๋ฏธ ๊ฒ์(semantic retrieval)์ ์ต์ ํ
- E5 ๋ชจ๋ธ์ โ๋ฌธ์ฅ ๋จ์ ์๋ฏธ ์๋ฒ ๋ฉ(Sentence Embedding)โ์ ์ํด ํ์ต๋์ด ์์ด,
๋จ์ ์ง์("๊ธฐ์นจ์ฝ","์ด ๋ด๋ฆฌ๋ ์ฝ")์ ์ ํ๋ช ("ํ์ฝ์์ด","ํ์ด๋ ๋") ๊ฐ ์๋ฏธ ๋งค์นญ์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค.
- E5 ๋ชจ๋ธ์ โ๋ฌธ์ฅ ๋จ์ ์๋ฏธ ์๋ฒ ๋ฉ(Sentence Embedding)โ์ ์ํด ํ์ต๋์ด ์์ด,
Sentence-Transformers์ ์๋ฒฝํ ํธํ์ฑ
SentenceTransformer์ธํฐํ์ด์ค์ 100% ํธํ๋์ด, PyTorch ๊ธฐ๋ฐ pipeline ํตํฉ์ด ์ฉ์ดํ์ต๋๋ค.
๐น Step 1: Drug Type Semantic Alignment
- ๋ฐ์ดํฐ์
:
drug_type_def_list.csv - ๋ชฉํ:
"ํด์ด์ " โ "์ฒด์จ์ ๋ฎ์ถ๋ ์ฝ"๊ณผ ๊ฐ์ ๊ฐ๋ ๋งคํ ํ์ต - ๋ชจ๋ธ ๊ฒฐ๊ณผ:
/model/fine_tuned_e5_small_drugtype
๐น Step 2: DUR Type Semantic Alignment
- ๋ฐ์ดํฐ์
:
drug_dur_type_similarity_train.csv - ๋ชฉํ:
"์๋ถ๊ธ๊ธฐ","๋ ธ์ธ์ฃผ์","๋ณ์ฉ๊ธ๊ธฐ"๋ฑ DUR ํ์ ๊ณผ ์ ๋ฌธ์ ์ค๋ช ๊ฐ ์๋ฏธ ๋งคํ ํ์ต - ๋ชจ๋ธ ๊ฒฐ๊ณผ:
/model/fine_tuned_e5_small_drugdurtype
๐น Step 3: Drug Product Semantic Alignment
- ๋ฐ์ดํฐ์
:
drug_product_similarity_train.csv(์ฝ 3,000๊ฑด ์ํ) - ๋ชฉํ:
"ํ์ฝ์์ด๋ด๋ณต์ก"๊ฐ์ ์ค์ ์ ํ๊ณผ"์ด์ ๋ด๋ฆฌ๋ ์ฝ"๊ฐ์ ์ง์ ๊ฐ ์๋ฏธ ๋งค์นญ ๊ฐํ - ๋ชจ๋ธ ๊ฒฐ๊ณผ:
/model/fine_tuned_e5_small_drugproduct_accum
๐น Experimental: Drug Ingredient + Product Type Fine-tuning
fine_tuned_e5_small_drugdurtype ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก,
์์ฝํ ์ฑ๋ถ(ingredient_name)๊ณผ ์ ํ ์ ํ(product_type)์ ๊ฒฐํฉํ
์๋ฒ ๋ฉ ํ์ต(fine_tuned_e5_small_drug_ptype_ingredients)์ ์ถ๊ฐ๋ก ์ํํ์์ต๋๋ค.
โ๏ธ ์ ์ฉ ๋ด์ฉ
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ํ์ต ๋ฐ์ดํฐ | "์ฑ๋ถ๋ช
์(๋) ์ ํ์ ํ ์ ์ ์์ ์ฌ์ฉ๋๋ ์์ฝ ์ฑ๋ถ์ด๋ค." |
| ์ํ ์ฌ์ด์ฆ | 1,289 |
| ํ๊ท ์์ค | 0.0012 |
| ์ ์ฌ๋ ํ๊ฐ | ์๋ฏธ์ ๊ตฌ๋ถ์ด ์ถฉ๋ถํ ์ด๋ฃจ์ด์ง์ง ์์ |
| ๊ด์ฐฐ ์์ | โ์์ผยท์งํต์ โ ๊ณ์ด์ ์ด๋ถํ๋กํ๊ณผ ๋น๊ด๋ จ ์ฑ๋ถ์ธ ์ผํ๋ํธ๋ฅจ, ์ธํฐ๋ฆฌ์ง์ด ๋ชจ๋ 0.91~0.94 ์์ค์ ์ ์ฌ๋๋ฅผ ๋ณด์ |
๐ ๊ด์ฐฐ ๋ด์ฉ
- ๋ชจ๋ธ์ ์์ ์ ์ผ๋ก ์๋ ดํ์์ผ๋, ๋ฌธ์ฅ ํจํด์ ๋ฐ๋ณต์ฑ๊ณผ Positive-only ๋ฐ์ดํฐ ๊ตฌ์ฑ์ผ๋ก ์ธํด
ํจ๋ฅ๊ตฐ ๊ฐ ์๋ฏธ์ ๊ฒฝ๊ณ๊ฐ ์ ๋๋ก ํ์ฑ๋์ง ์์์. - ์ ์ฒด ์ ์ฌ๋ ๋ถํฌ๊ฐ ๊ณผ๋ํ๊ฒ ๋๊ฒ ์๋ ดํ์ฌ, ์๋ฏธ๋ณด๋ค ๋ฌธ์ฒด ํจํด์ ์ค์ฌ์ผ๋ก ํ์ต๋ ๊ฒ์ผ๋ก ๊ด์ฐฐ๋จ.
- ๊ฒฐ๋ก ์ ์ผ๋ก ๋ณธ ๋ชจ๋ธ์ ์ฑ๋ถ-์ ํ์ ํ ๊ฒฐํฉ ํ์ต์ด ์๋ฏธ ๊ฒ์ ํ์ง ๊ฐ์ ์ ์ค์ง์ ์ด์ ์ ์ ๊ณตํ์ง ์์์ ํ์ธํ์์ผ๋ฉฐ, ํ์ฌ ํ์ดํ๋ผ์ธ์๋ ์ ์ฉํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํจ.
๐ง Use Case Example
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer("Yoonyoul/fine-tuned-e5-small-drugproduct")
query = "์ด์ ๋ด๋ฆฌ๋ ์ฝ์?"
docs = [
"ํ์ฝ์์ด๋ด๋ณต์ก์ ํด์ด์งํต์ ์
๋๋ค.",
"๋ง์ด์๋ถํจ์ ์ ํญ๊ฒฐํต์ ์
๋๋ค.",
"์ง๋ฅดํ
์ ์ ํญํ์คํ๋ฏผ์ ์
๋๋ค."
]
emb_q = model.encode(query, convert_to_tensor=True)
emb_d = model.encode(docs, convert_to_tensor=True)
scores = util.cos_sim(emb_q, emb_d)[0]
for doc, score in zip(docs, scores):
print(f"{doc} โ ์ ์ฌ๋: {score.item():.4f}")
โ๏ธ Training Environment
| ํญ๋ชฉ | ๋ฒ์ |
|---|---|
| Python | 3.12.4 |
| torch | 2.4.1 |
| transformers | 4.44.2 |
| sentence-transformers | 3.0.1 |
| accelerate | 0.27.0 |
| pandas | 2.2.3 |
๐ Release Info
- Author: @Yoonyoul
- Base Model:
intfloat/multilingual-e5-small - Fine-tuned Model:
Yoonyoul/fine-tuned-e5-small-drugproduct - Repository: https://github.com/ryukato/fine-tuned-e5-drugmodel
- Last Updated: 2025-10-27
- Downloads last month
- 106
Model tree for Yoonyoul/fine-tuned-e5-small-drugproduct
Base model
intfloat/multilingual-e5-small