Model reference · open weights
ember is an open-weight embedding model from llmrails. ember-v1 (FP32) weighs 670 MB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the llmrails/ember-v1 model card, 2026-10-01
What it is
| Released by | llmrails |
|---|---|
| Released | 2023-10-10 |
| Parameters | 335M |
| VRAM | 670 MB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
This model has been trained on an extensive corpus of text pairs that encompass a broad spectrum of domains, including finance, science, medicine, law, and various others. During the training process, we incorporated techniques derived from the RetroMAE and SetFit research papers.
Use with transformers:
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]
input_texts = [
"This is an example sentence",
"Each sentence is converted"
]
tokenizer = AutoTokenizer.from_pretrained("llmrails/ember-v1")
model = AutoModel.from_pretrained("llmrails/ember-v1")
# 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'])
# (Optionally) normalize embeddings
embeddings = F.normalize(embeddings, p=2, dim=1)
scores = (embeddings[:1] @ embeddings[1:].T) * 100
print(scores.tolist())
Use with sentence-transformers:
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
sentences = [
"This is an example sentence",
"Each sentence is converted"
]
model = SentenceTransformer('llmrails/ember-v1')
embeddings = model.encode(sentences)
print(cos_sim(embeddings[0], embeddings[1]))
Our model achieve state-of-the-art performance on MTEB leaderboard
| Model Name | Dimension | Sequence Length | Average (56) |
|---|---|---|---|
| ember-v1 | 1024 | 512 | 63.54 |
| bge-large-en-v1.5 | 1024 | 512 | 63.23 |
| bge-base-en-v1.5 | 768 | 512 | 63.05 |
| text-embedding-ada-002 | 1536 | 8191 | 60.99 |
This model exclusively caters to English texts, and any lengthy texts will be truncated to a maximum of 512 tokens.
MIT
@misc{nur2024emberv1,
title={ember-v1: SOTA embedding model},
author={Enrike Nur and Anar Aliyev},
year={2023},
}
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
Benchmarks
As published on the model card: the maker's own numbers, not measured by AxForge.
| Task | Dataset | Metric | Score |
|---|---|---|---|
| Classification | MTEB AmazonCounterfactualClassification (en) | accuracy | 76.060 |
| Classification | MTEB AmazonCounterfactualClassification (en) | ap | 38.760 |
| Classification | MTEB AmazonCounterfactualClassification (en) | f1 | 69.882 |
| Classification | MTEB AmazonPolarityClassification | accuracy | 91.977 |
| Classification | MTEB AmazonPolarityClassification | ap | 88.635 |
| Classification | MTEB AmazonPolarityClassification | f1 | 91.952 |
| Classification | MTEB AmazonReviewsClassification (en) | accuracy | 47.938 |
| Classification | MTEB AmazonReviewsClassification (en) | f1 | 47.583 |
| Retrieval | MTEB ArguAna | map_at_1 | 41.252 |
| Retrieval | MTEB ArguAna | map_at_10 | 56.567 |
| Retrieval | MTEB ArguAna | map_at_100 | 57.076 |
| Retrieval | MTEB ArguAna | map_at_1000 | 57.080 |
| Retrieval | MTEB ArguAna | map_at_3 | 52.394 |
| Retrieval | MTEB ArguAna | map_at_5 | 55.055 |
| Retrieval | MTEB ArguAna | mrr_at_1 | 42.390 |
| Retrieval | MTEB ArguAna | mrr_at_10 | 57.002 |
| Retrieval | MTEB ArguAna | mrr_at_100 | 57.531 |
| Retrieval | MTEB ArguAna | mrr_at_1000 | 57.535 |
| Retrieval | MTEB ArguAna | mrr_at_3 | 52.845 |
| Retrieval | MTEB ArguAna | mrr_at_5 | 55.473 |
| Retrieval | MTEB ArguAna | ndcg_at_1 | 41.252 |
| Retrieval | MTEB ArguAna | ndcg_at_10 | 64.563 |
| Retrieval | MTEB ArguAna | ndcg_at_100 | 66.667 |
| Retrieval | MTEB ArguAna | ndcg_at_1000 | 66.770 |