Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use nanos-hpe/bge-small-qs with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("nanos-hpe/bge-small-qs")
sentences = [
"• 2 x AMD EPYC 7763 64-core processors",
"QuickSpecs\nHPE Cray XD670\nConfiguration Information\nDA - 16896 Worldwide QuickSpecs — Version 16 — 10/7/2024\nPage 22",
"HPE 1.8TB SAS 12G Mission Critical 10K SFF SC 3-year Warranty 512e Multi Vendor HDD 872481-H21\nHard Drive Blank Kits \nHPE Small Form Factor Hard Drive Blank Kit 666987-B21\nNotes: Hard Drives require the selection of appropriate Drive Cage. \n \nSSD Selection\nTo streamline the configuration process for HPE ProLiant Gen10 servers and to provide the best product\navailability, HPE recommends SSDs from the list located here: http://www.hpe.com/products/recommend .\n \nAll SSD options listed are compatible on both the XL675d and XL645d servers, except where explicitly\nmarked.\nRead Intensive - 12G SAS - SFF - Solid State Drives \nHPE 960GB SAS 12G Read Intensive SFF SC Value SAS Multi Vendor SSD P36997-H21\nHPE 1.92TB SAS 12G Read Intensive SFF SC Value SAS Multi Vendor SSD P36999-H21\nHPE 3.84TB SAS 12G Read Intensive SFF SC Value SAS Multi Vendor SSD P37001-H21\nHPE 7.68TB SAS 12G Read Intensive SFF SC Value SAS Multi Vendor SSD P37003-H21\nMixed Use - 12G SAS - SFF - Solid State Drives \nHPE 960GB SAS 12G Mixed Use SFF SC Value SAS Multi Vendor SSD P37005-H21\nHPE 1.92TB SAS 12G Mixed Use SFF SC Value SAS Multi Vendor SSD P37011-H21\nHPE 3.84TB SAS 12G Mixed Use SFF SC Value SAS Multi Vendor SSD P37017-H21\nMixed Use - 6G SATA - SFF - Solid State Drives \nHPE 480GB SATA 6G Mixed Use SFF SC Multi Vendor SSD P18432-H21\nHPE 960GB SATA 6G Mixed Use SFF SC Multi Vendor SSD P18434-H21\nHPE 1.92TB SATA 6G Mixed Use SFF SC Multi Vendor SSD P18436-H21\nHPE 3.84TB SATA 6G Mixed Use SFF SC Multi Vendor SSD P18438-H21\nRead Intensive - 6G SATA - SFF - Solid State Drives \nHPE 240GB SATA 6G Read Intensive SFF SC Multi Vendor SSD P18420-H21\nHPE 480GB SATA 6G Read Intensive SFF SC Multi Vendor SSD P18422-H21\nHPE 960GB SATA 6G Read Intensive SFF SC Multi Vendor SSD P18424-H21\nHPE 1.92TB SATA 6G Read Intensive SFF SC Multi Vendor SSD P18426-H21\nHPE 3.84TB SATA 6G Read Intensive SFF SC Multi Vendor SSD P18428-H21\nHPE 7.68TB SATA 6G Read Intensive SFF SC Multi Vendor SSD P18430-H21\n \nRead Intensive - NVMe - SFF - Solid State Drives \nHPE 480GB NVMe Gen3 Mainstream Performance Read Intensive M.2 Multi Vendor SSD P40513-H21\nHPE 960GB NVMe Gen3 Mainstream Performance Read Intensive M.2 Multi Vendor SSD P40514-H21\nHPE 1.92TB NVMe Gen3 Mainstream Performance Read Intensive M.2 Multi Vendor SSD P40515-H21\nHPE 3.84TB NVMe Gen4 Mainstream Performance Read Intensive SFF SC U.3 Static V2\nMulti Vendor SSD\nP64845-H21\nHPE 480GB NVMe Gen4 Mainstream Performance Read Intensive M.2 PM9A3 SSD P69543-H21\nMixed Use - NVMe - SFF - Solid State Drives \nHPE 1.6TB NVMe Gen4 Mainstream Performance Mixed Use SFF SC U.3 Static V2 Multi\nVendor SSD\nP65003-H21\nQuickSpecs\nHPE Apollo 6500 Gen10 Plus System\nAdditional Options\nDA - 16700 Worldwide QuickSpecs — Version 25 — 6/3/2024\nPage 45",
"Intel Xeon-Gold 6434 3.7GHz 8-core 195W Processor Kit for HPE Cray XD\nP56395-\nB21\nIntel Xeon-Gold 5415+ 2.9GHz 8-core 150W Processor Kit for HPE Cray XD\nP56391-\nB21\n \nNotes:\n− \"HPE Cray XD220v CPU 1 Rear FIO Heat Sink Kit\" (P49855-B21) must be ordered for 1st\nProcessor.\n− \"HPE Cray XD220v CPU 2 Front Heat Sink Kit\" (P49854-B21) must be ordered for 2nd\nProcessor."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-small-en. It maps sentences & paragraphs to a 384-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': 512, 'do_lower_case': True}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': True, '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': False, '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
sentences = [
'What is the website to find services for customers purchasing from a commercial reseller?',
'Parts and Materials\nHPE will provide HPE-supported replacement parts and materials necessary to maintain the covered hardware\nproduct in operating condition, including parts and materials for available and recommended engineering\nimprovements. \xa0\nParts and components that have reached their maximum supported lifetime and/or the maximum usage\nlimitations as set forth in the manufacturer\'s operating manual, product quick-specs, or the technical product\ndata sheet will not be provided, repaired, or replaced as part of these services.\n\xa0\nHow to Purchase Services\nServices are sold by Hewlett Packard Enterprise and Hewlett Packard Enterprise Authorized Service Partners:\nServices for customers purchasing from HPE or an enterprise reseller are quoted using HPE order\nconfiguration tools.\nCustomers purchasing from a commercial reseller can find services at\nhttps://ssc.hpe.com/portal/site/ssc/\n\xa0\nAI Powered and Digitally Enabled Support Experience\nAchieve faster time to resolution with access to product-specific resources and expertise through a digital and\ndata driven customer experience \xa0\nSign into the HPE Support Center experience, featuring streamlined self-serve case creation and\nmanagement capabilities with inline knowledge recommendations. You will also find personalized task alerts\nand powerful troubleshooting support through an intelligent virtual agent with seamless transition when needed\nto a live support agent. \xa0\nhttps://support.hpe.com/hpesc/public/home/signin\nConsume IT On Your Terms\nHPE GreenLake edge-to-cloud platform brings the cloud experience directly to your apps and data wherever\nthey are-the edge, colocations, or your data center. It delivers cloud services for on-premises IT infrastructure\nspecifically tailored to your most demanding workloads. With a pay-per-use, scalable, point-and-click self-\nservice experience that is managed for you, HPE GreenLake edge-to-cloud platform accelerates digital\ntransformation in a distributed, edge-to-cloud world.\nGet faster time to market\nSave on TCO, align costs to business\nScale quickly, meet unpredictable demand\nSimplify IT operations across your data centers and clouds\nTo learn more about HPE Services, please contact your Hewlett Packard Enterprise sales representative or\nHewlett Packard Enterprise Authorized Channel Partner. \xa0 Contact information for a representative in your area\ncan be found at "Contact HPE" https://www.hpe.com/us/en/contact-hpe.html \xa0\nFor more information\nhttp://www.hpe.com/services\nQuickSpecs\nHPE Cray XD675\nService and Support\nDA - 17239\xa0\xa0\xa0Worldwide QuickSpecs — Version 4 — 8/19/2024\nPage\xa0 13',
'HPE Cray XD675 Server Top View\nItem Description \xa0 \xa0\n1. 8x AMD MI300X OAM Accelerator \xa0 \xa0\n\xa0\nQuickSpecs\nHPE Cray XD675\nOverview\nDA - 17239\xa0\xa0\xa0Worldwide QuickSpecs — Version 4 — 8/19/2024\nPage\xa0 2',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.4857 |
| cosine_accuracy@3 | 0.8048 |
| cosine_accuracy@5 | 0.8619 |
| cosine_accuracy@10 | 0.9095 |
| cosine_precision@1 | 0.4857 |
| cosine_precision@3 | 0.2683 |
| cosine_precision@5 | 0.1724 |
| cosine_precision@10 | 0.091 |
| cosine_recall@1 | 0.4857 |
| cosine_recall@3 | 0.8048 |
| cosine_recall@5 | 0.8619 |
| cosine_recall@10 | 0.9095 |
| cosine_ndcg@10 | 0.7184 |
| cosine_mrr@10 | 0.6552 |
| cosine_map@100 | 0.6599 |
| dot_accuracy@1 | 0.4857 |
| dot_accuracy@3 | 0.8048 |
| dot_accuracy@5 | 0.8619 |
| dot_accuracy@10 | 0.9095 |
| dot_precision@1 | 0.4857 |
| dot_precision@3 | 0.2683 |
| dot_precision@5 | 0.1724 |
| dot_precision@10 | 0.091 |
| dot_recall@1 | 0.4857 |
| dot_recall@3 | 0.8048 |
| dot_recall@5 | 0.8619 |
| dot_recall@10 | 0.9095 |
| dot_ndcg@10 | 0.7184 |
| dot_mrr@10 | 0.6552 |
| dot_map@100 | 0.6599 |
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
What is the maximum number of Apollo n2X00 series chassis that can fit in a 42U rack? |
HPE Apollo 2000 Gen10 Plus System |
What is the maximum number of independent servers that can be mounted in a single 2U Apollo 2000 Gen10 Plus System chassis? |
HPE Apollo 2000 Gen10 Plus System |
What is the processor type supported by the HPE Apollo n2800 Gen10 Plus 24 SFF Flexible CTO chassis? |
HPE Apollo n2600 Gen10 Plus SFF CTO Chassis supports both Intel and AMD based server nodes |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 256per_device_eval_batch_size: 256num_train_epochs: 20multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 256per_device_eval_batch_size: 256per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_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: 20max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.0warmup_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_torchoptim_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: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_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: Nonedispatch_batches: Nonesplit_batches: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falsebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robin| Epoch | Step | cosine_map@100 |
|---|---|---|
| 1.0 | 7 | 0.4864 |
| 2.0 | 14 | 0.5209 |
| 3.0 | 21 | 0.5131 |
| 4.0 | 28 | 0.5047 |
| 5.0 | 35 | 0.5480 |
| 6.0 | 42 | 0.5808 |
| 7.0 | 49 | 0.5950 |
| 7.1429 | 50 | 0.5975 |
| 8.0 | 56 | 0.6145 |
| 9.0 | 63 | 0.6268 |
| 10.0 | 70 | 0.6292 |
| 11.0 | 77 | 0.6385 |
| 12.0 | 84 | 0.6445 |
| 13.0 | 91 | 0.6279 |
| 14.0 | 98 | 0.6296 |
| 14.2857 | 100 | 0.6321 |
| 15.0 | 105 | 0.6317 |
| 16.0 | 112 | 0.6401 |
| 17.0 | 119 | 0.6590 |
| 18.0 | 126 | 0.6562 |
| 19.0 | 133 | 0.6599 |
@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
BAAI/bge-small-en