SentenceTransformer based on intfloat/multilingual-e5-small

This is a sentence-transformers model finetuned from intfloat/multilingual-e5-small. 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.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: intfloat/multilingual-e5-small
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 384 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False, 'architecture': 'BertModel'})
  (1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, '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()
)

Usage

Direct Usage (Sentence Transformers)

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("jeffreylimnardy/sensor-e5-finetuned")
# Run inference
sentences = [
    "passage: name: GWM Spechtstraße, description: Grundwasserpegelmessung (Standort: Spechtstraße), datastream: [{'name': 'Wasserpegel an der GWM Spechtstraße', 'description': 'Der Grundwasserpegel bezogen auf NN: Abstand zwischen Meereshöhe und Wasseroberfläche'}, {'name': '(Wasser-)Temperatur an Sonde der GWM Spechtstraße', 'description': 'Die Temperatur an der Sonde (im Wasser)'}, {'name': 'Atmosphärischer Druck an der GWM Spechtstraße', 'description': 'Der Atmosphärische Druck an der Sendeeinheit (über dem Wasser)'}, {'name': 'Umgebungstemperatur an der GWM Spechtstraße', 'description': 'Die Umgebungstemperatur, gemessen an der Sendeeinheit (über dem Wasser)'}, {'name': 'Differenzdruck an der GWM Spechtstraße', 'description': 'Die Differenz zwischen dem Druck an der Sonde (im Wasser) und dem atmosphärischen Druck an der Sendeeinheit'}]",
    "passage: name: GWM Wittenfelde Mühlendamm, description: Grundwasserpegelmessung (Standort: Wittenfelde Mühlendamm, datastream: [{'name': 'Wasserpegel an der GWM Wittenfelde Mühlendamm', 'description': 'Der Grundwasserpegel bezogen auf NN: Abstand zwischen Meereshöhe und Wasseroberfläche'}, {'name': '(Wasser-)Temperatur an Sonde der GWM Wittenfelde Mühlendamm', 'description': 'Die Temperatur an der Sonde (im Wasser)'}, {'name': 'Atmosphärischer Druck an der GWM Wittenfelde Mühlendamm', 'description': 'Der Atmosphärische Druck an der Sendeeinheit (über dem Wasser)'}, {'name': 'Umgebungstemperatur an der GWM Wittenfelde Mühlendamm', 'description': 'Die Umgebungstemperatur, gemessen an der Sendeeinheit (über dem Wasser)'}, {'name': 'Differenzdruck an der GWM Wittenfelde Mühlendamm', 'description': 'Die Differenz zwischen dem Druck an der Sonde (im Wasser) und dem atmosphärischen Druck an der Sendeeinheit'}]",
    "passage: name: Parkplatz für Menschen mit Behinderung Alte Münze - 02, description: Parkplatz (Standort: Alte Münze - 02); vor Hausnummer 10, datastream: [{'name': 'Belegtstatus an dem Parkplatz Alte Münze - 02', 'description': 'Belegtstatus'}, {'name': 'Temperatur an dem Parkplatz Alte Münze - 02', 'description': 'Temperatur an dem Parksensor'}]",
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 384]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.9743, 0.3447],
#         [0.9743, 1.0000, 0.3384],
#         [0.3447, 0.3384, 1.0000]])

Evaluation

Metrics

Triplet

Metric Value
cosine_accuracy 1.0

Training Details

Training Dataset

Unnamed Dataset

  • Size: 255 training samples
  • Columns: anchor and positive
  • Approximate statistics based on the first 255 samples:
    anchor positive
    type string string
    details
    • min: 84 tokens
    • mean: 186.89 tokens
    • max: 319 tokens
    • min: 84 tokens
    • mean: 186.13 tokens
    • max: 319 tokens
  • Samples:
    anchor positive
    passage: name: GWM Wittenfelde, description: Grundwasserpegelmessung (Standort: Wittenfelde), datastream: [{'name': 'Wasserpegel an der GWM Wittenfelde', 'description': 'Der Grundwasserpegel bezogen auf NN: Abstand zwischen Meereshöhe und Wasseroberfläche'}, {'name': '(Wasser-)Temperatur an Sonde der GWM Wittenfelde', 'description': 'Die Temperatur an der Sonde (im Wasser)'}, {'name': 'Atmosphärischer Druck an der GWM Wittenfelde', 'description': 'Der Atmosphärische Druck an der Sendeeinheit (über dem Wasser)'}, {'name': 'Umgebungstemperatur an der GWM Wittenfelde', 'description': 'Die Umgebungstemperatur, gemessen an der Sendeeinheit (über dem Wasser)'}, {'name': 'Differenzdruck an der GWM Wittenfelde', 'description': 'Die Differenz zwischen dem Druck an der Sonde (im Wasser) und dem atmosphärischen Druck an der Sendeeinheit'}] passage: name: GWM Spechtstraße, description: Grundwasserpegelmessung (Standort: Spechtstraße), datastream: [{'name': 'Wasserpegel an der GWM Spechtstraße', 'description': 'Der Grundwasserpegel bezogen auf NN: Abstand zwischen Meereshöhe und Wasseroberfläche'}, {'name': '(Wasser-)Temperatur an Sonde der GWM Spechtstraße', 'description': 'Die Temperatur an der Sonde (im Wasser)'}, {'name': 'Atmosphärischer Druck an der GWM Spechtstraße', 'description': 'Der Atmosphärische Druck an der Sendeeinheit (über dem Wasser)'}, {'name': 'Umgebungstemperatur an der GWM Spechtstraße', 'description': 'Die Umgebungstemperatur, gemessen an der Sendeeinheit (über dem Wasser)'}, {'name': 'Differenzdruck an der GWM Spechtstraße', 'description': 'Die Differenz zwischen dem Druck an der Sonde (im Wasser) und dem atmosphärischen Druck an der Sendeeinheit'}]
    passage: name: Parkplatz für Menschen mit Behinderung Möserstrasse Hs 4 - 02, description: Parkplatz (Standort: Möserstrasse Hs 4 - 02), datastream: [{'name': 'Belegtstatus an dem Parkplatz Möserstrasse Hs 4 - 02', 'description': 'Belegtstatus'}, {'name': 'Temperatur an dem Parkplatz Möserstrasse Hs 4 - 02', 'description': 'Temperatur an dem Parksensor'}] passage: name: Parkplatz für Menschen mit Behinderung Schillerstrasse - 03, description: Parkplatz (Standort: Schillerstrasse - 03), datastream: [{'name': 'Belegtstatus an dem Parkplatz Schillerstrasse - 03', 'description': 'Belegtstatus'}, {'name': 'Temperatur an dem Parkplatz Schillerstrasse - 03', 'description': 'Temperatur an dem Parksensor'}]
    passage: name: GWM Spechtstraße, description: Grundwasserpegelmessung (Standort: Spechtstraße), datastream: [{'name': 'Wasserpegel an der GWM Spechtstraße', 'description': 'Der Grundwasserpegel bezogen auf NN: Abstand zwischen Meereshöhe und Wasseroberfläche'}, {'name': '(Wasser-)Temperatur an Sonde der GWM Spechtstraße', 'description': 'Die Temperatur an der Sonde (im Wasser)'}, {'name': 'Atmosphärischer Druck an der GWM Spechtstraße', 'description': 'Der Atmosphärische Druck an der Sendeeinheit (über dem Wasser)'}, {'name': 'Umgebungstemperatur an der GWM Spechtstraße', 'description': 'Die Umgebungstemperatur, gemessen an der Sendeeinheit (über dem Wasser)'}, {'name': 'Differenzdruck an der GWM Spechtstraße', 'description': 'Die Differenz zwischen dem Druck an der Sonde (im Wasser) und dem atmosphärischen Druck an der Sendeeinheit'}] passage: name: GWM Wittenfelde Mühlendamm, description: Grundwasserpegelmessung (Standort: Wittenfelde Mühlendamm, datastream: [{'name': 'Wasserpegel an der GWM Wittenfelde Mühlendamm', 'description': 'Der Grundwasserpegel bezogen auf NN: Abstand zwischen Meereshöhe und Wasseroberfläche'}, {'name': '(Wasser-)Temperatur an Sonde der GWM Wittenfelde Mühlendamm', 'description': 'Die Temperatur an der Sonde (im Wasser)'}, {'name': 'Atmosphärischer Druck an der GWM Wittenfelde Mühlendamm', 'description': 'Der Atmosphärische Druck an der Sendeeinheit (über dem Wasser)'}, {'name': 'Umgebungstemperatur an der GWM Wittenfelde Mühlendamm', 'description': 'Die Umgebungstemperatur, gemessen an der Sendeeinheit (über dem Wasser)'}, {'name': 'Differenzdruck an der GWM Wittenfelde Mühlendamm', 'description': 'Die Differenz zwischen dem Druck an der Sonde (im Wasser) und dem atmosphärischen Druck an der Sendeeinheit'}]
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "gather_across_devices": false
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 4
  • num_train_epochs: 40
  • warmup_steps: 10
  • gradient_accumulation_steps: 4
  • eval_strategy: epoch
  • load_best_model_at_end: True

All Hyperparameters

Click to expand
  • per_device_train_batch_size: 4
  • num_train_epochs: 40
  • max_steps: -1
  • learning_rate: 5e-05
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: None
  • warmup_steps: 10
  • optim: adamw_torch_fused
  • optim_args: None
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • optim_target_modules: None
  • gradient_accumulation_steps: 4
  • average_tokens_across_devices: True
  • max_grad_norm: 1.0
  • label_smoothing_factor: 0.0
  • bf16: False
  • fp16: False
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • use_liger_kernel: False
  • liger_kernel_config: None
  • use_cache: False
  • neftune_noise_alpha: None
  • torch_empty_cache_steps: None
  • auto_find_batch_size: False
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • include_num_input_tokens_seen: no
  • log_level: passive
  • log_level_replica: warning
  • disable_tqdm: False
  • project: huggingface
  • trackio_space_id: trackio
  • eval_strategy: epoch
  • per_device_eval_batch_size: 8
  • prediction_loss_only: True
  • eval_on_start: False
  • eval_do_concat_batches: True
  • eval_use_gather_object: False
  • eval_accumulation_steps: None
  • include_for_metrics: []
  • batch_eval_metrics: False
  • save_only_model: False
  • save_on_each_node: False
  • enable_jit_checkpoint: False
  • push_to_hub: False
  • hub_private_repo: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_always_push: False
  • hub_revision: None
  • load_best_model_at_end: True
  • ignore_data_skip: False
  • restore_callback_states_from_checkpoint: False
  • full_determinism: False
  • seed: 42
  • data_seed: None
  • use_cpu: False
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • dataloader_prefetch_factor: None
  • remove_unused_columns: True
  • label_names: None
  • train_sampling_strategy: random
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • ddp_backend: None
  • ddp_timeout: 1800
  • fsdp: []
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • deepspeed: None
  • debug: []
  • skip_memory_metrics: True
  • do_predict: False
  • resume_from_checkpoint: None
  • warmup_ratio: None
  • local_rank: -1
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

Epoch Step Training Loss sensor-eval_cosine_accuracy
0.625 10 0.8999 -
1.0 16 - 1.0
1.25 20 0.8850 -
1.875 30 0.8628 -
2.0 32 - 1.0
2.5 40 0.8573 -
3.0 48 - 1.0
3.125 50 0.8168 -
3.75 60 0.9196 -
4.0 64 - 1.0
4.375 70 0.7966 -
5.0 80 0.8498 1.0
5.625 90 0.7993 -
6.0 96 - 1.0
6.25 100 0.8323 -
6.875 110 0.8297 -
7.0 112 - 1.0
7.5 120 0.8285 -
8.0 128 - 1.0
8.125 130 0.7791 -
8.75 140 0.7792 -
9.0 144 - 1.0
9.375 150 0.7874 -
10.0 160 0.7681 1.0
10.625 170 0.7998 -
11.0 176 - 1.0
11.25 180 0.9072 -
11.875 190 0.8040 -
12.0 192 - 1.0
12.5 200 0.7578 -
13.0 208 - 1.0
13.125 210 0.7999 -
13.75 220 0.8061 -
14.0 224 - 1.0
14.375 230 0.8599 -
15.0 240 0.8583 1.0
15.625 250 0.8065 -
16.0 256 - 1.0
16.25 260 0.7855 -
16.875 270 0.8642 -
17.0 272 - 1.0
17.5 280 0.8370 -
18.0 288 - 1.0
18.125 290 0.7141 -
18.75 300 0.7787 -
19.0 304 - 1.0
19.375 310 0.7395 -
20.0 320 0.7387 1.0
20.625 330 0.7480 -
21.0 336 - 1.0
21.25 340 0.7267 -
21.875 350 0.7460 -
22.0 352 - 1.0
22.5 360 0.8191 -
23.0 368 - 1.0
23.125 370 0.7616 -
23.75 380 0.7429 -
24.0 384 - 1.0
24.375 390 0.8342 -
25.0 400 0.7979 1.0
25.625 410 0.7139 -
26.0 416 - 1.0
26.25 420 0.7602 -
26.875 430 0.7041 -
27.0 432 - 1.0
27.5 440 0.7616 -
28.0 448 - 1.0
28.125 450 0.7717 -
28.75 460 0.7635 -
29.0 464 - 1.0
29.375 470 0.8455 -
30.0 480 0.7661 1.0
30.625 490 0.6935 -
31.0 496 - 1.0
31.25 500 0.7374 -
31.875 510 0.8124 -
32.0 512 - 1.0
32.5 520 0.6391 -
33.0 528 - 1.0
33.125 530 0.7026 -
33.75 540 0.7457 -
34.0 544 - 1.0
34.375 550 0.7220 -
35.0 560 0.6747 1.0
35.625 570 0.6967 -
36.0 576 - 1.0
36.25 580 0.6560 -
36.875 590 0.6931 -
37.0 592 - 1.0
37.5 600 0.7191 -
38.0 608 - 1.0
38.125 610 0.6672 -
38.75 620 0.6966 -
39.0 624 - 1.0
39.375 630 0.7470 -
40.0 640 0.6471 1.0

Framework Versions

  • Python: 3.12.12
  • Sentence Transformers: 5.2.3
  • Transformers: 5.2.0
  • PyTorch: 2.10.0
  • Accelerate: 1.12.0
  • Datasets: 4.6.0
  • Tokenizers: 0.22.2

Citation

BibTeX

Sentence Transformers

@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",
}

MultipleNegativesRankingLoss

@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}
}
Downloads last month
6
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for jeffreylimnardy/sensor-e5-finetuned

Finetuned
(182)
this model

Papers for jeffreylimnardy/sensor-e5-finetuned

Evaluation results