alt.freeweights.embed / e5-small-unsupervised
From: intfloat <huggingface.co/intfloat>Newsgroups: alt.freeweights.embedSubject:

e5-small-unsupervised

Date: 2026-11-14Commit: b1dcdb2Signed: 2DC28CC7B26A283B ✓

Sentence similarity model with 33M parameters. Safetensors weights, 268 MB in all. Published by intfloat under MIT.

33M params268MBe5-small-unsupervisedsafetensorspermissive
FactsParams33MSize268 MBFormatssafetensorsTasksentence similarityLicenseMITFrom sourcepermissive
$ fw get intfloat/e5-small-unsupervised
# manifest sha256 c4a7d8a8ec9b… · 268 MB · 12 files
$ fw verify ./e5-small-unsupervised intfloat/e5-small-unsupervised
From sourceHosted (signed)intfloat/e5-small-unsupervisedLast check: 2026-11-14 21:09 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Evaluate with

Overview

Size
268 MB
Weights
133 MB (safetensors)
Parameters
33M
Formats
safetensors
Task
sentence similarity
License
MIT (permissive)
Files
12, each with a sha256
Publisher
intfloat
Added
2026-11-14
Section
alt.freeweights.embed
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-14 21:09 UTCpassed

Model card

From the publisher at commit b1dcdb2. Shown as plain text with links; images open at the publisher.

E5-small-unsupervised#

This model is similar to e5-small but without supervised fine-tuning.

Text Embeddings by Weakly-Supervised Contrastive Pre-training. Liang Wang, Nan Yang, Xiaolong Huang, Binxing Jiao, Linjun Yang, Daxin Jiang, Rangan Majumder, Furu Wei, arXiv 2022

This model has 12 layers and the embedding size is 384.

Usage#

Below is an example to encode queries and passages from the MS-MARCO passage ranking dataset.

import torch.nn.functional as F

from torch import Tensor
from transformers import AutoTokenizer, AutoModel


def average_pool(last_hidden_states: Tensor,
                 attention_mask: Tensor) -> Tensor:
    last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)
    return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]


# Each input text should start with "query: " or "passage: ".
# For tasks other than retrieval, you can simply use the "query: " prefix.
input_texts = ['query: how much protein should a female eat',
               'query: summit define',
               "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.",
               "passage: Definition of summit for English Language Learners. : 1  the highest point of a mountain : the top of a mountain. : 2  the highest level. : 3  a meeting or series of meetings between the leaders of two or more governments."]

tokenizer = AutoTokenizer.from_pretrained('intfloat/e5-small-unsupervised')
model = AutoModel.from_pretrained('intfloat/e5-small-unsupervised')

# Tokenize the input texts
batch_dict = tokenizer(input_texts, max_length=512, padding=True, truncation=True, return_tensors='pt')

outputs = model(**batch_dict)
embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])

# normalize embeddings
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:2] @ embeddings[2:].T) * 100
print(scores.tolist())

Training Details#

Please refer to our paper at https://arxiv.org/pdf/2212.03533.pdf.

Benchmark Evaluation#

Check out unilm/e5 to reproduce evaluation results on the BEIR and MTEB benchmark.

Support for Sentence Transformers#

Below is an example for usage with sentence_transformers.

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('intfloat/e5-small-unsupervised')
input_texts = [
    'query: how much protein should a female eat',
    'query: summit define',
    "passage: As a general guideline, the CDC's average requirement of protein for women ages 19 to 70 is 46 grams per day. But, as you can see from this chart, you'll need to increase that if you're expecting or training for a marathon. Check out the chart below to see how much protein you should be eating each day.",
    "passage: Definition of summit for English Language Learners. : 1  the highest point of a mountain : the top of a mountain. : 2  the highest level. : 3  a meeting or series of meetings between the leaders of two or more governments."
]
embeddings = model.encode(input_texts, normalize_embeddings=True)

Package requirements

pip install sentence_transformers~=2.2.2

Contributors: michaelfeil

FAQ#

1. Do I need to add the prefix "query: " and "passage: " to input texts?

Yes, this is how the model is trained, otherwise you will see a performance degradation.

Here are some rules of thumb:

  • Use "query: " and "passage: " correspondingly for asymmetric tasks such as passage retrieval in open QA, ad-hoc information retrieval.
  • Use "query: " prefix for symmetric tasks such as semantic similarity, paraphrase retrieval.
  • Use "query: " prefix if you want to use embeddings as features, such as linear probing classification, clustering.

2. Why are my reproduced results slightly different from reported in the model card?

Different versions of transformers and pytorch could cause negligible but non-zero performance differences.

Citation#

If you find our paper or models helpful, please consider cite as follows:

@article{wang2022text,
  title={Text Embeddings by Weakly-Supervised Contrastive Pre-training},
  author={Wang, Liang and Yang, Nan and Huang, Xiaolong and Jiao, Binxing and Yang, Linjun and Jiang, Daxin and Majumder, Rangan and Wei, Furu},
  journal={arXiv preprint arXiv:2212.03533},
  year={2022}
}

Limitations#

This model only works for English texts. Long texts will be truncated to at most 512 tokens.

Files

12 files · 268 MBWeights 133 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 12 files with their sha256
FileSizesha256
.gitattributes1.48 KBdb7c0371f46f0840b8f25794c1e3321c9b5820a8cb6ba9694a46fc64b8fae5a6
1_Pooling/config.json200 B987f7a67a38fa564c849bb5d277c52ab9088a84368fc0be31a354125aebb12a0
README.md5.09 KB5a96b0740d06c61c6d1437b81656f3c65b475277fadbf7dbdcf9d19a7cf50f46
config.json664 B69dcb5353d3eea5455005fd8d6148062b5820358b5afa727f475b655454c011f
model.safetensors133 MB4a1f2ecf4d72bead95f495255cdacdf80a844eb1836eec300b4788fe5a4556db
modules.json387 Bc6e29747481e8b5dd2b58401966aeac910de39092f90cda9a704b1545f902b04
pytorch_model.bin134 MBdc5b5204747d65bfa085ae038d1b8abf93b2f1baf706bb1284885f4bf5445b2f
sentence_bert_config.json57 B948201d8329907aae938fa62f9ceeed53f5694dacc2b87b9f3b78b37ee986529
special_tokens_map.json112 B303df45a03609e4ead04bc3dc1536d0ab19b5358db685b6f3da123d05ec200e3
tokenizer.json466 KB5fd1c882abbd30517dced455a2c9768945ec726b96727927e4959348d9de550b
tokenizer_config.json385 B714ff78dfc01cb6fb910416096b952ff0ca76ceb0ea264c24adef1ed383c90fd
vocab.txt232 KB07eced375cec144d27c900241f3e339478dec958f92fddbc551f295c992038a3
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
b1dcdb2d95 pinned now manifest updated, same commit2026-11-14 21:09 UTC12 files · 268 MB
b1dcdb2d952026-11-14 21:09 UTC12 files · 268 MB

Use it

$ fw get intfloat/e5-small-unsupervised
# manifest sha256 c4a7d8a8ec9b… · 268 MB · 12 files
$ fw verify ./e5-small-unsupervised intfloat/e5-small-unsupervised
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/intfloat/e5-small-unsupervised.json --dir ./e5-small-unsupervised $ python3 fw.py verify ./e5-small-unsupervised ./intfloat__e5-small-unsupervised.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download intfloat/e5-small-unsupervised --revision b1dcdb2d95955c553aa81e4fd759c2cd77d5c0d4 --local-dir ./e5-small-unsupervised
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModel, AutoTokenizer tok = AutoTokenizer.from_pretrained("intfloat/e5-small-unsupervised", revision="b1dcdb2d95955c553aa81e4fd759c2cd77d5c0d4") model = AutoModel.from_pretrained("intfloat/e5-small-unsupervised", revision="b1dcdb2d95955c553aa81e4fd759c2cd77d5c0d4", device_map="auto")
sentence-transformersEmbed text with sentence-transformers.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from sentence_transformers import SentenceTransformer model = SentenceTransformer("intfloat/e5-small-unsupervised", revision="b1dcdb2d95955c553aa81e4fd759c2cd77d5c0d4") vectors = model.encode(["Hello"])

License

Name
MIT License
Id
MIT
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-14
Text in
README.md
Text sha256
5a96b0740d06c61c6d1437b81656f3c65b475277fadbf7dbdcf9d19a7cf50f46
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: intfloat <huggingface.co/intfloat>Newsgroups: alt.freeweights.embedSubject: e5-small-unsupervisedDate: 2026-11-14Commit: b1dcdb2Signed: 2DC28CC7B26A283B ✓
Upstream
intfloat/e5-small-unsupervised
Pinned commit
b1dcdb2d95955c553aa81e4fd759c2cd77d5c0d4
Manifest
e5-small-unsupervised.json · .minisig
Manifest sha256
c4a7d8a8ec9b156237a7c74f885d440738c85bb7bbb91cc624ca7ede3e768eea
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:09 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/intfloat/e5-small-unsupervised.json $ curl -O https://freeweights.allternit.com/manifests/intfloat/e5-small-unsupervised.json.minisig $ minisign -Vm e5-small-unsupervised.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download intfloat/e5-small-unsupervised
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. e5-small-unsupervised.json. Provenance. Takedown history: none.
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-MiniLM-L6-v1
From: unsloth <huggingface.co/unsloth>Subject: all-MiniLM-L6-v2
From: mlx-community <huggingface.co/mlx-community>Subject: all-MiniLM-L6-v2-4bit
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-mpnet-base-v1
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: allenai-specter
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: bert-base-nli-max-tokens