๐งฌ 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
๐ง 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
- 66
Model tree for Yoonyoul/fine-tuned-e5-small-drugproduct
Base model
intfloat/multilingual-e5-small