Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use yosriku/embeddinggemma-300m with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("yosriku/embeddinggemma-300m")
sentences = [
"alamat persis siloam kebon jeruk",
"Lokasinya di JALAN METRO TANJUNG BUNGA KAV. 9 TANJUNG MERDEKA - TAMALATE MAKASSAR",
"Nama lain Siloam Duren Tiga adalah Siloam Hospitals ASRI atau SH ASRI",
"Lokasinya di Jl. Perjuangan No.8, RT.14/RW.10, Kb. Jeruk, Kec. Kb. Jeruk, Kota Jakarta Barat, Daerah Khusus Ibukota Jakarta 11530"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from google/embeddinggemma-300m. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 2048, 'do_lower_case': False, 'architecture': 'Gemma3TextModel'})
(1): Pooling({'word_embedding_dimension': 768, '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})
(2): Dense({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(3): Dense({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(4): Normalize()
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("sentence_transformers_model_id")
# Run inference
queries = [
"MRCCC ada dimana?",
]
documents = [
'Lokasinya di Jl. Garnisun 1 No.2-3, RT.5/RW.4, Karet Semanggi, Kecamatan Setiabudi, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12930',
'Nama lain Siloam Medan Petisah adalah Siloam Hospitals Medan atau SHMD',
'CEO (Chief Executive Officer) Siloam Hospitals adalah Caroline Riady',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 768] [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.6492, 0.2818, 0.7452]])
ai-faq-validationTripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 0.9768 |
query, answer_positive, and answer_negative| query | answer_positive | answer_negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | answer_positive | answer_negative |
|---|---|---|
Asuransi apa aja yg kerja sama sama Siloam? |
Siloam Hospitals Group memastikan untuk terus memfasilitasi jaringan kerjasama termasuk dengan rekanan asuransi dalam negeri atau pun luar negeri. Untuk lebih detail, pastikan Anda melakukan konfirmasi kepada pihak asuransi mengenai jaringan dan ketentuan yang berlaku pada polis penjaminan Anda. Anda juga dapat menghubungi Rumah Sakit Siloam yang Anda tuju untuk menanyakan detail terkait hal ini. |
Lokasinya di Jl. Magelang - Kopeng km 08 Tegalrejo Kabupaten Magelang 56192 |
Gawat darurat, perlu rujukan dari faskes pertama ga? |
Tidak, kondisi gawat darurat tidak membutuhkan Surat Rujukan dari Puskesmas/Klinik. Pasien dapat langsung mengunjungi instalasi gawat darurat selama dalam kondisi gawat darurat. |
Nama lain Siloam Paal Dua adalah Siloam Hospitals Paal Dua atau SHPD |
apakah boleh merokok di siloam |
Untuk memastikan lingkungan yang sehat bagi pasien kami, kami melarang aksi merokok di area rumah sakit. |
Lokasinya di Jl. Yos Sudarso No.38-40, Paal Dua, Kec. Paal Dua, Kota Manado, Sulawesi Utara |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
query, answer_positive, and answer_negative| query | answer_positive | answer_negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | answer_positive | answer_negative |
|---|---|---|
presiden direktur siloam hospitals siapa |
Presiden Direktur Siloam Hospitals adalah David Utama |
Lokasinya di Jl. Pahlawan No.60, RT.006/RW.004, Aren Jaya, Kec. Bekasi Tim., Kota Bks, Jawa Barat 17111 |
mysiloam itu apa sih gunanya |
Aplikasi MySiloam adalah aplikasi mobile untuk membantu pengguna menikmati kemudahan layanan kesehatan yang disediakan oleh Rumah Sakit Siloam. Beberapa fitur yang sudah membantu banyak orang adalah, pembuatan janji temu dokter, pemesanan tes dan layanan kesehatan, emergency, dan ambulance call. |
Lokasinya di Jl. Kelapa Dua Raya No.1001, Klp. Dua, Kec. Klp. Dua, Kabupaten Tangerang, Banten 15810 |
siapa nama presiden komisaris siloam |
Presiden Komisaris Siloam Hospitals adalah Yasonna Laoly |
Saat ini, metode pembayaran yang kami terima adalah kartu kredit atau debit (Visa dan Mastercard), OVO, Virtual Account, dan Bank Transfer. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
eval_strategy: stepsper_device_train_batch_size: 14per_device_eval_batch_size: 14learning_rate: 0.0002num_train_epochs: 1warmup_ratio: 0.1batch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 14per_device_eval_batch_size: 14per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 0.0002weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 1max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Falsefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsehub_revision: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss | ai-faq-validation_cosine_accuracy |
|---|---|---|---|---|
| -1 | -1 | - | - | 0.6440 |
| 0.6623 | 100 | 1.4291 | 1.1531 | 0.9768 |
@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",
}
@misc{henderson2017efficient,
title={Efficient Natural Language Response Suggestion for Smart Reply},
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
year={2017},
eprint={1705.00652},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
Base model
google/embeddinggemma-300m