Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 15
How to use seongil-dn/bge-m3-kor-retrieval-451949-bs4096-full-24 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("seongil-dn/bge-m3-kor-retrieval-451949-bs4096-full-24")
sentences = [
"신체와 행동상의 특성을 통해 신원을 확인하는 기술로서 가장 민감한 개인정보에 해당하는 것은 뭐야?",
"그러나 「개인정보 보호법」은 모든 생체인식 정보를 민감정보로서 포함하고 있지 않다. 예를 들어 지문은 개인의 고유성, 동일성을 나타내고 정보주체를 타인으로부터 식별가능하게 하는 개인정보이지만(헌법재판소, 2005), 현행 개인정보 보호법에서는 민감정보로 규율되고 있지 않다. 또 민족 또는 인종적 기원을 드러낼 수 있는 유전정보는 민감정보로서 보호받고 있지만, 국제 규범에서 통상 민감정보로서 보호하고 있는 민족 또는 인종적 기원에 대한 보호를 우리 법률은 명시하고 있지 않다. 어플리케이션이나 기기 등으로 수집되는 개인정보 또한 모두가 건강정보는 아닐 수 있다. 다만 진료정보인 경우이거나 직접적으로나 간접적으로 건강 상태나 위험에 대해 판단할 수 있는 원본 감지정보인 경우, 혹은 건강상태나 건강위험에 대한 결론을 도출하는 경우는 민감정보에 포함되는 건강관련 정보로서 보호될 수 있을 것이다.",
"2. 거시경제분석모델을 통한 수요전망\n가. 실물경제 및 금융산업 성장 전망\n(1) 실물경제 성장 전망\n□ 한국 실질 국내총생산(GDP)은 성장률이 지속적으로 하락하는 추세에 있음. ○ 한국의 연평균 성장률은 1980년대에는 8.9%, 1990년부터 외환위기 이전인 1997년까지는 8.2%로 빠른 성장세를 유지하였으나, 1998년 외환위기로 성장률이 △5.5%까지 하락함. ○ 1999년에는 기저효과 등으로 실질 국내총생산(GDP) 성장률이 11.3%까지 반등하였다가 점차 하락세를 보여 2003년에는 2.9%까지 하락함\n○ 이후 2007년까지 연평균 4.9%의 성장률을 보였으나, 2008년과 2009년에는 글로벌 금융위기의 영향으로 다시 큰 폭으로 하락\n○ 2010년에는 전년대비 6.5% 성장하였으나, 2011년 유로지역 재정위기로 인해 다시 하락하여 2012년에는 2.3%를 기록하고 2013년과 2014년에는 반등하여 각각 2.9% 및 3.3%를 기록\n○ 2015년에는 수출 둔화 지속과 내수 회복 지연 등으로 2.6%를 기록하였으며, 2016년에는 소폭 상승한 2.7%를 기록할 전망\n□ 이러한 경제성장률 하락 추세는 앞으로도 지속될 것으로 예상됨. ○ 한국 잠재성장률이 2016년에는 약 2.9%이지만 2040년에는 1.7%까지 점진적으로 하락할 것으로 전망\n○ 물론 성장잠재력 수준은 여러 유·무형의 요인들에 의해 결정이 되기 때문에 직접적인 관측이 어렵지만 여러 통계기법을 활용하여 잠재성장률을 추정하더라도, 향후 잠재성장률의 추세적인 하락은 불가피한 현상으로 판단됨. □ 경제성장률은 장기적으로 잠재성장률 추세와 비슷한 움직임을 보이겠지만 단기적으로는 경기적인 요인으로 인해 잠재성장률 수준을 하회하거나 상회할 수 있음. ○ 이에 따라 금융연구원의 경제전망 모형을 이용하여 향후 5년간인 2017∼2021년까지의 경제성장률을 추정함. □ 2017년 우리경제는 내수와 수출부진으로 2.5% 성장에 그칠 것으로 예상되며, 이후 2018년과 2019년에는 소폭 개선되어 각각 2.7%, 2.8%를 기록할 것으로 전망됨. (2) 금융산업 성장 전망\n□ 2016년 1~3분기 중 한국에서 창출된 부가가치는 1,109.7조원이며 이중 금융업이 창출한 부가가치는 68.6조원으로 전체 부가가치중 6.18%를 차지함.",
"지문이나 홍채와 같은 바이오 정보는 신체와 행동상의 특성을 통해 신원을 확인하는 기술로서, 기존에 저장해 둔 개인의 바이오 정보와 제시된 바이오 정보를 대조하는 방식이며, 또한 각 개인의 신체에 각인되어 특별한 신체적 변화가 없는 한 평생토록 바꿀 수 없기 때문에 개인정보 중에서도 가장 민감한 개인정보에 해당한다고 볼 수 있다. 그럼에도 불구하고, 개인정보 생명주기에 따라 수집과정에서 명확한 인식과 설명(개인정보 열람 정정 삭제 청구권) 없는 수집의 위험성, 저장관리 과정에서 해킹에 의한 유출 및 삭제, 이용 및 제공과정에서 다른 개인정보 데이터베이스와의 결합에 따른 오 남용(특성, 습관, 행동, 감정추론) 사례가 발생할 가능성이 존재하며, 원데이터의 복원이나 당사자 역추적 등도 가능하므로 개인정보 유출 가능성을 배제할 수는 없다. 본 진정사건과 관련하여 공익근무요원들에 대한 복무(근태)관리는 담당자가 지속적인 점검을 통하여 이를 감독할 수가 있으며, 부득이하게 출퇴근용 카드발급시스템을 사용한다 하더라도 충분히 예방할 수 있으므로 지문등록시스템 도입은 침해의 최소성에 맞지 않다고 판단된다."
]
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': 1024, '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("seongil-dn/bge-m3-kor-retrieval-451949-bs4096-full-24")
# Run inference
sentences = [
'관광 교통 서비스 체계 구축 정책의 추진은 몇 단계로 나눠서 할 수 있을까?',
'관광 교통 서비스 체계 정책 추진 주체로는 중앙 및 지방정부, 공공기관, 민간기관 등이 고려될 수 있다. 중앙정부 및 지방정부, 공공기관 중 연구기관은 정책을 추진하는 주체로서, 지방정부와 사업기관은 정책을 실행하는 주체로서, 민간 기관은 직접 사업을 추진하는 주체로서 참여할 수 있다. 관광 교통은 기존 교통시설 및 수단을 관광객이 이용하는 개념이기 때문에 정책 영역이 국토교통부, 문화체육관광부, 넓게는 해양수산부 등 여러 부처에 걸쳐 있다. 원활한 정책사업 추진을 위해서는 부처 간 협력이 필수적이며, 부처 간 협력 체계로는 협력적 개별사업추진, 공동사업추진, 사업추진 조직구성 등 세 가지 대안을 고려해볼 수 있다. 관광 교통 서비스 체계 구축 정책은 3단계로 구분하여 추진할 수 있다. 1단계는 2016년 2017년으로 설정하고자 하며, 이 시기는 관광 교통 정책 사업을 추진하기 위한 기반을 마련하는 단계이다. 2단계는 2018년부터 2020년까지 3년간으로 본격적인 정책 사업이 추진되는 시기이며, 3단계는 2021년 이후 정책사업의 효과가 창출되는 기간으로, 확장된 형태의 신규 사업을 발굴 및 추진할 수 있어야 한다.',
'관광교통 서비스 체계는 관광 활동을 위한 관광객의 이동 편의성과 효용을 최대화 하는 시스템을 뜻한다. 서비스 체계를 적용하는 영역은 관광 교통 정보, 관광교통수단, 관광교통 편의 서비스로 구분하여 볼 수 있다. 관광교통 정보는 관광 목적지에 도달하기 위해 필요한 관광교통 수단 및 관광교통 편의 서비스 등에 대한 종합적 정보를 뜻한다. 주요 관광자원과 관광 자원까지 이동하는 데 필요한 루트, 루트를 이동하기 위해 필요한 관광교통 수단과 비용, 관광교통 편의 서비스 등에 대한 정보를 모두 포함한다. 관광교통 수단은 출발지로부터 관광목적지를 연결하는 일반 및 특수교통수단을 뜻한다. 또한 교통 수단의 시간적, 공간적 연계 배치와 기반 시설로서 공항, 터미널, 역 또한 교통수단의 범위에 포함한다. 관광교통 편의 시스템은 교통수단의 이용을 보다 편리하게 하는 제도 및 서비스를 뜻한다. 관광교통 편의 서비스 영역에는 예약 할인, 그 밖의 제반 편의 서비스를 모두 포괄한다. 또한 교통수단의 이용은 물론 관광지 입장까지 아우르는 통합 패스 티켓, 바우처 등을 포함한다.',
]
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]
per_device_train_batch_size: 4096learning_rate: 3e-05warmup_ratio: 0.05fp16: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: noprediction_loss_only: Trueper_device_train_batch_size: 4096per_device_eval_batch_size: 8per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 3e-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.05warmup_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: Truedataloader_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: Falseeval_use_gather_object: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss |
|---|---|---|
| 0.0769 | 1 | 3.0662 |
| 0.1538 | 2 | 3.0577 |
| 0.2308 | 3 | 3.1126 |
| 0.3077 | 4 | 1.8085 |
| 0.3846 | 5 | 1.6333 |
| 0.4615 | 6 | 1.5018 |
| 0.5385 | 7 | 1.4955 |
| 0.6154 | 8 | 1.2295 |
| 0.6923 | 9 | 1.0032 |
| 0.7692 | 10 | 0.884 |
| 0.8462 | 11 | 0.768 |
| 0.9231 | 12 | 0.7185 |
| 1.0 | 13 | 0.6493 |
| 1.0769 | 14 | 0.6176 |
| 1.1538 | 15 | 0.5703 |
| 1.2308 | 16 | 0.5469 |
| 1.3077 | 17 | 0.5242 |
| 1.3846 | 18 | 0.4967 |
| 1.4615 | 19 | 0.4758 |
| 1.5385 | 20 | 0.4665 |
| 1.6154 | 21 | 0.4561 |
| 1.6923 | 22 | 0.4341 |
| 1.7692 | 23 | 0.4299 |
| 1.8462 | 24 | 0.4039 |
@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",
}
Base model
BAAI/bge-m3