Instructions to use keyvan-ai/Mankei-326M-Embedder with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use keyvan-ai/Mankei-326M-Embedder with Transformers:
# Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("keyvan-ai/Mankei-326M-Embedder") model = AutoModel.from_pretrained("keyvan-ai/Mankei-326M-Embedder", device_map="auto") - Notebooks
- Google Colab
- Kaggle

Mankei-326M-Embedder
Deutscher Text-Embedder mit 326M Parametern für souveränes RAG on-premise. Kompakt, hoher Durchsatz, CPU-fähig — und out-of-domain bemerkenswert robust: auf echtem Fachtext führt er vor deutlich größeren Modellen.
Benchmark — voller Korpus-Index, zero-shot
Gemessen über den vollen Passagen-Index (nicht im kleinen Kandidaten-Pool), alle Modelle zero-shot, architekturkorrektes Pooling (Mankei last-token, e5 mean, bge-m3 CLS). Metriken: nDCG@10 und Recall@50.
Out-of-Domain — Recht (GerDaLIR, 9.969 Gerichtsbeschlüsse):
| 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 |
Auf echten Rechtstexten führt der 326M-Embedder vor allen — auch vor den 1,7×-größeren bge-m3 und e5-large.
In-Domain — Wikipedia-QA (GermanDPR):
| 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 |
Auf ihrem Wikipedia-QA-Heimterrain führen die größeren bidirektionalen Generalisten. Der Recall@50 von 97,0 trägt für eine RAG-Pipeline (Top-k holen, dann reranken) dennoch mit.
Verwendung
Wichtig: Queries mit
query:präfixen, Passagen mitpassage:(e5-Stil).
from transformers import AutoModel, AutoTokenizer
import torch, torch.nn.functional as F
tok = AutoTokenizer.from_pretrained("keyvan-ai/Mankei-326M-Embedder")
model = AutoModel.from_pretrained("keyvan-ai/Mankei-326M-Embedder", dtype=torch.bfloat16).eval()
def embed(texts):
enc = tok(texts, padding=True, truncation=True, max_length=256, return_tensors="pt")
with torch.no_grad(): h = model(**enc).last_hidden_state
idx = enc.attention_mask.sum(1) - 1 # Last-Token-Pooling
return F.normalize(h[torch.arange(h.size(0)), idx].float(), dim=-1)
q = embed(["query: Wie kündige ich meine Wohnung?"])
docs = embed(["passage: Die Kündigung des Mietvertrags muss schriftlich erfolgen ...",
"passage: Der Kaufvertrag kommt durch Angebot und Annahme zustande ..."])
scores = (docs @ q.T).squeeze() # Cosine-Similarity
Eigenschaften
- Out-of-domain robust — führt auf echtem Fachtext (Recht) vor deutlich größeren Modellen.
- 326M, hoher Durchsatz, CPU- bis GPU-tauglich, für Millionen Chunks on-premise.
- Für die Feinsortierung der Top-k: Mankei-326M-Reranker.
Training
Contrastive LoRA auf dem deutschen Mankei-Basismodell: supervidiert auf GermanDPR (CC-BY), InfoNCE mit vielen In-Batch- und selbst-gemineten harten Negativen aus dem vollen Korpus, e5-Stil-Prefixes, Last-Token-Pooling. Trainiert auf offen lizenzierten, quellseitig dokumentierten Daten.
- Downloads last month
- -
