Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper
• 1908.10084 • Published
• 12
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("0xFarzad/embeddinggemma-graph-instructions-hard-negatives-final")
# Run inference
queries = [
"\u003cROUTE_START\u003e\n\u003cSEG\u003e ST_1 -\u003e ST_2 \u003cDIR:LEFT\u003e \u003cLIGHT\u003e \u003cPOI: Citi Bike / amenity: bicycle_rental\u003e \u003cPOI: Hampton Inn / tourism: hotel\u003e\n\u003cSEG\u003e ST_2 -\u003e ST_3 \u003cDIR:STRAIGHT\u003e \u003cPOI_LEFT: Santander / amenity: bank\u003e \u003cPOI_LEFT: Santander / amenity: atm\u003e \u003cPOI_RIGHT: Hampton Inn / tourism: hotel\u003e \u003cPOI_RIGHT: T-Mobile / shop: mobile_phone\u003e\n\u003cSEG\u003e ST_3 -\u003e ST_4 \u003cDIR:STRAIGHT\u003e \u003cPOI_LEFT: Chase / amenity: bank\u003e \u003cPOI_LEFT: Chase / amenity: atm\u003e \u003cPOI_LEFT: Pret A Manger / amenity: fast_food / cuisine: sandwich\u003e\n\u003cSEG\u003e ST_4 -\u003e ST_5 \u003cDIR:STRAIGHT\u003e \u003cPOI_LEFT: Chase / amenity: bank\u003e \u003cPOI_LEFT: Chase / amenity: atm\u003e \u003cPOI_LEFT: Pret A Manger / amenity: fast_food / cuisine: sandwich\u003e\n\u003cSEG\u003e ST_5 -\u003e ST_6 \u003cDIR:STRAIGHT\u003e \u003cPOI_LEFT: Santander / amenity: bank\u003e \u003cPOI_LEFT: Santander / amenity: atm\u003e \u003cPOI_RIGHT: Hampton Inn / tourism: hotel\u003e \u003cPOI_RIGHT: T-Mobile / shop: mobile_phone\u003e\n\u003cSEG\u003e ST_6 -\u003e ST_7 \u003cDIR:STRAIGHT\u003e \u003cPOI_RIGHT: Sheraton New York Times Square Hotel / tourism: hotel\u003e\n\u003cSEG\u003e ST_7 -\u003e ST_8 \u003cDIR:STRAIGHT\u003e \u003cPOI_RIGHT: Sheraton New York Times Square Hotel / tourism: hotel\u003e\n\u003cROUTE_END\u003e",
]
documents = [
"After this block take a left at the third light and stop halfway down the block. After the second intersection you'll go down a block with several theaters. A Hampton Inn will be on your right and a bank ahead on the corner. Start by going straight through two intersections.",
"After this block take a left at the third light and stop halfway down the block. After the second intersection you'll go down a block with several theaters. A Hampton Inn will be on your right and a bank ahead on the corner. Start by going straight through two intersections.",
'At the next light with a playground on the far left, turn left. Stop in the middle of the playground before a fire station on the left side. Pass a T-intersection with Chase on the far left corner. Walk by a small church to the end of the street and turn left.',
]
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.3893, 0.3893, -0.0502]])
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
|
Turn left at the 2nd light with Nine West on the left corner. |
Walk to the light with the fountain on your left and turn right. |
|
Cooper's Tavern is on the right corner. Go about half way down the block. Go to the lights and turn right. Go through the following three sets of lights. Stop right after McDonald's on the left. |
Go through the following three sets of lights. Go about half way down the block. Cooper's Tavern is on the right corner. Stop right after McDonald's on the left. Go to the lights and turn right. |
|
Go straight and take a right at the intersection. Continue straight through 2 intersections. then your destination will be right before Exki on the left. |
Go straight and take a right at the intersection. Head to the first light and make a left. then your destination will be right before Exki on the left. |
contrastive_loss.ContrastiveLossWithInBatchAndHardNegativesanchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
|
stop in the middle of the intersection at the next light. |
Go through another light past Rail Line Diner. |
|
stop a little more than half way down the block where Abe Lebewohl Park on the right begins between Atmi and Urban Outfitters will be on the left. Go to the traffic light where there is a bus stop on the near left corner and turn right. Go through two lights. |
Go to the traffic light where there is a bus stop on the near left corner and turn right. Go through two lights. stop a little more than half way down the block where Abe Lebewohl Park on the right begins between Atmi and Urban Outfitters will be on the left. |
|
Turn right and go through the light immediately after. |
Go through the next intersection and pass the park on your right. |
contrastive_loss.ContrastiveLossWithInBatchAndHardNegativeseval_strategy: stepsper_device_eval_batch_size: 16learning_rate: 2e-05weight_decay: 0.01num_train_epochs: 5warmup_ratio: 0.1bf16: Truedataloader_num_workers: 2load_best_model_at_end: Trueprompts: task: sentence similarity | query:overwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 8per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.01adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 5max_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: Falsebf16: Truefp16: 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: Truedataloader_num_workers: 2dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Trueignore_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}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthproject: huggingfacetrackio_space_id: trackioddp_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: noneftune_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: Trueprompts: task: sentence similarity | query: batch_sampler: batch_samplermulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss |
|---|---|---|---|
| 0.1028 | 100 | 1.168 | - |
| 0.2055 | 200 | 0.856 | - |
| 0.3083 | 300 | 0.7349 | - |
| 0.4111 | 400 | 0.7102 | - |
| 0.5139 | 500 | 0.7844 | 1.0139 |
| 0.6166 | 600 | 0.8398 | - |
| 0.7194 | 700 | 0.6467 | - |
| 0.8222 | 800 | 0.7531 | - |
| 0.9250 | 900 | 0.7469 | - |
| 1.0277 | 1000 | 0.7163 | 0.8791 |
| 1.1305 | 1100 | 0.6351 | - |
| 1.2333 | 1200 | 0.5194 | - |
| 1.3361 | 1300 | 0.5055 | - |
| 1.4388 | 1400 | 0.5584 | - |
| 1.5416 | 1500 | 0.5229 | 0.7156 |
| 1.6444 | 1600 | 0.4807 | - |
| 1.7472 | 1700 | 0.5424 | - |
| 1.8499 | 1800 | 0.5885 | - |
| 1.9527 | 1900 | 0.5101 | - |
| 2.0555 | 2000 | 0.4153 | 0.6557 |
| 2.1583 | 2100 | 0.3408 | - |
| 2.2610 | 2200 | 0.356 | - |
| 2.3638 | 2300 | 0.3845 | - |
| 2.4666 | 2400 | 0.3322 | - |
| 2.5694 | 2500 | 0.3347 | 0.6803 |
| 2.6721 | 2600 | 0.3297 | - |
| 2.7749 | 2700 | 0.3092 | - |
| 2.8777 | 2800 | 0.3704 | - |
| 2.9805 | 2900 | 0.3689 | - |
| 3.0832 | 3000 | 0.2179 | 0.7215 |
| 3.1860 | 3100 | 0.1906 | - |
| 3.2888 | 3200 | 0.2338 | - |
| 3.3916 | 3300 | 0.1779 | - |
| 3.4943 | 3400 | 0.2546 | - |
| 3.5971 | 3500 | 0.2066 | 0.6497 |
| 3.6999 | 3600 | 0.237 | - |
| 3.8027 | 3700 | 0.239 | - |
| 3.9054 | 3800 | 0.2162 | - |
| 4.0082 | 3900 | 0.2095 | - |
| 4.1110 | 4000 | 0.1101 | 0.6722 |
| 4.2138 | 4100 | 0.1108 | - |
| 4.3165 | 4200 | 0.1059 | - |
| 4.4193 | 4300 | 0.1235 | - |
| 4.5221 | 4400 | 0.1061 | - |
| 4.6249 | 4500 | 0.1231 | 0.6879 |
| 4.7276 | 4600 | 0.1017 | - |
| 4.8304 | 4700 | 0.1236 | - |
| 4.9332 | 4800 | 0.0849 | - |
@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",
}
Base model
google/embeddinggemma-300m