Sentence Similarity
sentence-transformers
PyTorch
ONNX
xlm-roberta
feature-extraction
text-embeddings-inference
Instructions to use p0x0q-dev/bge-m3-sparse-experimental with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use p0x0q-dev/bge-m3-sparse-experimental with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("p0x0q-dev/bge-m3-sparse-experimental") sentences = [ "That is a happy person", "That is a happy dog", "That is a very happy person", "Today is a sunny day" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4] - Notebooks
- Google Colab
- Kaggle
| import torch | |
| import torch.nn as nn | |
| from transformers import AutoModel, AutoTokenizer, XLMRobertaModel | |
| # カスタムレイヤーの定義 | |
| class SparseLinear(nn.Module): | |
| def __init__(self, input_dim, output_dim): | |
| super(SparseLinear, self).__init__() | |
| self.linear = nn.Linear(input_dim, output_dim) | |
| def forward(self, x): | |
| return self.linear(x) | |
| # カスタムモデルの定義 | |
| class CustomXLMRobertaModel(XLMRobertaModel): | |
| def __init__(self, config): | |
| super(CustomXLMRobertaModel, self).__init__(config) | |
| self.sparse_linear = SparseLinear(config.hidden_size, 1) # 適切な出力次元を設定 | |
| def forward(self, *args, **kwargs): | |
| outputs = super(CustomXLMRobertaModel, self).forward(*args, **kwargs) | |
| dense_embeddings = outputs.last_hidden_state | |
| sparse_embeddings = self.sparse_linear(dense_embeddings) | |
| return outputs, sparse_embeddings | |
| # モデルとトークナイザーのロード | |
| model_name = "." # ローカルディレクトリを指定 | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| config = AutoModel.from_pretrained(model_name).config | |
| # マージされたモデルのロード | |
| merged_model = CustomXLMRobertaModel.from_pretrained(model_name, config=config) | |
| merged_model.load_state_dict(torch.load("merged_pytorch_model.bin")) | |
| # テキストのエンコード | |
| def encode_text(text): | |
| inputs = tokenizer(text, return_tensors="pt") | |
| outputs, sparse_embeddings = merged_model(**inputs) | |
| return outputs, sparse_embeddings | |
| # テキストのエンコード例 | |
| text = "こんにちは" | |
| sparse_embeddings = encode_text(text) | |
| print(sparse_embeddings) | |