Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 13
How to use JLee0/rag-embedder-grand-20epochs with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("JLee0/rag-embedder-grand-20epochs")
sentences = [
"에어백 제어 모듈은 어떤 부품들과 연동하여 작동하나요?",
"운전석 주변 점검\n• 운전석 주변은 항상 깨끗하게 유지하십시오.\n빈 깡통 등이 페달 밑으로 굴러 들어갈 경우\n페달 조작이 불가능하게 되어 매우 위험합니\n다.\n• 바닥 매트는 페달의 움직임을 방해하지 않는\n것으로 너무 두껍지 않으면서 바닥에 고정되\n는 제품이어야 합니다.\n• 차 안에는 화물을 좌석 높이 이상으로 적재\n하지 마십시오.",
"에어백 (보조 구속 장치)\n에어백 종류\n(1) 운전석 에어백\n(2) 동승석 에어백\n(3) 앞좌석 사이드 에어백\n(4) 뒷좌석 사이드 에어백\n(5) 커튼 에어백\n(6) 운전석 무릎 에어백\n(7) 앞좌석 센터 에어백 \n\n 시트 및 안전 장치\n에어백 관련 부품\n에어백 제어 모듈은 아래 부품들과 연동하여 작동합니다.\n(1) 운전석 에어백 모듈\n(2) 동승석 에어백 모듈\n(3) 사이드 에어백 모듈\n(4) 앞좌석 센터 에어백 모듈\n(5) 커튼 에어백 모듈\n(6) 리트랙터 프리텐셔너\n(7) 운전석 무릎 에어백 모듈\n(8) 에어백 제어 모듈/전복 감지 센서\n(9) 정면충돌 감지 센서\n(10) 측면충돌 감지 센서(가속도)\n(11) 측면충돌 감지 센서(압력)\n(12) 승객 구분 센서(OCS)\n(13) 에어백 경고등",
"차체 자세 제어 (ESC) 장치 작동 표시등 \n\n ESC 작동 표시등\n시동을 'ON' 하면 표시등이 켜지고 차체 자세\n제어(ESC) 장치에 이상이 없으면 약 3초 후에\n꺼집니다. 주행 중 차체 자세 제어(ESC) 장치가\n작동하면 작동하는 동안 표시등이 깜빡입니다.\n차체 자세 제어(ESC) 장치 작동 표시등이 꺼지\n지 않고 계속 켜져 있거나 주행 중 켜지면 차체\n자세 제어(ESC) 장치에 이상이 있는 것이므로\n당사 직영 하이테크센터나 블루핸즈에서 점검\n을 받으십시오. \n\n ESC 작동 정지 표시등\n차체 자세 제어(ESC) 장치 작동 정지 버튼\n을 눌러 차체 자세 제어 기능을 해제하면 차체\n자세 제어(ESC) 장치 작동 정지 표시등이\n켜집니다.\n커브 길이나 눈이 쌓인 도로, 노면이 얼어있는\n도로에서는 ESC 기능에 의존하지 말고 안전에\n유의하여 주행하십시오. 이와 같은 길을 주행\n하거나 차체 자세 제어(ESC) 장치 작동 표시등\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 = [
"타이어 제조일 표기에서 '0224'는 어떤 의미를 가지고 있나요?",
'타이어 제조일\n타이어의 경우 제조일 기준으로 6년이 경과되\n면 자연적으로 노화되기 때문에 사용하지 않았\n더라도 임시 타이어를 포함하여 새 타이어로 교\n체해야 합니다. 이때 제조일을 확인하기 위해\n타이어의 옆면에 DOT라는 표시를 양쪽면 중\n한면에 삽입하도록 되어 있으며 이 표시는 영문\n및 숫자로 구성되어 마지막 네 자리를 통해 제\n조일을 확인할 수 있습니다. \n\n 표시 형식\n예 : DOT XXXX XXXX\n표시 앞부분은 제조 공장, 타이어 크기 및 트레\n드 형상에 대한 고유 표시이고, 뒤의 4자리는\n제조 시기를 의미합니다.\n제조 시기 4자리 중 앞 2자리는 생산된 주간, 뒤\n2자리는 제조 연도를 의미합니다. 예를 들어,\nDOT XXXX XXXX 0224로 표기되어 있다면\n2024년도 2주차에 생산된 제품이란 뜻입니다.\n타이어가 6년이 지나면 반제품 간 박리 현상을\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.0373 |
| cosine_accuracy@3 | 0.7001 |
| cosine_accuracy@5 | 0.8293 |
| cosine_accuracy@10 | 0.9198 |
| cosine_precision@1 | 0.0373 |
| cosine_precision@3 | 0.2334 |
| cosine_precision@5 | 0.1659 |
| cosine_precision@10 | 0.092 |
| cosine_recall@1 | 0.0373 |
| cosine_recall@3 | 0.7001 |
| cosine_recall@5 | 0.8293 |
| cosine_recall@10 | 0.9198 |
| cosine_ndcg@10 | 0.54 |
| cosine_mrr@10 | 0.4124 |
| cosine_map@100 | 0.4159 |
sentence_0 and sentence_1| sentence_0 | sentence_1 | |
|---|---|---|
| type | string | string |
| details |
|
|
| sentence_0 | sentence_1 |
|---|---|
어린이가 차량에 탑승할 때, 안전벨트를 제대로 착용하기 위해 어떤 점에 유의해야 하나요? |
안전벨트 |
측면 에어백은 어떤 상황에서 작동할 수 있나요? |
측면 에어백 |
차량에서 휴대 전화나 무전기 사용이 권장되지 않는 이유는 무엇인가요? |
기타 주의사항 |
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: 20fp16: 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: 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: 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.6173 | 50 | - | 0.5728 |
| 1.0 | 81 | - | 0.5718 |
| 1.2346 | 100 | - | 0.5700 |
| 1.8519 | 150 | - | 0.5766 |
| 2.0 | 162 | - | 0.5767 |
| 2.4691 | 200 | - | 0.5789 |
| 3.0 | 243 | - | 0.5721 |
| 3.0864 | 250 | - | 0.5693 |
| 3.7037 | 300 | - | 0.5762 |
| 4.0 | 324 | - | 0.5582 |
| 4.3210 | 350 | - | 0.5680 |
| 4.9383 | 400 | - | 0.5578 |
| 5.0 | 405 | - | 0.5550 |
| 5.5556 | 450 | - | 0.5670 |
| 6.0 | 486 | - | 0.5682 |
| 6.1728 | 500 | 0.0639 | 0.5518 |
| 6.7901 | 550 | - | 0.5588 |
| 7.0 | 567 | - | 0.5676 |
| 7.4074 | 600 | - | 0.5600 |
| 8.0 | 648 | - | 0.5617 |
| 8.0247 | 650 | - | 0.5617 |
| 8.6420 | 700 | - | 0.5624 |
| 9.0 | 729 | - | 0.5682 |
| 9.2593 | 750 | - | 0.5567 |
| 9.8765 | 800 | - | 0.5537 |
| 10.0 | 810 | - | 0.5529 |
| 10.4938 | 850 | - | 0.5495 |
| 11.0 | 891 | - | 0.5673 |
| 11.1111 | 900 | - | 0.5622 |
| 11.7284 | 950 | - | 0.5539 |
| 12.0 | 972 | - | 0.5658 |
| 12.3457 | 1000 | 0.0221 | 0.5411 |
| 12.9630 | 1050 | - | 0.5619 |
| 13.0 | 1053 | - | 0.5643 |
| 13.5802 | 1100 | - | 0.5597 |
| 14.0 | 1134 | - | 0.5506 |
| 14.1975 | 1150 | - | 0.5489 |
| 14.8148 | 1200 | - | 0.5479 |
| 15.0 | 1215 | - | 0.5551 |
| 15.4321 | 1250 | - | 0.5453 |
| 16.0 | 1296 | - | 0.5502 |
| 16.0494 | 1300 | - | 0.5509 |
| 16.6667 | 1350 | - | 0.5556 |
| 17.0 | 1377 | - | 0.5475 |
| 17.2840 | 1400 | - | 0.5561 |
| 17.9012 | 1450 | - | 0.5575 |
| 18.0 | 1458 | - | 0.5530 |
| 18.5185 | 1500 | 0.0185 | 0.5502 |
| 19.0 | 1539 | - | 0.5347 |
| 19.1358 | 1550 | - | 0.5359 |
| 19.7531 | 1600 | - | 0.5402 |
| 20.0 | 1620 | - | 0.5400 |
@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