Sentence-transformers

Latest version: v3.4.1

Safety actively analyzes 706267 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 21 of 24

0.4.1

Not secure
**Refactored Tokenization**
- Faster tokenization speed: Using batched tokenization for training & inference - Now, all sentences in a batch are tokenized simoultanously.
- Usage of the `SentencesDataset` no longer needed for training. You can pass your train examples directly to the DataLoader:
python
train_examples = [InputExample(texts=['My first sentence', 'My second sentence'], label=0.8),
InputExample(texts=['Another pair', 'Unrelated sentence'], label=0.3)]
train_dataloader = DataLoader(train_examples, shuffle=True, batch_size=16)

- If you use a custom torch DataSet class: The dataset class must now return `InputExample` objects instead of tokenized texts
- Class `SentenceLabelDataset` has been updated to new tokenization flow: It returns always two or more `InputExamples` with the same label

**Asymmetric Models**
Add new `models.Asym` class that allows different encoding of sentences based on some tag (e.g. *query* vs *paragraph*). Minimal example:

python
word_embedding_model = models.Transformer(base_model, max_seq_length=250)
pooling_model = models.Pooling(word_embedding_model.get_word_embedding_dimension())
d1 = models.Dense(word_embedding_model.get_word_embedding_dimension(), 256, bias=False, activation_function=nn.Identity())
d2 = models.Dense(word_embedding_model.get_word_embedding_dimension(), 256, bias=False, activation_function=nn.Identity())
asym_model = models.Asym({'QRY': [d1], 'DOC': [d2]})
model = SentenceTransformer(modules=[word_embedding_model, pooling_model, asym_model])

Your input examples have to look like this:
inp_example = InputExample(texts=[{'QRY': 'your query'}, {'DOC': 'your document text'}], label=1)

Encoding (Note: Mixed inputs are not allowed)
model.encode([{'QRY': 'your query1'}, {'QRY': 'your query2'}])


Inputs that have the key 'QRY' will be passed through the `d1` dense layer, while inputs with they key 'DOC' through the `d2` dense layer.
More documentation on how to design asymmetric models will follow soon.


**New Namespace & Models for Cross-Encoder**
Cross-Encoder are now hosted at [https://huggingface.co/cross-encoder](https://huggingface.co/cross-encoder). Also, new [pre-trained models](https://www.sbert.net/docs/pretrained_cross-encoders.html) have been added for: NLI & QNLI.

**Logging**
Log messages now use a custom logger from `logging` thanks to PR 623. This allows you which log messages you want to see from which components.

**Unit tests**
A lot more unit tests have been added, which test the different components of the framework.

0.4.0

Not secure
- Updated the dependencies so that it works with Huggingface Transformers version 4. Sentence-Transformers still works with huggingface transformers version 3, but an update to version 4 of transformers is recommended. Future changes might break with transformers version 3.
- New naming of pre-trained models. Models will be named: {task}-{transformer_model}. So 'bert-base-nli-stsb-mean-tokens' becomes 'stsb-bert-base'. Models will still be available under their old names, but newer models will follow the updated naming scheme.
- New application example for [information retrieval and question answering retrieval](https://www.sbert.net/examples/applications/information-retrieval/README.html). Together with respective pre-trained models

0.3.9

Not secure
This release only include some smaller updates:
- Code was tested with transformers 3.5.1, requirement was updated so that it works with transformers 3.5.1
- As some parts and models require Pytorch >= 1.6.0, requirement was updated to require at least pytorch 1.6.0. Most of the code and models will work with older pytorch versions.
- model.encode() stored the embeddings on the GPU, which required quite a lot of GPU memory when encoding millions of sentences. The embeddings are now moved to CPU once they are computed.
- The CrossEncoder-Class now accepts a max_length parameter to control the truncation of inputs
- The Cross-Encoder predict method has now a apply_softmax parameter, that allows to apply softmax on-top of a multi-class output.

0.3.8

Not secure
- Add support training and using [CrossEncoder](https://www.sbert.net/docs/usage/cross-encoder.html)
- Data Augmentation method [AugSBERT](https://www.sbert.net/examples/training/data_augmentation/README.html) added
- New model trained on large scale paraphrase data. Models works on internal benchmark much better than previous models: **distilroberta-base-paraphrase-v1** and **xlm-r-distilroberta-base-paraphrase-v1**
- New model for Information Retrieval trained on MS Marco: **distilroberta-base-msmarco-v1**
- Improved MultipleNegativesRankingLoss loss function: Similarity function can be changed and is now cosine similarity (was dot-product before), further, similarity scores can be multiplied by a scaling factor. This allows the usage of NTXentLoss / InfoNCE loss.
- New [MegaBatchMarginLoss](https://www.sbert.net/docs/package_reference/losses.html#megabatchmarginloss), inspired from the paper [ParaNMT-Paper](https://www.aclweb.org/anthology/P18-1042/).

**Smaller changes:**
- Update InformationRetrievalEvaluator, so that it can work with large corpora (Millions of entries). Removed the query_chunk_size parameter from the evaluator
- SentenceTransformer.encode method detaches tensors from compute graph
- SentenceTransformer.fit() method - Parameter output_path_ignore_not_empty deprecated. No longer checks that target folder must be empty

0.3.7

Not secure
- Upgrade transformers dependency, transformers 3.1.0, 3.2.0 and 3.3.1 are working
- Added example code for model distillation: Sentence Embeddings models can be drastically reduced to e.g. only 2-4 layers while keeping 98+% of their performance. Code can be found in examples/training/distillation
- Transformer models can now accepts two inputs ['sentence 1', 'context for sent1'], which are encoded as the two inputs for BERT.


Minor changes:
- Tokenization in the multi-processes encoding setup now happens in the child processes, not in the parent process.
- Added models.Normalize() to allow the normalization of embeddings to unit length

0.3.6

Not secure
Hugginface Transformers version 3.1.0 had a breaking change with previous version 3.0.2

This release fixes the issue so that Sentence-Transformers is compatible with Huggingface Transformers 3.1.0. Note, that this and future version will not be compatible with transformers < 3.1.0.

Page 21 of 24

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.