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("Pierrax/embeddinggemma-chess-arbiter-fr")
# Run inference
queries = [
"Quel est le contenu de l\u0027article 4.3.2.1 ?",
]
documents = [
"Règlement médical\nFEDERATION FRANÇAISE DES ECHECS\nASSOCIATION DECLAREE CONFORME A LA LOI DU 1er JUILLET 1901- JO du 22 mai 1921\n \n \nCD FFE – 19.08.2022\nB07 – 6/6\n \n \n \n4.3.3 AUT à effet rétroactif \nLes licencié(e)s ne répondant pas à la définition de joueurs de niveau international comme \ndéfini à l’article 4.3.2.1 peuvent, après un contrôle antidopage faire une demande d’AUT \nà effet rétroactif. La demande (ANNEXE) est à adresser dans les 30 jours au médecin fédéral qui \nest tenu au secret professionnel dans les conditions et sous les réserves énoncées aux articles \n226-13 et226-14du code pénal. \n \n5 Surveillance des joueurs et joueuses de niveau international \nConformément à l’article A. 231-3 du code du sport les joueurs et joueuses de niveau \ninternational comme défini à l’article 4.3.2 doivent se soumettre dans les deux mois suivant \nleurs sélections en équipe de France, puis/ou annuellement à : \n\uf0b7 Un examen médical réalisé par un médecin du sport comprenant : \no Un examen clinique avec interrogatoire et examen physique selon les recommandations \nde la Société française de médecine de l'exercice et du sport. \no Un bilan diététique et des conseils nutritionnels. \no Un bilan psychologique visant à dépister des difficultés psychopathologiques pouvant \nêtre liées à la pratique sportive intensive. \n\uf0b7 Un électrocardiogramme de repos. \n \nA la demande du médecin du sport et sous sa responsabilité, les bilans psychologique et \ndiététique peuvent être effectués respectivement par un psychologue clinicien ou un \ndiététicien. \nLes résultats des examens sont transmis au médecin fédéral. \nLa FFE prend en charge financièrement cette surveillance médicale.",
"4.2.2. Tout autre contact physique avec une pièce, à l’exception d’un contact clairement accidentel, doit être \nconsidéré comme intentionnel. \nSelon cette règle, si un joueur ou une joueuse n’a pas dit « j’adoube » ou quelque chose de similaire avant de toucher \nune pièce et que le contact n’est pas accidentel alors la pièce touchée doit être déplacée. \nPar exemple, si les Blancs ont joué 1. Fe2xg5 en soulevant le fou et en retirant le cavalier (ce coup n’est pas possible) \nalors le fou sur e2 doit être déplacé car il a été touché dans l'intention de le déplacer. \n \n4.3. En dehors du cadre précisé par l’Article 4.2 si le joueur ou la joueuse au trait touche sur l’échiquier, avec l’intention \nde déplacer ou de prendre : \n4.3.1. Une ou plusieurs de ses propres pièces, il/elle doit déplacer la première pièce touchée pouvant être \ndéplacée. \n4.3.2. Une ou plusieurs des pièces adverses, il/elle doit prendre la première pièce touchée pouvant être prise. \n4.3.3. Une ou plusieurs pièces de chaque couleur, il/elle doit prendre la première pièce adverse touchée avec sa \npremière pièce touchée ou, si c’est illégal, déplacer ou prendre la première pièce touchée pouvant être déplacée \nou prise. Si on ne peut pas déterminer si c’est une de ses pièces ou une des pièces adverses qui a été touchée en \npremier, alors on considère que c’est sa propre pièce qui a été touchée en premier, avant celle de son adversaire.",
'9.10.3 Obligations de confidentialité\nLes membres de la commission sont tenus à une obligation de confidentialité concernant les informations\ndont ils ont connaissance dans le cadre de leurs missions. Ils sont en outre tenus de s’abstenir de toute dé-\nclaration publique qui serait de nature à remettre en cause leur impartialité.\nRèglement Intérieur de la Fédération Française des Échecs\nPage 19/19',
]
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.8131, 0.5536, 0.0916]])
anchor, positive, and negative| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| anchor | positive | negative |
|---|---|---|
Que dit l'article 1 ? |
FEDERATION FRANÇAISE DES ECHECS ASSOCIATION DECLAREE CONFORME A LA LOI DU 1ER JUILLET 1901 – JO DU 22 MAI 1921 |
Partie 1:LA D.N.A. et les arbitres |
Quel est le contenu de l'article 1 ? |
FEDERATION FRANÇAISE DES ECHECS ASSOCIATION DECLAREE CONFORME A LA LOI DU 1ER JUILLET 1901 – JO DU 22 MAI 1921 |
Partie 1:LA D.N.A. et les arbitres |
Que dit l'article 9 ? |
Ces organes sont les suivants : |
Elle n’a pas le droit de retirer sa réclamation. |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
per_device_train_batch_size: 2gradient_accumulation_steps: 8learning_rate: 2e-05warmup_ratio: 0.1dataloader_drop_last: Truedataloader_num_workers: 2overwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 2per_device_eval_batch_size: 8per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 8eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 3max_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: 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: Truedataloader_num_workers: 2dataloader_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}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: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss |
|---|---|---|
| 0.7435 | 50 | 1.0852 |
| 1.4758 | 100 | 0.455 |
| 2.2082 | 150 | 0.3961 |
| 2.9517 | 200 | 0.2978 |
@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