Model reference · open weights
ember is an open-weight embedding model from llmrails. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.
Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.
What it is
| Released by | llmrails |
|---|---|
| Type | Embedding models |
| Task | Embeddings |
| Parameters (lead) | 335M |
| Context | 512 tokens |
| Runs with | sentence-transformers |
| Released | 2023-10-10 |
| Popularity | 3k downloads / month |
| Licence | Open weights |
About
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},
}
From the published model card. Full card on the HuggingFace links in the sidebar.
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 |
Using it via the API
Once AxForge deploys ember for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (ember below is illustrative; you get the exact model name on deployment.)
$ curl -sS https://api.axforge.ai/v1/embeddings \
-H "Authorization: Bearer $AXFORGE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"ember","input":"text to embed"}'
Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.