Views
No views yet

| Modell | Größe | nDCG@10 | Recall@50 |
|---|---|---|---|
| Mankei-326M-Embedder | 0,33 B | 20,3 | 46,1 |
| bge-m3 | 0,57 B | 17,8 | 36,1 |
| multilingual-e5-large | 0,56 B | 15,6 | 37,3 |
| multilingual-e5-base | 0,28 B | 16,0 | 34,0 |
| multilingual-e5-small | 0,12 B | 15,3 | 35,2 |
| Modell | Größe | nDCG@10 | Recall@50 |
|---|---|---|---|
| multilingual-e5-large | 0,56 B | 81,1 | 99,8 |
| bge-m3 | 0,57 B | 79,9 | 99,9 |
| multilingual-e5-base | 0,28 B | 78,0 | 99,9 |
| multilingual-e5-small | 0,12 B | 75,7 | 99,4 |
| Mankei-326M-Embedder | 0,33 B | 68,7 | 97,0 |

Wichtig: Queries mitquery:präfixen, Passagen mitpassage:(e5-Stil).
1from transformers import AutoModel, AutoTokenizer
2import torch, torch.nn.functional as F
3
4tok = AutoTokenizer.from_pretrained("keyvan-ai/Mankei-326M-Embedder")
5model = AutoModel.from_pretrained("keyvan-ai/Mankei-326M-Embedder", dtype=torch.bfloat16).eval()
6
7def embed(texts):
8 enc = tok(texts, padding=True, truncation=True, max_length=256, return_tensors="pt")
9 with torch.no_grad(): h = model(**enc).last_hidden_state
10 idx = enc.attention_mask.sum(1) - 1 # Last-Token-Pooling
11 return F.normalize(h[torch.arange(h.size(0)), idx].float(), dim=-1)
12
13q = embed(["query: Wie kündige ich meine Wohnung?"])
14docs = embed(["passage: Die Kündigung des Mietvertrags muss schriftlich erfolgen ...",
15 "passage: Der Kaufvertrag kommt durch Angebot und Annahme zustande ..."])
16scores = (docs @ q.T).squeeze() # Cosine-Similarity