Korean Sentence-BERT 384d (Dimension-Reduced)
์ด ๋ชจ๋ธ์ ํ๊ตญ์ด ๋ฌธ์ฅ ์๋ฒ ๋ฉ์ ์ํ ์ฐจ์ ์ถ์ Sentence-BERT ๋ชจ๋ธ์ ๋๋ค. 768์ฐจ์์ 384์ฐจ์์ผ๋ก ์ถ์ํ์ฌ 50% ๋ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ์๋ฒ ๋ฉ์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ธ ์ ๋ณด
- ๋ฒ ์ด์ค ๋ชจ๋ธ: jhgan/ko-sbert-multitask
- ์๋ฒ ๋ฉ ์ฐจ์: 384 (์๋ณธ: 768)
- ์ฐจ์ ์ถ์์จ: 50%
- ์ ์ฌ๋ ๋ณด์กด์จ: 99.25%
- ์ต์ข ์์ค: 0.000301
- ์ต๋ ์ํ์ค ๊ธธ์ด: 128
- ์ธ์ด: ํ๊ตญ์ด (Korean)
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ: sentence-transformers
์ฑ๋ฅ ํน์ง
โจ ๋น ๋ฅธ ์๋: 768์ฐจ์ ๋๋น ์ฝ 2๋ฐฐ ๋น ๋ฅธ ์ฒ๋ฆฌ
๐พ ์ ์ ๋ฉ๋ชจ๋ฆฌ: 50% ๊ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
๐ฏ ๋์ ์ ํ๋: 99.25% ์ ์ฌ๋ ๋ณด์กด
๐ฆ ์๋ฒฝํ ํธํ: SentenceTransformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ์ง์
์ฌ์ฉ ๋ฐฉ๋ฒ
์ค์น
pip install sentence-transformers
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
from sentence_transformers import SentenceTransformer
# ๋ชจ๋ธ ๋ก๋
model = SentenceTransformer('YOUR_USERNAME/ko-sbert-384-reduced')
# ๋ฌธ์ฅ ์๋ฒ ๋ฉ
sentences = ['์๋
ํ์ธ์', '๋ฐ๊ฐ์ต๋๋ค', '์ข์ ์์นจ์
๋๋ค']
embeddings = model.encode(sentences)
print(f"์๋ฒ ๋ฉ shape: {embeddings.shape}")
# ์ถ๋ ฅ: ์๋ฒ ๋ฉ shape: (3, 384)
๋ฌธ์ฅ ์ ์ฌ๋ ๊ณ์ฐ
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('YOUR_USERNAME/ko-sbert-384-reduced')
# ๋ฌธ์ฅ ์
sentences = [
'๋ ์จ๊ฐ ์ข์ต๋๋ค',
'์ค๋ ๋ ์จ๊ฐ ์ ๋ง ์ข๋ค์',
'ํ์ด์ฌ ํ๋ก๊ทธ๋๋ฐ์ ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค'
]
# ์๋ฒ ๋ฉ ์์ฑ
embeddings = model.encode(sentences, convert_to_tensor=True)
# ์ฝ์ฌ์ธ ์ ์ฌ๋ ๊ณ์ฐ
cosine_scores = util.cos_sim(embeddings, embeddings)
print("๋ฌธ์ฅ ์ ์ฌ๋ ํ๋ ฌ:")
print(cosine_scores)
์๋ฏธ ๊ฒ์ (Semantic Search)
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('YOUR_USERNAME/ko-sbert-384-reduced')
# ๋ฌธ์ ์ปฌ๋ ์
documents = [
'์ธ๊ณต์ง๋ฅ์ ์ปดํจํฐ ๊ณผํ์ ํ ๋ถ์ผ์
๋๋ค',
'๋จธ์ ๋ฌ๋์ ๋ฐ์ดํฐ๋ก๋ถํฐ ํ์ตํ๋ ๊ธฐ์ ์
๋๋ค',
'์์ฐ์ด ์ฒ๋ฆฌ๋ ์ธ๊ฐ์ ์ธ์ด๋ฅผ ๋ค๋ฃน๋๋ค',
'๋ฅ๋ฌ๋์ ์ธ๊ณต ์ ๊ฒฝ๋ง์ ์ฌ์ฉํฉ๋๋ค',
'ํ๊ตญ์ด๋ ๊ต์ฐฉ์ด์
๋๋ค'
]
# ์ฟผ๋ฆฌ
query = '์ธ๊ณต์ง๋ฅ์ ๋ํด ์๋ ค์ฃผ์ธ์'
# ์๋ฒ ๋ฉ
doc_embeddings = model.encode(documents, convert_to_tensor=True)
query_embedding = model.encode(query, convert_to_tensor=True)
# ์ ์ฌ๋ ๊ณ์ฐ
scores = util.cos_sim(query_embedding, doc_embeddings)[0]
# ์์ ๊ฒฐ๊ณผ ์ ๋ ฌ
top_results = scores.argsort(descending=True)
print("๊ฒ์ ๊ฒฐ๊ณผ:")
for idx in top_results[:3]:
print(f" ์ ์: {scores[idx]:.4f} - {documents[idx]}")
๋ฐฐ์น ์ฒ๋ฆฌ
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('YOUR_USERNAME/ko-sbert-384-reduced')
# ๋๋์ ๋ฌธ์ฅ ์ฒ๋ฆฌ
large_corpus = ['๋ฌธ์ฅ 1', '๋ฌธ์ฅ 2', ...] # ์์ฒ~์๋ง ๊ฐ
# ๋ฐฐ์น ์ฒ๋ฆฌ๋ก ๋น ๋ฅด๊ฒ ์๋ฒ ๋ฉ
embeddings = model.encode(
large_corpus,
batch_size=64,
show_progress_bar=True,
convert_to_tensor=True
)
ํ์ฉ ์ฌ๋ก
- ๋ฌธ์ฅ ์ ์ฌ๋ ์ธก์ : ๋ ๋ฌธ์ฅ์ด ์ผ๋ง๋ ๋น์ทํ์ง ๊ณ์ฐ
- ์๋ฏธ ๊ฒ์ (Semantic Search): ์ฟผ๋ฆฌ์ ๊ฐ์ฅ ๊ด๋ จ ์๋ ๋ฌธ์ ์ฐพ๊ธฐ
- ํ ์คํธ ํด๋ฌ์คํฐ๋ง: ๋น์ทํ ๋ฌธ์ฅ๋ค์ ๊ทธ๋ฃนํ
- ์ค๋ณต ํ์ง: ์ ์ฌํ ํ ์คํธ ์ฐพ๊ธฐ
- ์ถ์ฒ ์์คํ : ์ฝํ ์ธ ๊ธฐ๋ฐ ์ถ์ฒ
- ์ง์์๋ต ์์คํ : ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ๋ต๋ณ ์ฐพ๊ธฐ
- ๋ฌธ์ ๋ถ๋ฅ: ํ ์คํธ ์นดํ ๊ณ ๋ฆฌ ๋ถ๋ฅ
๊ธฐ์ ์์ธ
์ํคํ ์ฒ
Input Text (ํ๊ตญ์ด ๋ฌธ์ฅ)
โ
Tokenization (ํ ํฐํ)
โ
BERT Encoder (768์ฐจ์)
โ
Mean Pooling (ํ๊ท ํ๋ง)
โ
Linear Layer (768 โ 384)
โ
Layer Normalization
โ
L2 Normalization
โ
Output Embedding (384์ฐจ์)
ํ์ต ์ ๋ณด
- ๋ฒ ์ด์ค ๋ชจ๋ธ: jhgan/ko-sbert-multitask
- ํ์ต ๋ฐฉ๋ฒ: Similarity Matrix Distillation
- ์์ค ํจ์: MSE on Cosine Similarity Matrices
- ์ต์ ํ: Adam (lr=0.001)
- ์ ๊ทํ: L2 Normalization
- ์ต๋ ๊ธธ์ด: 128 tokens
์ฑ๋ฅ ๋น๊ต
| ์ฐจ์ | ์๋ | ๋ฉ๋ชจ๋ฆฌ | ์ ์ฌ๋ ๋ณด์กด |
|---|---|---|---|
| 768 (์๋ณธ) | 1.0x | 100% | 100% |
| 384 (๋ณธ ๋ชจ๋ธ) | ~2.0x | 50% | 99.2% |
๋ฐ์ดํฐ์
๋ค์ ํ๊ตญ์ด ๋ฐ์ดํฐ์ ์ผ๋ก ํ์ต๋์์ต๋๋ค:
- KorNLI (์์ฐ์ด ์ถ๋ก )
- KorSTS (์๋ฏธ ์ ์ฌ๋)
- NSMC (์ํ ๋ฆฌ๋ทฐ)
- KorQuAD (์ง์์๋ต)
- ์ถ๊ฐ ํ๊ตญ์ด ๋ํ ๋ฐ์ดํฐ
ํธํ์ฑ
์ง์ ๋ฒ์
- โ sentence-transformers >= 2.0.0
- โ transformers >= 4.0.0
- โ PyTorch >= 1.6.0
๋ชจ๋ ํ์ค ๋ฉ์๋ ์ง์
model = SentenceTransformer('YOUR_USERNAME/ko-sbert-384-reduced')
# ๋ค์ํ ์ต์
์ฌ์ฉ ๊ฐ๋ฅ
embeddings = model.encode(sentences)
embeddings = model.encode(sentences, convert_to_tensor=True)
embeddings = model.encode(sentences, show_progress_bar=True)
embeddings = model.encode(sentences, batch_size=32)
embeddings = model.encode(sentences, normalize_embeddings=True)
๋ผ์ด์ ์ค
Apache 2.0 License
์ธ์ฉ
์ด ๋ชจ๋ธ์ ์ฌ์ฉํ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ธ์ฉํด์ฃผ์ธ์:
@misc{ko-sbert-384-reduced,
author = {Your Name},
title = {Korean Sentence-BERT 384d (Dimension-Reduced)},
year = {2025},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/YOUR_USERNAME/ko-sbert-384-reduced}}
}
๋ฌธ์
๋ฌธ์ ๋ ์ ์์ฌํญ์ด ์์ผ์๋ฉด ๋ชจ๋ธ ๋ ํฌ์งํ ๋ฆฌ์ ์ด์๋ฅผ ๋จ๊ฒจ์ฃผ์ธ์.
์์ฑ์ผ: 2025-10-15
ํ๋ ์์ํฌ: PyTorch
๋ผ์ด๋ธ๋ฌ๋ฆฌ: sentence-transformers
์ฐจ์ ์ถ์: 768 โ 384 (99.25% ๋ณด์กด)
- Downloads last month
- 193