1import torch
2from transformers import AutoTokenizer, AutoModel
3
4tokenizer = AutoTokenizer.from_pretrained("wolfnuker/leaf-embed-beir")
5model = AutoModel.from_pretrained("wolfnuker/leaf-embed-beir")
6
7def mean_pooling(model_output, attention_mask):
8 token_embeddings = model_output.last_hidden_state
9 input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
10 return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
11
12# Example usage
13sentences = ["This is an example sentence", "Each sentence is converted to a vector"]
14encoded = tokenizer(sentences, padding=True, truncation=True, return_tensors="pt")
15
16with torch.no_grad():
17 outputs = model(**encoded)
18 embeddings = mean_pooling(outputs, encoded["attention_mask"])
19 embeddings = torch.nn.functional.normalize(embeddings, p=2, dim=1)
20
21print(embeddings.shape) # [2, 768]
1from sentence_transformers import SentenceTransformer
2
3model = SentenceTransformer("wolfnuker/leaf-embed-beir")
4embeddings = model.encode(["This is an example sentence", "Each sentence is converted"])
1@misc{leaf-embed-beir,
2 author = {RankSaga},
3 title = {LEAF Embed BEIR: Text Embeddings via Distillation},
4 year = {2026},
5 publisher = {HuggingFace},
6 url = {https://huggingface.co/wolfnuker/leaf-embed-beir}
7}