Mankei

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.

Mankei-Embedder — In-Domain vs. Out-of-Domain

Verwendung

Wichtig: Queries mit query: präfixen, Passagen mit passage: (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
-
Safetensors
Model size
0.3B params
Tensor type
F16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train keyvan-ai/Mankei-326M-Embedder