Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use ChenyuEcho/fine_tuned_model with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ChenyuEcho/fine_tuned_model")
sentences = [
"What are the exact start and end times for overnight on-site IT coverage during the maintenance window?",
"Subject: Issue Encountered with Insurance Verification Workflow\nFrom: Julian R. Torres\nTo: Rachel K. Martinez\nDate: 2025-10-20\n\nHi Rachel,\n\nI wanted to flag an ongoing issue with the insurance verification process that’s impacting our ED admissions, especially during peak hours. Sometimes, patient insurance details aren’t fully updated in the system, and it’s causing delays getting clearance from registration. Could we discuss ways to streamline the info handoff between the ED and registration, or is there a protocol update I might’ve missed? Any suggestions or insight from your end would be appreciated.\n\nThanks,\nJulian",
"Subject: EHR Medication Documentation Concerns – Joint Commission Survey Preparation\nFrom: Katherine M. Walsh\nTo: Angela R. Scott\nDate: 2025-10-20\n\nHello Angela,\n\nAs we continue our preparations for the upcoming Joint Commission survey, I have identified a recurring issue with the EHR medication documentation process. Specifically, the current workflow does not require entry of medication batch numbers or precise dose changes during intraoperative adjustments, which is inconsistent with recent Joint Commission medication safety protocols. This gap could potentially lead to survey citations and, more importantly, compromises our ability to track medication safety accurately. Could you assist in reviewing and, if possible, updating the EHR fields so that batch numbers and intraoperative dose modifications are mandatory entries? If you need additional clinical detail, I am happy to collaborate.\n\nThank you for your attention to this patient safety concern.\n\nBest regards,\nKatherine",
"Subject: Re: Scheduled System Maintenance Downtime – Main Hospital & Outpatient Clinics\nFrom: Richard T. Howard\nTo: David R. Park\nDate: 2025-10-16\n\nHi David,\n\nThank you for your prompt reply and for raising the question about tech support coverage during the maintenance window. I can confirm that our IT team will have on-site personnel available overnight to assist with any urgent issues that arise, particularly for clinical teams. Please feel free to direct your staff to extension 4471 if immediate support is required during downtime.\n\nLet me know if you need any additional details or have further concerns.\n\nBest,\nRichard"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from Qwen/Qwen3-Embedding-0.6B. It maps sentences & paragraphs to a 1024-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': 768, 'do_lower_case': False, 'architecture': 'PeftModelForFeatureExtraction'})
(1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': True, 'include_prompt': True})
(2): 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 = [
"What bottlenecks in the updated post-operative workflow are contributing to delays in surgical site infection specimen transfer and tracking?",
]
documents = [
'Subject: Concerns Regarding Timeliness of Surgical Site Infection Tracking\nFrom: Xavier D. Brooks\nTo: David S. Wilson\nDate: 2025-11-10\n\nHi David,\n\nThank you for raising these concerns about the delays in surgical site infection tracking. We have indeed adjusted some aspects of our post-op patient flow in an attempt to enhance discharge efficiency, including new documentation checkpoints that might inadvertently be slowing the specimen transfer process. I’ll coordinate with our nursing and records teams to closely review recent workflow changes and identify any bottlenecks that could be contributing to extended turnaround times. I’ll share our findings and propose potential improvements by the end of this week, and I welcome any further details you notice from the lab side as well.\n\nBest regards,\nXavier',
'Subject: Concern Regarding Allergy Documentation Accuracy and Glucose Meter Integration\nFrom: Daniel M. Evans\nTo: Gabriella I. Santos\nDate: 2026-01-26\n\nHi Gabriella,\n\nI wanted to bring to your attention a recurring issue we’ve noticed with our glucose meters not consistently syncing updated allergy information from the patient chart. During routine maintenance, I found discrepancies between recorded allergies on the device and what is documented in the EMR, which could lead to potential risks for patients with sensitivities, especially regarding test strip ingredients. I propose we review the current integration workflow and possibly schedule a troubleshooting session with IT to ensure seamless allergy data transfer. Please let me know if you’ve experienced similar concerns and if you’d be available to discuss this further.\n\nThanks,\nDaniel',
'Subject: Inquiry Regarding Post-Operativ Care Documentation\nFrom: David R. Park\nTo: Inspector Helen R. Jacobs\nDate: 2026-01-26\n\nHello Inspector Jacobs,\n\nI am reaching out regarding the ongoing investigation tied to Mr. Hendricks’ recent case. We have been reviewing the patient records and noticed that the documentation for the post-operativ care period contains several ambiguities. We would appreciate your guidance on whether additional clarification or supplementary notes are required for compliance purposes. Please let me know how you would like us to proceed, or if you need copies of the relevant chart sections.\n\nBest regards,\nDavid R. Park',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 1024] [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.7188, 0.1221, 0.0596]], dtype=torch.bfloat16)
val_real_corpus_thread_irInformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.7613 |
| cosine_accuracy@3 | 0.8297 |
| cosine_accuracy@5 | 0.8614 |
| cosine_accuracy@10 | 0.8948 |
| cosine_precision@1 | 0.7613 |
| cosine_precision@3 | 0.5275 |
| cosine_precision@5 | 0.3349 |
| cosine_precision@10 | 0.179 |
| cosine_recall@1 | 0.3665 |
| cosine_recall@3 | 0.7013 |
| cosine_recall@5 | 0.7391 |
| cosine_recall@10 | 0.7844 |
| cosine_ndcg@10 | 0.752 |
| cosine_mrr@10 | 0.8039 |
| cosine_map@100 | 0.7154 |
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
What specific documents and timeline details are being requested for the medication administration incident involving the late husband (e.g., notes and observed discrepancy times)? |
Subject: Clarification Needed Regarding Recent Medciation Administration Incident |
What specific additional materials or documentation should my team prepare ahead of the meeting? |
Subject: Re: Meeting Confirmation and Case Materials |
Who is assigned to coordinate the review of PACS-EHR interface error logs with radiology IT to address radiology report delays? |
Subject: Radiology Report Turnaround Delays in EHR |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
multi_dataset_batch_sampler: round_robindo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 8per_device_eval_batch_size: 8gradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 3max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_ratio: Nonewarmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Trueenable_jit_checkpoint: Falsesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseuse_cpu: Falseseed: 42data_seed: Nonebf16: Falsefp16: Falsebf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: -1ddp_backend: Nonedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonedisable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}accelerator_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: Nonegroup_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: Truepush_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_for_metrics: []eval_do_concat_batches: Trueauto_find_batch_size: Falsefull_determinism: Falseddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_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: Trueuse_cache: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robinrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | val_real_corpus_thread_ir_cosine_ndcg@10 |
|---|---|---|---|
| 1.0 | 299 | - | 0.7464 |
| 1.6722 | 500 | 0.0176 | - |
| 2.0 | 598 | - | 0.7507 |
| 3.0 | 897 | - | 0.7520 |
@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}
}