Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use JLee0/rag-embedder-grand-10epochs with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("JLee0/rag-embedder-grand-10epochs")
sentences = [
"엔진이 과열되지 않도록 냉각수 혼합 비율을 어떻게 유지해야 하나요?",
"안전벨트 \n\n 안전벨트 사용 중요성\n안전벨트를 사용하면, 사고나 급정차 시에 당\n할 수 있는 심각한 부상이나 사망의 위험이 줄\n어듭니다. 안전벨트는 다음과 같은 상태에서\n최대의 효과를 발휘합니다.\n• 탑승자가 엉덩이를 좌석에 깊게 걸치고 등을\n등받이에 똑바로 기대고 앉은 상태여야 합니\n다.\n• 안전벨트의 골반띠는 골반을 지나고, 어\n깨띠는 가슴을 지나야 합니다.\n• 어린이는 항상 뒷좌석에 적절한 보호 장치를\n장착하여 앉히십시오.",
"냉각수 점검\n냉각수량 점검 및 보충\n1. 엔진이 식었을 때 후드를 여십시오.\n2.냉각수 보조 탱크 옆면에 표시된 냉각수량이\n최소선(MIN)과 최대선(MAX) 사이에 있는\n지 확인하십시오.\n3.냉각수량이 최소선(MIN)에 가깝다면 냉각\n수 혼합 비율표를 따라 부동액과 증류수를\n섞어 냉각수를 만드십시오.\n4.냉각수 보조 탱크 캡을 열고 최대선(MAX)까\n지 냉각수를 보충하십시오.\n5.냉각수 보조 탱크 캡을 잠근 후 완전히 잠겼\n는지 확인하십시오.\n• 캡 표면의 그림이 기울지 않아야 합니다.\n엔진룸 전방뷰\n• 캡의 돌기가 정상적으로 안착되어야 합니\n다 \n\n • 반드시 엔진이 다 식었을 때 냉각수 보조 탱\n크 캡을 열고, 두꺼운 헝겊으로 캡을 감싸 천\n천히 여십시오. 엔진 작동 중에는 냉각수가\n너무 뜨거워 화상을 입을 수 있습니다.\n• 냉각수 보조 탱크 캡을 완전히 잠그십시오.\n캡이 다 잠기지 않으면 주행 중 냉각수가 넘\n쳐 엔진이 과열할 수 있습니다. \n\n 냉각수 혼합비율\n영하 15도 : 부동액 35%, 물 65%\n영하 25도 : 부동액 40%, 물 60%\n영하 35도 : 부동액 50%, 물 50%\n영하 45도 : 부동액 60%, 물 40% \n\n 차량 출고 시 부동액 혼합비율은 45% 입니다. \n\n • 냉각수의 혼합 비율을 점검하십시오. 부동액\n의 농도가 35% 미만이거나 60% 초과이면\n엔진 내부가 부식되거나 과열될 수 있습니\n다.\n• 냉각수 보조 탱크 캡을 열 때 부직포나 두꺼\n운 헝겊 등으로 캡 주위를 감싼 뒤 천천히 여\n십시오. 냉각수가 흘러내리면 엔진 하부 등\n다른 부품이 손상될 수 있습니다.\n• 품질과 성능이 적합한 사계절 부동액을 사용\n하십시오. 부적합한 부동액 사용시 엔진 냉\n각계 부품에 부식이나 침전물 생성 또는 손\n상으로 엔진 과열 등의 원인이 될 수 있습니\n다. 순정 부동액은 품질과 성능을 당사가 보\n증하는 부동액 입니다.\n• 냉각수를 보충한 후 누수가 없는지 확인하십\n시오.\n• 냉각수를 보충한 뒤 며칠 후에 냉각수량을\n한 번 더 점검하고 필요하면 보충하십시오. \n\n 냉각수가 없는 상태로 주행하지 마십시오. 워\n터 펌프가 고장 나거나 엔진 소착을 일으킬 수\n있습니다.\n• 부동액 혼합비율이 너무 높거나 낮아도 냉각\n성능이 저하됩니다.\n• 부동액이 60% 이상 또는 35% 이하로 포함\n된 냉각수는 사용하지 마십시오. 냉각 성능\n이 저하될 수 있습니다.\n• 부동액과 섞을 물로는 증류수를 사용하십시\n오. 짠물이나 지하수 등의 경수는 절대 사용\n하지 마십시오.\n• 부동액, 방청제 및 시판되는 LLC 등의 혼용\n을 피하십시오.\n• 알코올 또는 메탄올 계열의 냉각수를 그대로\n또는 기준에 맞는 냉각수와 섞어서 사용하지\n마십시오. 엔진 부품은 알루미늄으로 구성되\n어 있어 동결과 부식을 방지하기 위해 인산\n염계 에틸렌-글리콜 성분의 냉각수로 보호\n되어야 합니다.\n• 보충 후 냉각수 보조 탱크와 라디에이터 캡\n을 확실히 닫으십시오.\n보충 후에도 냉각수가 현저하게 감소하면 당\n사 직영 하이테크센터나 블루핸즈에서 점검\n을 받으십시오.",
"클러스터에 경고등이 켜지지 않은 상태에서 다\n음과 같은 현상은 정상입니다.\n• 엔진에 시동을 건 직후 전동 파워 스티어링\n시스템 진단을 위해 점검을 하는 동안은 조\n향 핸들이 무거워지고, 약 2초 이후에 정상적\n으로 작동합니다.\n• 전동 파워 스티어링 시스템에 이상이 감지되\n면 사고를 방지하기 위해 시스템이 정지합니\n다. 이 때, 스티어링 휠을 조작하는 힘이 갑자\n기 많이 들 수 있습니다.\n• 엔진 시동이 'ON' 또는 'OFF' 상태가 된 후에\n릴레이 접속으로 인한 소음이 발생할 수 있\n으나 이는 정상적인 작동음입니다.\n• 정차 또는 저속 주행 중 조향 핸들을 돌리면\n모터의 회전에 의해 소음이 발생할 수 있으\n나 이는 정상적인 작동음입니다.\n• 저온에서 스티어링 휠을 조작할 때 소음이\n발생할 수 있습니다. 온도가 상승하면 없어\n지며 고장이 아닙니다."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-m3. 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': 8192, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(1): Pooling({'word_embedding_dimension': 1024, '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 = [
'차량 운전 시 연료비를 절감할 수 있는 방법에는 어떤 것들이 있나요?',
'경제적 운전\n연료 소모량은 운전자의 운전 습관에 따라 달라\n집니다. 차량을 운전할 때 다음과 같은 사항을\n준수하여 연료비 및 수리비를 절감하십시오.\n• 정차 중에는 엔진을 끄십시오.\n• 경제속도로 운전하십시오.\n• 고속으로 주행할 때는 창문을 닫으십시오.\n• 급출발, 급가속, 급제동을 삼가십시오.\n• 정차 후 가속할 때는 천천히 가속하십시오.\n• 횡 바람과 역 바람이 불 때는 천천히 운전하\n십시오.\n• 차량은 항상 정비가 잘 된 상태로 유지하십\n시오.\n• 에어컨은 필요할 때만 사용하십시오.\n• 도로 조건이 좋지 않은 길은 되도록 피하십\n시오. 비포장도로 주행 시 하부 부품이 손상\n될 수 있으므로 항상 주의하십시오.\n• 불필요한 화물을 싣지 마십시오.\n• 항상 지정된 타이어 공기압을 유지하십시오.\n• 급제동을 피하기 위해 앞차와의 안전거리를\n유지하십시오. 연료를 절감하고 브레이크 패\n드의 마모를 줄일 수 있습니다.\n• 브레이크 페달에 발을 올리고 운전하지 마십\n시오. 연료 소비가 많아지고 브레이크가 손\n상될 수 있습니다.\n• 휠 얼라인먼트를 적절한 상태로 유지하십시\n오. 연료를 절감하고 타이어 마모를 줄일 수\n있습니다.\n• 정기적으로 검사 및 정비를 받으십시오. 부\n품 수명을 늘려 비용을 절감할 수 있습니다.',
'악천후 시의 주행\n• 비나 눈이 내릴 때는 특히 차가 미끄러지기\n쉬우므로 급브레이크 조작을 하지 마십시오.\n• 브레이크 장치가 젖으면 제동이 잘 되지 않\n기 때문에 브레이크 장치가 젖을 정도로 물\n이 많이 고인 곳은 피해서 주행하십시오. 물\n이 고인 곳을 주행하거나 세차한 후에는 반\n드시 브레이크 성능을 점검하고, 물기 있는\n도로를 주행한 후에는 안전거리를 충분히 확\n보하고 천천히 운전하면서 여러 번에 걸쳐\n브레이크를 밟아 브레이크를 건조하십시오.\n• 안개가 끼거나 기상 상태로 인해 시계가 나\n쁠 때는 차의 조명을 켜고 속도를 충분히 낮\n추어 주행하십시오.\n• 폭우가 내릴 때는 시야를 확보하기가 더 어\n려워 제동 거리가 더 많이 필요합니다. 천천\n히 운전하십시오.\n• 와이퍼 상태를 항상 양호하게 관리하십시오.\n• 와이퍼에 줄무늬가 생기거나 유리창이 잘 닦\n이지 않으면 와이퍼 블레이드를 교체하십시\n오.\n• 타이어 상태를 항상 양호하게 관리하십시오.\n타이어의 상태가 좋지 않은 상태로 젖은 길\n이나 빗길에서 급정차하면 타이어가 미끄러\n져 사고가 날 수 있습니다.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
InformationRetrievalEvaluator| Metric | Value |
|---|---|
| cosine_accuracy@1 | 0.0435 |
| cosine_accuracy@3 | 0.7448 |
| cosine_accuracy@5 | 0.8641 |
| cosine_accuracy@10 | 0.9474 |
| cosine_precision@1 | 0.0435 |
| cosine_precision@3 | 0.2483 |
| cosine_precision@5 | 0.1728 |
| cosine_precision@10 | 0.0947 |
| cosine_recall@1 | 0.0435 |
| cosine_recall@3 | 0.7448 |
| cosine_recall@5 | 0.8641 |
| cosine_recall@10 | 0.9474 |
| cosine_ndcg@10 | 0.5642 |
| cosine_mrr@10 | 0.4348 |
| cosine_map@100 | 0.4375 |
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
내비게이션 기반 스마트 크루즈 컨트롤이 작동 대기 상태가 되기 위한 조건은 무엇인가요? |
내비게이션 기반 스마트 크루즈 컨트롤 작동 |
내비게이션 뷰 항목에서는 어떤 종류의 정보가 제공되나요? |
클러스터 표시창 정보 |
조명 스위치가 AUTO 위치에 있을 때 전조등 하향 표시등은 어떻게 작동하나요? |
미등 표시등 |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 5per_device_eval_batch_size: 5num_train_epochs: 10fp16: Truemulti_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 5per_device_eval_batch_size: 5per_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: 10max_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: Truefp16_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: Nonehub_always_push: Falsegradient_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: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robin| Epoch | Step | Training Loss | cosine_ndcg@10 |
|---|---|---|---|
| 0.2066 | 50 | - | 0.5694 |
| 0.4132 | 100 | - | 0.5675 |
| 0.6198 | 150 | - | 0.5694 |
| 0.8264 | 200 | - | 0.5676 |
| 1.0 | 242 | - | 0.5630 |
| 1.0331 | 250 | - | 0.5717 |
| 1.2397 | 300 | - | 0.5706 |
| 1.4463 | 350 | - | 0.5675 |
| 1.6529 | 400 | - | 0.5534 |
| 1.8595 | 450 | - | 0.5660 |
| 2.0 | 484 | - | 0.5556 |
| 2.0661 | 500 | 0.0282 | 0.5639 |
| 2.2727 | 550 | - | 0.5486 |
| 2.4793 | 600 | - | 0.5475 |
| 2.6860 | 650 | - | 0.5525 |
| 2.8926 | 700 | - | 0.5400 |
| 3.0 | 726 | - | 0.5515 |
| 3.0992 | 750 | - | 0.5456 |
| 3.3058 | 800 | - | 0.5525 |
| 3.5124 | 850 | - | 0.5576 |
| 3.7190 | 900 | - | 0.5683 |
| 3.9256 | 950 | - | 0.5442 |
| 4.0 | 968 | - | 0.5528 |
| 4.1322 | 1000 | 0.0101 | 0.5480 |
| 4.3388 | 1050 | - | 0.5471 |
| 4.5455 | 1100 | - | 0.5388 |
| 4.7521 | 1150 | - | 0.5438 |
| 4.9587 | 1200 | - | 0.5568 |
| 5.0 | 1210 | - | 0.5567 |
| 5.1653 | 1250 | - | 0.5584 |
| 5.3719 | 1300 | - | 0.5590 |
| 5.5785 | 1350 | - | 0.5556 |
| 5.7851 | 1400 | - | 0.5587 |
| 5.9917 | 1450 | - | 0.5612 |
| 6.0 | 1452 | - | 0.5603 |
| 6.1983 | 1500 | 0.0154 | 0.5640 |
| 6.4050 | 1550 | - | 0.5680 |
| 6.6116 | 1600 | - | 0.5706 |
| 6.8182 | 1650 | - | 0.5636 |
| 7.0 | 1694 | - | 0.5598 |
| 7.0248 | 1700 | - | 0.5602 |
| 7.2314 | 1750 | - | 0.5644 |
| 7.4380 | 1800 | - | 0.5594 |
| 7.6446 | 1850 | - | 0.5576 |
| 7.8512 | 1900 | - | 0.5588 |
| 8.0 | 1936 | - | 0.5619 |
| 8.0579 | 1950 | - | 0.5609 |
| 8.2645 | 2000 | 0.0075 | 0.5619 |
| 8.4711 | 2050 | - | 0.5580 |
| 8.6777 | 2100 | - | 0.5585 |
| 8.8843 | 2150 | - | 0.5585 |
| 9.0 | 2178 | - | 0.5623 |
| 9.0909 | 2200 | - | 0.5616 |
| 9.2975 | 2250 | - | 0.5654 |
| 9.5041 | 2300 | - | 0.5633 |
| 9.7107 | 2350 | - | 0.5641 |
| 9.9174 | 2400 | - | 0.5637 |
| 10.0 | 2420 | - | 0.5642 |
@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-m3