🚀 upskyy/bge-m3-korean
upskyy/bge-m3-korean
模型是基於 BAAI/bge-m3 進行 korsts 和 kornli 微調得到的。它能將句子和段落映射到 1024 維的密集向量空間,可用於語義文本相似度計算、語義搜索、釋義挖掘、文本分類、聚類等任務。
🚀 快速開始
本模型可通過 sentence-transformers
庫或 HuggingFace Transformers
庫使用,下面會分別介紹使用方法。
✨ 主要特性
- 多語言支持:支持多種語言,包括韓語、英語等。
- 高維度輸出:輸出維度為 1024 維,能更好地表示句子語義。
- 長序列處理:最大序列長度可達 8192 個詞元,可處理較長的文本。
- 多種相似度指標:支持餘弦相似度、曼哈頓相似度、歐幾里得相似度等多種相似度計算方法。
📦 安裝指南
安裝 Sentence Transformers 庫
pip install -U sentence-transformers
💻 使用示例
基礎用法(Sentence-Transformers)
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("upskyy/bge-m3-korean")
sentences = [
'아이를 가진 엄마가 해변을 걷는다.',
'두 사람이 해변을 걷는다.',
'한 남자가 해변에서 개를 산책시킨다.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
print(similarities)
高級用法(HuggingFace Transformers)
from transformers import AutoTokenizer, AutoModel
import torch
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
sentences = ["안녕하세요?", "한국어 문장 임베딩을 위한 버트 모델입니다."]
tokenizer = AutoTokenizer.from_pretrained("upskyy/bge-m3-korean")
model = AutoModel.from_pretrained("upskyy/bge-m3-korean")
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input["attention_mask"])
print("Sentence embeddings:")
print(sentence_embeddings)
📚 詳細文檔
模型詳情
屬性 |
詳情 |
模型類型 |
Sentence Transformer |
基礎模型 |
BAAI/bge-m3 |
最大序列長度 |
8192 個詞元 |
輸出維度 |
1024 個詞元 |
相似度函數 |
餘弦相似度 |
完整模型架構
SentenceTransformer(
(0): Transformer({'max_seq_length': 8192, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)
評估指標
語義相似度
指標 |
值 |
pearson_cosine |
0.874 |
spearman_cosine |
0.8724 |
pearson_manhattan |
0.8593 |
spearman_manhattan |
0.8688 |
pearson_euclidean |
0.8598 |
spearman_euclidean |
0.8694 |
pearson_dot |
0.8684 |
spearman_dot |
0.8666 |
pearson_max |
0.874 |
spearman_max |
0.8724 |
框架版本
- Python: 3.10.13
- Sentence Transformers: 3.0.1
- Transformers: 4.42.4
- PyTorch: 2.3.0+cu121
- Accelerate: 0.30.1
- Datasets: 2.16.1
- Tokenizers: 0.19.1
🔧 技術細節
本模型基於 BAAI/bge-m3
進行微調,通過自知識蒸餾技術實現多語言、多功能、多粒度的文本嵌入。在微調過程中,使用了 korsts
和 kornli
數據集,以提高模型在韓語語義相似度任務上的性能。
📄 許可證
文檔未提及相關信息。
📚 引用
BibTeX
@misc{bge-m3,
title={BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through Self-Knowledge Distillation},
author={Jianlv Chen and Shitao Xiao and Peitian Zhang and Kun Luo and Defu Lian and Zheng Liu},
year={2024},
eprint={2402.03216},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084",
}