Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 17
How to use zolekode/wibila-adapter-snowflake-arctic-embed-l-v2.0 with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("zolekode/wibila-adapter-snowflake-arctic-embed-l-v2.0")
sentences = [
"Die aktuelle Gemeinsame Agrarpolitik (GAP) gilt seit dem 1. Januar 2023 und endet voraussichtlich 2027. Die GAP setzt sich aus drei wesentlichen Elementen zusammen,\n\nder Konditionalität,\nder ersten Säule mit den Direktzahlungen sowie\nder zweiten Säule mit der Entwicklung des ländlichen Raums.",
"Ist Feuchtgrünland produktiv?",
"Was versteht man unter GAP?",
"welche Zielarten gibt es auf Streuobstwiesen?"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from Snowflake/snowflake-arctic-embed-l-v2.0. 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("zolekode/wibila-adapter-snowflake-arctic-embed-l-v2.0")
# Run inference
sentences = [
'Dabei verteilt sich die EU-Förderung auf zwei Säulen:\n\nDie erste Säule bilden insbesondere die Direktzahlungen an Landwirtinnen und Landwirte, die – bei Erfüllung der jeweiligen Voraussetzungen – je Hektar landwirtschaftlicher Fläche gewährt werden. Das bisher verpflichtende Greening wurde mit weiteren Anforderungen in die Vorschriften zur Konditionalität überführt; die bisherige Greeningprämie entfällt. Neu sind Zahlungen für die freiwilligen "Öko-Regelungen“.\nDie zweite Säule umfasst gezielte Förderprogramme für die nachhaltige und umweltschonende Bewirtschaftung und die ländliche Entwicklung.',
'Wie verteilt sich die EU-Förderung der GAP?',
'Was ist bei Maßnahmen zum Ackerwildkrautschutz zu beachten?',
]
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]
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Mehrjährige Blühstreifen bleiben mind. 2 bis zu 5 Jahren am gleichen Standort und werden nicht jährlich umgebrochen und neu eingesät. Das Saatgut kann aus Kultur- und Wildarten bestehen. Im Gegensatz dazu werden mehrjährige Regiosaatgut-Blühstreifen und -flächen auf Ackerstandorten mit ausschließlich gebietseigenem Saatgut* (Mouseover/Glossar) eingesät. Je nach Förderprogramm werden die Flächen mehrere Jahre nicht umgebrochen und unterschiedlich gepflegt. Gebietseigenes Saatgut ist entweder zertifiziertes Regiosaatgut (VWW oder RegioZert) oder selbst geerntetes Saatgut von einer Spenderfläche in der Nähe. |
Was sind Mehrjährige Blühstreifen mit Regiosaatgut? |
Artenreiche Blühflächen stellen vor allem in agrarisch intensiv geprägten Landschaften Flächen dar, die Bestäubern, Nützlingen und anderen Wildtieren als Nahrungs-, Schutz-, Lebens- oder Überwinterungsflächen dienen. Sie können zudem als Lebensrauminseln in ansonsten stark ausgeräumter Flur einen großen Beitrag zum Biotopverbund leisten. |
Ziele von Mehrjährigen Blühstreifen mit Regiosaatgut? |
Entlang von Hecken oder Waldrändern, nur auf der sonnenzugewandten Seite mit wenig Schattenwurf, Problemunkrautdruck auf der Fläche möglichst gering (z.B. Distel, Quecke). zur Schlagunterteilung und im Sinne des Biotopverbunds in ausgeräumten Landschaften. nicht auf Flächen mit hohem Potenzial an (gefährdeten) Ackerwildkräutern |
Wo eigenen sich Mehrjährigen Blühstreifen mit Regiosaatgut? |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Ackerwildkräuter sind in der heutigen konventionell bewirtschafteten Landschaft selten geworden. Aufgrund der Intensivierung der Landwirtschaft gehören sie zu den gefährdetsten Pflanzengesellschaften in Mitteleuropa. Sie gelten als „Unkräuter“ und sind nicht erwünscht. Allerdings gibt es diese Begleitflora schon seit Beginn des Ackerbaus. Sie stellen eine wichtige Funktion im Okösystem Acker dar. Viele von ihnen bieten Insekten Nahrung in Form von Blüten und sind Lebensraum für viele Wildtiere. Die Blüten bringen - Farbe in die Landschaft, die Pflanzen verfestigen - den Boden und dienen so dem Erosionsschutz. Diverse Ackerwildkräuter sind sogar essbar oder haben heilende Wirkung. |
Was sind Ackerwildkräuter? |
Wiederherstellung einer artenreichen Ackerflora in der monotonen Ackerlandschaft. Damit einhergehend auch Förderung der Insekten, Vögel und weiteren Wildtieren. |
Was bringt der Schutz von Ackerwildkräutern? |
Ein wesentlicher Hinderungsgrund könnte die Ackerhygiene sein. Ackerwildkräuter gelten als „Unkräuter“, zudem gibt es auch die Befürchtung von Ertragseinbußen. |
Was spricht gegen den Schutz von Ackerwildkräutern? |
MultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16learning_rate: 3e-06max_steps: 1000overwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 3e-06weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 3.0max_steps: 1000lr_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: 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: 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: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | Validation Loss |
|---|---|---|---|
| 0.1584 | 16 | 0.632 | - |
| 0.3168 | 32 | 0.5394 | - |
| 0.4752 | 48 | 0.4463 | - |
| 0.6337 | 64 | 0.5024 | - |
| 0.7921 | 80 | 0.641 | - |
| 0.9505 | 96 | 0.5595 | - |
| 0.9901 | 100 | - | 0.7457 |
| 1.1089 | 112 | 0.4359 | - |
| 1.2673 | 128 | 0.4481 | - |
| 1.4257 | 144 | 0.5644 | - |
| 1.5842 | 160 | 0.3657 | - |
| 1.7426 | 176 | 0.526 | - |
| 1.9010 | 192 | 0.4793 | - |
| 1.9802 | 200 | - | 0.7288 |
| 2.0594 | 208 | 0.5828 | - |
| 2.2178 | 224 | 0.4173 | - |
| 2.3762 | 240 | 0.4809 | - |
| 2.5347 | 256 | 0.4637 | - |
| 2.6931 | 272 | 0.502 | - |
| 2.8515 | 288 | 0.5129 | - |
| 2.9703 | 300 | - | 0.7152 |
| 3.0099 | 304 | 0.4433 | - |
| 3.1683 | 320 | 0.3589 | - |
| 3.3267 | 336 | 0.4861 | - |
| 3.4851 | 352 | 0.4709 | - |
| 3.6436 | 368 | 0.4372 | - |
| 3.8020 | 384 | 0.4782 | - |
| 3.9604 | 400 | 0.4677 | 0.7058 |
| 4.1188 | 416 | 0.5042 | - |
| 4.2772 | 432 | 0.5005 | - |
| 4.4356 | 448 | 0.4328 | - |
| 4.5941 | 464 | 0.4602 | - |
| 4.7525 | 480 | 0.4502 | - |
| 4.9109 | 496 | 0.3994 | - |
| 4.9505 | 500 | - | 0.6976 |
| 5.0693 | 512 | 0.4291 | - |
| 5.2277 | 528 | 0.5666 | - |
| 5.3861 | 544 | 0.4714 | - |
| 5.5446 | 560 | 0.4349 | - |
| 5.7030 | 576 | 0.3345 | - |
| 5.8614 | 592 | 0.3174 | - |
| 5.9406 | 600 | - | 0.6913 |
| 6.0198 | 608 | 0.4839 | - |
| 6.1782 | 624 | 0.5433 | - |
| 6.3366 | 640 | 0.4126 | - |
| 6.4950 | 656 | 0.4541 | - |
| 6.6535 | 672 | 0.3581 | - |
| 6.8119 | 688 | 0.3931 | - |
| 6.9307 | 700 | - | 0.6863 |
| 6.9703 | 704 | 0.4682 | - |
| 7.1287 | 720 | 0.4342 | - |
| 7.2871 | 736 | 0.5381 | - |
| 7.4455 | 752 | 0.4055 | - |
| 7.6040 | 768 | 0.3558 | - |
| 7.7624 | 784 | 0.318 | - |
| 7.9208 | 800 | 0.3926 | 0.6833 |
| 8.0792 | 816 | 0.3996 | - |
| 8.2376 | 832 | 0.3984 | - |
| 8.3960 | 848 | 0.4556 | - |
| 8.5545 | 864 | 0.354 | - |
| 8.7129 | 880 | 0.3261 | - |
| 8.8713 | 896 | 0.5176 | - |
| 8.9109 | 900 | - | 0.6814 |
| 9.0297 | 912 | 0.4186 | - |
| 9.1881 | 928 | 0.4077 | - |
| 9.3465 | 944 | 0.4186 | - |
| 9.5050 | 960 | 0.4862 | - |
| 9.6634 | 976 | 0.3857 | - |
| 9.8218 | 992 | 0.4086 | - |
| 9.9010 | 1000 | - | 0.6808 |
@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
Snowflake/snowflake-arctic-embed-l-v2.0