🚀 GLuCoSE v2
このモデルは、一般的な日本語テキスト埋め込みモデルで、検索タスクに特化しています。CPUで実行可能で、文間の意味的類似度を測定したり、クエリに基づいてパッセージを検索するための検索システムとして機能します。
✨ 主な機能
- 検索タスクに特化しており、MIRACLなどのタスクで同サイズのモデルの中で最高の性能を発揮します。
- 日本語テキスト処理に最適化されています。
- CPUで実行可能です。
推論時には、「query: 」または「passage: 」の接頭辞が必要です。詳細は「使用方法」セクションをご確認ください。
📚 ドキュメント
モデルの説明
このモデルはGLuCoSEをベースに、いくつかの大規模埋め込みモデルを用いた蒸留と多段階の対照学習によって微調整されています。
- 最大シーケンス長: 512トークン
- 出力次元数: 768トークン
- 類似度関数: コサイン類似度
💻 使用例
基本的な使用法
SentenceTransformerを使用して以下のコードで推論を実行できます。
from sentence_transformers import SentenceTransformer
import torch.nn.functional as F
model = SentenceTransformer("pkshatech/GLuCoSE-base-ja-v2")
sentences = [
'query: PKSHAはどんな会社ですか?',
'passage: 研究開発したアルゴリズムを、多くの企業のソフトウエア・オペレーションに導入しています。',
'query: 日本で一番高い山は?',
'passage: 富士山(ふじさん)は、標高3776.12 m、日本最高峰(剣ヶ峰)の独立峰で、その優美な風貌は日本国外でも日本の象徴として広く知られている。',
]
embeddings = model.encode(sentences,convert_to_tensor=True)
print(embeddings.shape)
similarities = F.cosine_similarity(embeddings.unsqueeze(0), embeddings.unsqueeze(1), dim=2)
print(similarities)
高度な使用法
Transformersを使用して以下のコードで推論を実行できます。
import torch.nn.functional as F
from torch import Tensor
from transformers import AutoTokenizer, AutoModel
def mean_pooling(last_hidden_states: Tensor,attention_mask: Tensor) -> Tensor:
emb = last_hidden_states * attention_mask.unsqueeze(-1)
emb = emb.sum(dim=1) / attention_mask.sum(dim=1).unsqueeze(-1)
return emb
tokenizer = AutoTokenizer.from_pretrained("pkshatech/GLuCoSE-base-ja-v2")
model = AutoModel.from_pretrained("pkshatech/GLuCoSE-base-ja-v2")
sentences = [
'query: PKSHAはどんな会社ですか?',
'passage: 研究開発したアルゴリズムを、多くの企業のソフトウエア・オペレーションに導入しています。',
'query: 日本で一番高い山は?',
'passage: 富士山(ふじさん)は、標高3776.12 m、日本最高峰(剣ヶ峰)の独立峰で、その優美な風貌は日本国外でも日本の象徴として広く知られている。',
]
batch_dict = tokenizer(sentences, max_length=512, padding=True, truncation=True, return_tensors='pt')
outputs = model(**batch_dict)
embeddings = mean_pooling(outputs.last_hidden_state, batch_dict['attention_mask'])
print(embeddings.shape)
similarities = F.cosine_similarity(embeddings.unsqueeze(0), embeddings.unsqueeze(1), dim=2)
print(similarities)
🔧 技術詳細
GLuCoSE v2の微調整は以下の手順で行われています。
- ステップ1: アンサンブル蒸留
- ステップ2: 対照学習
- ステップ3: 検索特定の対照学習
ベンチマーク
検索
MIRACL-ja、JQARA、JaCWIR、MLDR-jaで評価されています。
注: JQARAとJaCWIRにおけるOpenAIの小規模埋め込みモデルの結果は、JQARAとJaCWIRから引用されています。
JMTEB
JMTEBで評価されています。平均スコアはマクロ平均です。
注: OpenAIの埋め込みモデルとmultilingual-e5モデルの結果は、JMTEBリーダーボードから引用されています。ruriの結果は、cl-nagoya/ruri-baseモデルカードから引用されています。
作成者
Chihiro Yano、Mocho Go、Hideyuki Tachibana、Hiroto Takegawa、Yotaro Watanabe
📄 ライセンス
このモデルはApache License, Version 2.0の下で公開されています。