> Embeddings für eine Domäne feintunen: wann es einen Reranker schlägt, Trainingspaare, Hard Negatives, Losses in sentence-transformers v6, Matryoshka und Kosten.
>
> Web page: https://balazscsorba.com/de/blog/embedding-fine-tuning-domain · Language: Deutsch · Also available in: [English](https://balazscsorba.com/blog/embedding-fine-tuning-domain.md) · [Magyar](https://balazscsorba.com/hu/blog/embedding-fine-tuning-domain.md)
> Author: Balázs Csorba · Published: 2026-09-28 · Updated: 2026-10-17 · Keywords: fine-tuning embedding models, domain adaptation embeddings, hard negative mining retrieval, MultipleNegativesRankingLoss, GISTEmbed vs MNRL, Matryoshka embedding dimensions, Qwen3-Embedding fine-tune, BGE-M3 vs EmbeddingGemma, embedding evaluation recall@k, catastrophic forgetting dense retrieval

[Blog](https://balazscsorba.com/de/blog)/Retrieval & Suche

# Embedding-Modelle für die eigene Domäne feintunen: Hard Negatives, Losses und Evals

Embeddings für eine Domäne feintunen: wann es einen Reranker schlägt, Trainingspaare, Hard Negatives, Losses in sentence-transformers v6, Matryoshka und Kosten.

[Balázs Csorba](https://balazscsorba.com/de/about)·28\. September 2026·aktualisiert 17\. Oktober 2026·8 Min. Lesezeit

-   Embeddings
-   Fine-tuning
-   RAG
-   Evaluation
-   Sentence Transformers

![Lose Punkte links werden nach dem Training zu dichten Gruppen rechts.](https://balazscsorba.com/images/blog/embedding-fine-tuning-domain/cover.webp?v=57878bf388)

## Das Wichtigste in Kürze

-   Feintunen Sie den Retriever, wenn das richtige Dokument gar nicht gefunden wird; ergänzen Sie einen Reranker, wenn es gefunden, aber zu tief eingeordnet wird. Viele Teams brauchen zuerst den Reranker.
-   Trainingspaare können aus Logs, Tickets oder LLM-generierten Anfragen stammen; InPars und Promptagator zeigen, dass synthetische Anfragen funktionieren, wenn sie gefiltert werden, und der Testsplit muss nach Dokument erfolgen, nicht nach Paar.
-   Hard Negatives liefern das stärkste Signal und die schlimmsten Fehler: Minen Sie sie mit einem festen Modell, halten Sie ein Margenband ein und bewerten Sie mit einem Cross-Encoder nach, um falsche Negative zu entfernen.
-   Beginnen Sie in sentence-transformers v6 mit MultipleNegativesRankingLoss oder der gecachten Variante, probieren Sie GISTEmbed, wenn falsche Negative stören, und umhüllen Sie den Loss mit MatryoshkaLoss, wenn Sie kleinere Dimensionen ausliefern.
-   Messen Sie Recall@k und nDCG vorher und nachher auf einem eingefrorenen eigenen Anfrageset, prüfen Sie fremden Verkehr auf Vergessen und rechnen Sie damit, dass ein kleines, schnell iteriertes Modell einen teuren großen Lauf schlägt.

Auf dieser Seite

1.  [Wann Feintuning einen Reranker schlägt](https://balazscsorba.com/#when-fine-tuning-beats-a-reranker)
2.  [Woher die Trainingspaare kommen](https://balazscsorba.com/#where-training-pairs-come-from)
3.  [Hard Negatives](https://balazscsorba.com/#hard-negatives)
4.  [Den Loss in sentence-transformers v6 wählen](https://balazscsorba.com/#losses-in-sentence-transformers-v6)
5.  [Basismodelle, die sich 2026 zum Anpassen lohnen](https://balazscsorba.com/#base-models-worth-adapting-2026)
6.  [Matryoshka: einmal trainieren, kleiner ausliefern](https://balazscsorba.com/#matryoshka-and-dimension-reduction)
7.  [Evaluierung, die die Produktion vorhersagt](https://balazscsorba.com/#evaluation-that-predicts-production)
8.  [Kosten in GPU-Stunden](https://balazscsorba.com/#cost-and-gpu-hours)
9.  [Fallen: Vergessen und Sprachen](https://balazscsorba.com/#pitfalls-forgetting-and-languages)
10.  [Eine Checkliste, bevor Sie den Index tauschen](https://balazscsorba.com/#checklist)
11.  [Quellen](https://balazscsorba.com/#sources)

Diesen Artikel anhören

0:000:00

**Ein Embedding-Modell feintunen** heißt, einen allgemeinen Retriever mit Anfrage-Dokument-Paaren aus der eigenen Domäne zu trainieren, damit die Fragen Ihrer Nutzer nahe bei den Dokumenten landen, die sie beantworten. Das lohnt sich, wenn die Ähnlichkeitsvorstellung des Basismodells nicht zu Ihrer passt: Produktcodes, die sich ähneln, aber Verschiedenes bedeuten, regulatorische Sprache, interner Fachjargon. Es lohnt sich nicht, wenn das richtige Dokument bereits gefunden und nur zu tief eingeordnet wird, denn das behebt ein Reranker günstiger.

Dieser Artikel behandelt die Trainingsschleife statt der Modellauswahl: die Entscheidung zwischen Feintuning und Reranking, die Herkunft der Trainingspaare, Hard Negatives, Losses in sentence-transformers v6, Basismodelle, die sich Stand Oktober 2026 zum Anpassen eignen, Matryoshka-Dimensionen, Evaluierung, die die Produktion vorhersagt, GPU-Kosten und die Fehlerbilder. Die Wahl des Basismodells selbst behandelt [die Auswahl von Embedding-Modellen](https://balazscsorba.com/de/blog/embedding-model-selection-2026).

## Wann Feintuning einen Reranker schlägt

Feintuning schlägt einen Reranker, wenn der Fehler in der Suche liegt und nicht in der Rangfolge. Die Dokumentation von sentence-transformers begründet das schlicht: Feintuning „verbessert die Leistung des Modells für Ihren Anwendungsfall oft deutlich, weil jede Aufgabe eine andere Vorstellung von Ähnlichkeit braucht“ ([Sentence Transformers](https://sbert.net/docs/sentence_transformer/training_overview.html)). Ein Reranker liest Anfrage und Dokument gemeinsam und ist pro Paar genauer, kann aber nur umordnen, was die erste Stufe gefunden hat. Steht die Antwort nicht in den Top 50, rettet sie kein Reranker.

![Feintunen oder reranken: die Entscheidung Drei Zeilen. Erstens: Haben Sie ein Relevanzsignal von Anfrage zu Dokument aus Logs, Tickets oder generierten Anfragen? Wenn nicht, beginnen Sie mit hybrider Suche und einem Reranker. Zweitens: Ist das richtige Dokument in den Top 50, aber zu tief eingeordnet? Dann ergänzen Sie einen Reranker. Drittens: Wird das richtige Dokument gar nicht gefunden? Dann feintunen Sie den Retriever und liefern ihn erst aus, wenn das Evaluierungstor auf einem eingefrorenen Anfrageset bestanden ist.](https://balazscsorba.com/images/blog/embedding-fine-tuning-domain/diagram-4.webp?v=4b5aed254c)

Messen Sie zuerst, wo das richtige Dokument landet; nur ein Fehltreffer in der Suche rechtfertigt das Training des Retrievers.

In der Praxis kombiniert man beides. Die Modellkarte von BGE-M3 empfiehlt selbst hybride Suche mit anschließendem Cross-Encoder-Reranker ([BGE-M3](https://huggingface.co/BAAI/bge-m3)), und ein feingetunter Retriever mit Reranker darüber ist der übliche Endzustand. Für die Kosten zählt die Reihenfolge: zuerst den Reranker ergänzen, messen, was noch fehlt, und nur trainieren, wenn Fehltreffer in der Suche bleiben. Wie sich Reranker vergleichen, steht in [Cross-Encoder-Reranker im Vergleich](https://balazscsorba.com/de/blog/reranking-models-compared).

## Woher die Trainingspaare kommen

Die besten Paare sind echte: eine Suchanfrage und das Dokument, das der Nutzer geöffnet und behalten hat, ein Support-Ticket und der Artikel, der es gelöst hat. Wo es die nicht gibt, erzeugt man sie. InPars nutzt Few-Shot-Prompts an ein LLM, um pro Dokument Anfragen zu erzeugen, und meldet, dass nur damit feingetunte Retriever BM25 übertreffen ([InPars](https://arxiv.org/abs/2202.05144)); Promptagator erzeugt aufgabenspezifische Anfragen aus einer kurzen Aufgabenbeschreibung und höchstens acht Beispielen und meldet Dual-Encoder, die ein auf MS MARCO trainiertes ColBERT v2 über 11 Datensätze im Schnitt um mehr als 1,2 nDCG schlagen ([Promptagator](https://arxiv.org/abs/2209.11755)).

![Trainingsdaten zusammenstellen Fünf Schritte von links nach rechts: Korpus-Chunks; ein LLM erzeugt Anfragen pro Chunk; Filter entfernen unbeantwortbare, doppelte und anderssprachige Anfragen; Hard Negatives werden mit einem festen Modell innerhalb eines Margenbands gemint und von einem Cross-Encoder nachbewertet; und die Paare werden nach Dokument in Training, Validierung und Test geteilt.](https://balazscsorba.com/images/blog/embedding-fine-tuning-domain/diagram-8.webp?v=191cc97ffa)

Jeder Filter entfernt Rauschen, das das Modell sonst lernen würde; die Teilung nach Dokument hält den Test ehrlich.

Synthetische Daten funktionieren erst nach dem Filtern. Entfernen Sie Anfragen, die der Chunk nicht beantworten kann, Beinahe-Dubletten, Anfragen in der falschen Sprache und Fragen, die ganze Phrasen aus dem Chunk kopieren, denn die bringen dem Modell bei, Oberflächenwörter statt Bedeutung abzugleichen. Keine veröffentlichte Zahl sagt, wie viele Paare man braucht; in der Praxis sind einige tausend saubere Paare pro Domäne ein üblicher Startpunkt, und Qualität schlägt Menge.

Teilen Sie Training, Validierung und Test nach Dokument oder Anfrage-Cluster, nie nach Paar. Landen zwei generierte Anfragen zum selben Chunk auf beiden Seiten der Teilung, misst der Test Auswendiglernen. Frieren Sie das Testset vor dem ersten Experiment ein und schauen Sie beim Tuning nicht hinein; dafür ist das Validierungsset da.

## Hard Negatives

Kontrastive Losses wie MultipleNegativesRankingLoss behandeln jedes andere Positiv im Batch als Negativ. Diese In-Batch-Negative sind meist leicht, das Modell lernt grobe Unterschiede also schnell und feine langsam. Hard Negatives, Dokumente, die relevant aussehen, es aber nicht sind, tragen das stärkste Signal. RocketQA baute das Rezept, das die meisten Feintunings noch heute übernehmen, mit Cross-Batch-Negativen und entrauschten Hard Negatives, weil ungelabelte Positive sonst das Training vergiften ([RocketQA](https://arxiv.org/abs/2010.08191)).

sentence-transformers bringt das Werkzeug inzwischen mit. `mine_hard_negatives()` bettet Ihre Paare ein, findet zu jeder Anfrage die nächsten Dokumente, kann Kandidaten mit einem Cross-Encoder nachbewerten und zieht Negative innerhalb eines Bands, das `range_min`, `range_max` und eine absolute oder relative Marge festlegen ([Hard Negatives](https://sbert.net/docs/package_reference/util/hard_negatives.html)). Überspringen Sie die obersten Treffer, denn das sind die wahrscheinlichsten falschen Negative, und halten Sie eine Marge unter dem Wert des Positivs. Minen Sie mit einer festen Kopie des Basismodells, nicht mit dem Modell, das Sie trainieren, sonst verschieben sich die Negative unter Ihnen.

Eine nützliche Plausibilitätsprüfung nach dem Minen ist, zwanzig zufällige Tripel von Hand zu lesen. Beantworten mehrere Negative die Anfrage tatsächlich, erhöhen Sie `range_min` oder verschärfen die Marge; sind die Negative offensichtlich unzusammenhängend, sind sie zu leicht und das Band zu breit. Zehn Minuten Lesen sparen hier einen Trainingslauf, der dem Modell die falsche Grenze beibringt.

## Den Loss in sentence-transformers v6 wählen

Für Anfrage-Dokument-Paare sind die dokumentierten Optionen MultipleNegativesRankingLoss, seine gecachte Variante, MegaBatchMarginLoss und die beiden GISTEmbed-Losses; MatryoshkaLoss, Matryoshka2dLoss und AdaptiveLayerLoss umhüllen jeden davon ([Loss-Übersicht](https://sbert.net/docs/sentence_transformer/loss_overview.html)). Das eigene Beispiel der Trainingsübersicht nutzt eine Epoche, Batchgröße 16, Lernrate 2e-5 und einen Batch-Sampler ohne Duplikate, weil In-Batch-Negative-Losses leiden, wenn ein Batch denselben Text zweimal enthält ([Sentence Transformers](https://sbert.net/docs/sentence_transformer/training_overview.html)).

Loss

Eingaben

Braucht

Wann nutzen

Falle

MultipleNegativesRankingLoss

Paare oder Tripel

große Batches helfen

Standard-Startpunkt

Duplikate im Batch werden falsche Negative

CachedMultipleNegativesRankingLoss

Paare oder Tripel

Gradient Caching

großer effektiver Batch auf kleiner GPU

etwas langsamer; nicht mit Matryoshka2d

GISTEmbedLoss

Paare oder Tripel

ein Guide-Modell

viele falsche Negative

Trainingsaufwand

CachedGISTEmbedLoss

Paare oder Tripel

Guide-Modell, Caching

GIST mit großen Batches

mini\_batch\_size an Speicher anpassen

MatryoshkaLoss

umhüllt einen Loss

Liste von Dimensionen

gekürzte Vektoren ausliefern

jede ausgelieferte Dimension prüfen

CachedMultipleNegativesRankingLoss nutzt Gradient Caching, um deutlich größere Batches ohne zusätzlichen Speicher zu erreichen, bei geringem Geschwindigkeitsverlust ([Losses](https://sbert.net/docs/package_reference/sentence_transformer/losses.html)), auf Basis der GradCache-Technik ([GradCache](https://arxiv.org/abs/2101.06983)). GISTEmbedLoss nimmt ein Guide-Modell und verwirft damit In-Batch-Negative, die der Guide als zu ähnlich zum Positiv einstuft, was falsche Negative direkt angeht ([GISTEmbed](https://arxiv.org/abs/2402.16829)). Eine Einschränkung sollte man kennen: Matryoshka2dLoss kann die gecachten, hook-basierten Losses nicht umhüllen.

```
# Sketch for sentence-transformers v6: mine negatives with a fixed model, train with a cached loss
from sentence_transformers import SentenceTransformer, SentenceTransformerTrainer, SentenceTransformerTrainingArguments
from sentence_transformers.cross_encoder import CrossEncoder
from sentence_transformers.sentence_transformer.losses import CachedMultipleNegativesRankingLoss, MatryoshkaLoss
from sentence_transformers.util import mine_hard_negatives

base = SentenceTransformer("BAAI/bge-m3")
miner = SentenceTransformer("BAAI/bge-m3")             # fixed copy, never the model being trained
train = mine_hard_negatives(
    pairs_train, miner, cross_encoder=CrossEncoder("BAAI/bge-reranker-v2-m3"),
    range_min=10, range_max=50, relative_margin=0.05, num_negatives=3, output_format="triplet",
)

loss = MatryoshkaLoss(base, CachedMultipleNegativesRankingLoss(base, mini_batch_size=32),
                      matryoshka_dims=[1024, 512, 256])
args = SentenceTransformerTrainingArguments(
    output_dir="out/bge-m3-domain", num_train_epochs=1, per_device_train_batch_size=128,
    learning_rate=2e-5, warmup_ratio=0.1, bf16=True, batch_sampler="no_duplicates",
)
SentenceTransformerTrainer(model=base, args=args, train_dataset=train, loss=loss).train()
```

## Basismodelle, die sich 2026 zum Anpassen lohnen

Stand Oktober 2026 decken drei offene Familien die meisten Bedürfnisse ab. BGE-M3 steht unter MIT-Lizenz, beherrscht dichte, spärliche und Multi-Vektor-Suche aus einem Modell, verarbeitet Eingaben mit 8.192 Tokens und deckt mehr als 100 Sprachen ab ([BGE-M3](https://huggingface.co/BAAI/bge-m3)). Qwen3-Embedding gibt es in 0.6B, 4B und 8B unter Apache-2.0, mit 32K Kontext, instruktionsabhängigen Eingaben und Matryoshka-Dimensionen; sein eigenes Training nutzte LoRA und eine dreistufige Pipeline, in der das LLM auch Trainingsdaten erzeugte ([Qwen](https://qwenlm.github.io/blog/qwen3-embedding/)). EmbeddingGemma 2 ist ein multimodales 740M-Modell mit Matryoshka-Kürzung von 768 bis 128 Dimensionen und Apache-2.0-Gewichten ([Google](https://ai.google.dev/gemma/docs/embeddinggemma)).

Kleiner gewinnt meist die erste Runde. Ein 0.6B-Modell trainiert in Stunden auf einer GPU, Sie können also zehn Experimente zu Daten und Negativen in der Zeit eines 8B-Laufs fahren, und der Großteil des Gewinns kommt aus der Datenqualität, nicht aus den Parametern. Das MMTEB-Paper meldete multilingual-e5-large-instruct mit 560M Parametern als bestes öffentlich verfügbares Modell auf seinem mehrsprachigen Benchmark ([MMTEB](https://arxiv.org/abs/2502.13595)); das ist eine Aussage über den Stand des Papers, zeigt aber, wie weit ein mittelgroßes Modell kommt.

## Matryoshka: einmal trainieren, kleiner ausliefern

MatryoshkaLoss wendet den Basis-Loss auf gekürzte Ausschnitte des Embeddings an, sodass die ersten 512, 256 oder 128 Dimensionen für sich nützlich bleiben. Im eigenen Experiment der Bibliothek behielt ein mit Matryoshka trainiertes Modell 98,37 Prozent seiner vollen Leistung bei 8,3 Prozent der Embedding-Größe, gegenüber 96,46 Prozent bei einem Standardmodell ([Matryoshka](https://sbert.net/examples/sentence_transformer/training/matryoshka/README.html)). Das zählt beim Ausliefern, wo kleinere Vektoren weniger Speicher und schnellere Suche bedeuten; Quantisierung und Kürzung lassen sich kombinieren, wie in [Embedding-Quantisierung mit Binär- und Matryoshka-Verfahren](https://balazscsorba.com/de/blog/embedding-quantization-binary-matryoshka) beschrieben.

Der Vorbehalt ist die Evaluierung: Matryoshka zahlt sich nur aus, wenn der ausgelieferte Ausschnitt der gemessene ist. Messen Sie Recall bei jeder Dimension, die Sie ausliefern wollen, nicht nur bei voller Größe.

## Evaluierung, die die Produktion vorhersagt

Messen Sie Recall@k, nDCG@10 und MRR auf Ihrem eingefrorenen Testset vor und nach dem Training, bei dem k, das Sie tatsächlich abrufen. Öffentliche Benchmarks sind hier per Design ein schwacher Ersatz: MMTEB umfasst mehr als 500 Aufgaben in mehr als 250 Sprachen, und sein englischer Benchmark ist als Zero-Shot gedacht und schließt Datensätze wie MS MARCO aus, die üblicherweise zum Feintuning dienen ([MMTEB](https://arxiv.org/abs/2502.13595)). Ein Feintuning kann Ihren Domänenwert heben und gleichzeitig einen Ranglistenwert senken, und nur der erste zählt.

Führen Sie danach die vollständige RAG-Evaluierung erneut aus, nicht nur die Suche, denn besserer Recall kann trotzdem schlechtere Antworten liefern, wenn die neuen Top-Chunks länger oder verrauschter sind. Behandeln Sie den Vergleich als Entscheidung mit Konfidenz: In meinem Skill `jev-decide` geht eine Entscheidung mit niedriger Konfidenz an einen Menschen, statt angewendet zu werden, und ein Feintuning, das um weniger als das Rauschen des Validierungssets gewinnt, gehört in diese Kategorie. Wie man Evaluierungsdaten für ganze Antworten erzeugt, steht in [synthetischen Testdaten für RAG-Evals](https://balazscsorba.com/de/blog/synthetic-test-data-rag-evals).

## Kosten in GPU-Stunden

Die Rechnung ist kurz. Stand Oktober 2026 kostet eine A100 80GB on demand etwa $1,79 pro Stunde bei RunPod ([RunPod](https://www.runpod.io/pricing)) und $2,79 bei Lambda ([Lambda](https://lambda.ai/pricing)). Ein sechsstündiger Lauf auf einer Karte kostet also etwa $11 bis $17 und ein 24-stündiger LoRA-Lauf auf einem 7B- bis 8B-Modell etwa $43 bis $67; das sind Schätzungen aus den Stundenpreisen, keine Benchmarks. Kleine Modelle passen für ein volles Feintuning auf eine Karte; 7B- bis 8B-Modelle brauchen meist LoRA und Gradient Caching.

Teuer ist nicht die GPU, sondern die Iterationsschleife. Drei Tage schneller Läufe auf einem 0.5B-Modell, bei denen jeweils eine Sache an Daten oder Negativen geändert wird, schlagen meist einen heroischen Lauf auf einem 8B-Modell, den Sie sich nicht wiederholt leisten können.

## Fallen: Vergessen und Sprachen

Katastrophales Vergessen ist in der dichten Suche dokumentiert, nicht hypothetisch. ANCE-Tele führte Instabilität in iterativen Schleifen aus Minen und Trainieren darauf zurück, dass Modelle verschiedene Gruppen von Negativen lernen und wieder vergessen ([ANCE-Tele](https://arxiv.org/abs/2210.17167)), und eine Studie von 2025 fand, dass auf zeitbezogene Anfragen abgestimmte Systeme bei gewöhnlichen Anfragen an Genauigkeit verlieren ([temporales IR](https://arxiv.org/abs/2507.06782)). Halten Sie die Lernrate niedrig, trainieren Sie zuerst eine Epoche, mischen Sie einige allgemeine Paare wieder hinein und testen Sie eine Stichprobe fremder Anfragen neben Ihrem Domänenset.

**Bauen Sie pro Sprache ein eigenes Evaluierungsset**

Sprachabdeckungsangaben sind breiter als die Benchmark-Abdeckung. MTEBs Retrieval-Reihe enthält deutsche Sets wie GermanDPR, Ungarisch ist dagegen nur mit wenigen beigesteuerten Aufgaben vertreten ([MTEB](https://embeddings-benchmark.github.io/mteb/overview/available_tasks/retrieval/)). Fragen Ihre Nutzer auf Deutsch und Ungarisch, wie auf meiner eigenen Seite, die ich mit einer LLM-Pipeline übersetzt habe, erzeugen und bewerten Sie Testanfragen in jeder Sprache selbst.

## Eine Checkliste, bevor Sie den Index tauschen

1.  Eine Baseline einfrieren und Recall@k, nDCG@10 und MRR auf einem eingefrorenen Testset festhalten.
2.  Bestätigen, dass es ein Fehltreffer der Suche ist und kein Rangproblem, das ein Reranker löst.
3.  Gefilterte Paare pro Sprache bauen und nach Dokument teilen.
4.  Negative mit festem Modell und Cross-Encoder-Filter minen.
5.  Mit MNRL oder der gecachten Variante, 2e-5 und einer Epoche beginnen.
6.  Jede geplante Matryoshka-Dimension evaluieren.
7.  Fremde Anfragen auf Vergessen prüfen, dann die volle RAG-Evaluierung wiederholen.
8.  Korpus neu einbetten und den Index erst tauschen, wenn alles oben bestanden ist.

Wenn Ihre Suche fachspezifische Fragen verfehlt und Sie wissen wollen, ob Feintuning oder ein Reranker die günstigere Lösung ist, sehen Sie sich meine [KI-Engineering-Arbeit](https://balazscsorba.com/de/expertise/ai-engineer) an.

## Quellen

1.  [Sentence Transformers: training overview](https://sbert.net/docs/sentence_transformer/training_overview.html)
2.  [Sentence Transformers: loss overview](https://sbert.net/docs/sentence_transformer/loss_overview.html)
3.  [Sentence Transformers: hard negative mining](https://sbert.net/docs/package_reference/util/hard_negatives.html)
4.  [RocketQA (arXiv 2010.08191)](https://arxiv.org/abs/2010.08191)
5.  [InPars (arXiv 2202.05144)](https://arxiv.org/abs/2202.05144)
6.  [Promptagator (arXiv 2209.11755)](https://arxiv.org/abs/2209.11755)
7.  [Qwen blog: Qwen3-Embedding (Jun 2025)](https://qwenlm.github.io/blog/qwen3-embedding/)
8.  [BAAI/bge-m3 model card](https://huggingface.co/BAAI/bge-m3)
9.  [Google: EmbeddingGemma docs (Oct 2026)](https://ai.google.dev/gemma/docs/embeddinggemma)
10.  [Sentence Transformers: Matryoshka embeddings](https://sbert.net/examples/sentence_transformer/training/matryoshka/README.html)
11.  [MMTEB (arXiv 2502.13595)](https://arxiv.org/abs/2502.13595)
12.  [ANCE-Tele (arXiv 2210.17167)](https://arxiv.org/abs/2210.17167)

## Häufige Fragen

Wann sollte man ein Embedding-Modell feintunen statt einen Reranker zu ergänzen?

Feintunen Sie, wenn das relevante Dokument gar nicht unter den gefundenen Kandidaten ist, was meist bedeutet, dass die Ähnlichkeitsvorstellung des Basismodells nicht zu Ihrer Domäne passt. Wird das richtige Dokument gefunden, aber zu tief eingeordnet, ist ein Cross-Encoder-Reranker günstiger und oft ausreichend. Messen Sie vor jedem Training, welcher Fall vorliegt.

Woher bekommt man Trainingsdaten für das Feintuning von Embeddings?

Nutzen Sie echte Anfrage-Dokument-Paare aus Suchprotokollen oder Support-Tickets, wo vorhanden, und erzeugen Sie sonst pro Chunk Anfragen mit einem LLM, wobei Sie unbeantwortbare und doppelte herausfiltern. Teilen Sie Training, Validierung und Test nach Dokument oder Anfrage-Cluster, damit das Testset nicht leckt.

Was sind Hard Negatives und warum sind sie wichtig?

Hard Negatives sind Dokumente, die der Anfrage ähneln, sie aber nicht beantworten. Sie lehren das Modell feine Unterschiede, was In-Batch-Negative allein nicht schaffen. Das Risiko sind falsche Negative, also Dokumente, die die Anfrage doch beantworten, aber nicht gelabelt sind; minen Sie daher mit einer Marge und bewerten Sie mit einem Cross-Encoder nach.

Welchen Loss sollte man in sentence-transformers nutzen?

Für Anfrage-Dokument-Paare beginnen Sie mit MultipleNegativesRankingLoss und einem Batch-Sampler ohne Duplikate. Nutzen Sie die gecachte Variante für größere effektive Batches bei begrenztem Speicher, GISTEmbedLoss bei häufigen falschen Negativen und MatryoshkaLoss als Hülle, wenn Sie gekürzte Embeddings ausliefern wollen.

Was kostet das Feintuning eines Embedding-Modells?

Stand Oktober 2026 kostet eine A100 80GB bei gängigen GPU-Clouds etwa $1,79 bis $2,79 pro Stunde. Nach dieser Rechnung kostet ein sechsstündiger Lauf etwa $11 bis $17 und ein 24-stündiger LoRA-Lauf auf einem 7B- bis 8B-Modell etwa $43 bis $67; kleine Modelle trainieren meist kürzer.

Geschrieben von Balázs Csorba

Senior Fullstack & AI Engineer in der Steiermark – über 10 Jahre Vue, Nuxt, Node.js und PHP, heute baue ich Werkzeuge für KI-Agenten.

[KI-Entwicklung & MCP-Server →](https://balazscsorba.com/de/expertise/ai-engineer)[Über mich →](https://balazscsorba.com/de/about)

## Weitere Artikel

-   [Embedding-Modell wählen 2026: Leaderboards, Kosten und ein Vergleichstest mit eigenen Daten](https://balazscsorba.com/de/blog/embedding-model-selection-2026)
-   [Contextual Retrieval und Late Chunking: RAG-Chunks ihren Kontext zurückgeben](https://balazscsorba.com/de/blog/contextual-retrieval-late-chunking)
-   [Zugriffskontrolle für RAG: berechtigungsbewusstes Retrieval ohne Datenlecks](https://balazscsorba.com/de/blog/rag-access-control-permissions)
-   [RAG über Produktkataloge: aus PIM-Daten Antworten machen, die halten](https://balazscsorba.com/de/blog/rag-product-catalog-pim-data)

## Klingt nach dem, was du suchst?

Erzähl mir von deinem Projekt oder deiner Stelle – ich freue mich, von dir zu hören.

[Kontakt aufnehmen](mailto:contact@balazscsorba.com) [Auf LinkedIn vernetzen](https://www.linkedin.com/in/balazs-csorba)
