# Anleitung zur Feinabstimmung von Embedding-Modellen mit Unsloth

Das Fine-Tuning von Embedding-Modellen kann die Retrieval- und RAG-Performance bei bestimmten Aufgaben deutlich verbessern. Es stimmt die Vektoren des Modells auf Ihre Domäne und die Art von „Ähnlichkeit“ ab, die für Ihren Anwendungsfall wichtig ist, was die Suche, RAG, Clusterbildung und Empfehlungen auf Ihren Daten verbessert.

Beispiel: Die Schlagzeilen „Google startet Pixel 10“ und „Qwen veröffentlicht Qwen3“ könnten als ähnlich eingebettet werden, wenn Sie beide nur als „Tech“ kennzeichnen, aber nicht als ähnlich, wenn Sie semantische Suche betreiben, weil es um unterschiedliche Dinge geht. Fine-Tuning hilft dem Modell, die „richtige“ Art von Ähnlichkeit für Ihren Anwendungsfall zu erzeugen, Fehler zu reduzieren und die Ergebnisse zu verbessern.

[**Unsloth**](https://github.com/unslothai/unsloth) unterstützt jetzt das Training von Embedding-, **Klassifikations-**, **BERT-**, **Reranker-** Modellen [**\~1,8–3,3x schneller**](#unsloth-benchmarks) mit 20 % weniger Speicher und 2x längerem Kontext als andere Flash-Attention-2-Implementierungen – ohne Genauigkeitsverlust. EmbeddingGemma-300M läuft mit nur **3 GB VRAM**. Sie können Ihr trainiertes **Modell überall**verwenden: transformers, LangChain, Ollama, vLLM, llama.cpp usw.

Unsloth verwendet [SentenceTransformers](https://github.com/huggingface/sentence-transformers) zur Unterstützung kompatibler Modelle wie Qwen3-Embedding, BERT und mehr. **Selbst wenn es kein Notebook oder keinen Upload gibt, wird es dennoch unterstützt.**

**Wir haben kostenlose Fine-Tuning-Notebooks erstellt, mit 3 Hauptanwendungsfällen:**

| [EmbeddingGemma (300M)](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/EmbeddingGemma_\(300M\).ipynb)   | [Qwen3-Embedding 4B](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_Embedding_\(4B\).ipynb) • [0,6B](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_Embedding_\(0_6B\).ipynb) | [BGE M3](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/BGE_M3.ipynb)                        |
| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| [ModernBERT](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/bert_classification.ipynb) - Klassifikation | [All-MiniLM-L6-v2](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/All_MiniLM_L6_v2.ipynb)                                                                                                                            | [ModernBERT-large](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/bert_classification.ipynb) |

* `All-MiniLM-L6-v2`: erzeugen Sie kompakte, domänenspezifische Satz-Embeddings für semantische Suche, Retrieval und Clustering, abgestimmt auf Ihre eigenen Daten.
* `tomaarsen/miriad-4.4M-split`: betten Sie medizinische Fragen und biomedizinische Fachartikel ein, um hochwertige medizinische semantische Suche und RAG zu ermöglichen.
* `electroglyph/technical`: Bedeutung und semantische Ähnlichkeit in technischem Text besser erfassen (Dokumente, Spezifikationen und Engineering-Diskussionen).

Sie können die restlichen unserer hochgeladenen Modelle in [unserer Sammlung hier](https://huggingface.co/collections/unsloth/embedding-models).

> Ein großes Dankeschön an den Unsloth-Mitwirkenden [**electroglyph**](https://github.com/unslothai/unsloth/pull/3719), dessen Arbeit wesentlich dazu beigetragen hat, dies zu unterstützen. Sie können electroglyphs benutzerdefinierte Modelle auf Hugging Face [hier](https://huggingface.co/electroglyph).

### 🦥 Unsloth-Funktionen

* LoRA/QLoRA oder vollständiges Fine-Tuning für Embeddings, ohne dass Sie Ihre Pipeline neu schreiben müssen
* Beste Unterstützung für ausschließlich Encoder- `SentenceTransformer-` Modelle (mit einer `modules.json`)
* Cross-Encoder-Modelle werden auch im Fallback-Pfad als korrekt trainierend bestätigt
* Diese Version unterstützt außerdem `transformers v5`

Es gibt eingeschränkte Unterstützung für Modelle ohne `modules.json` (wir weisen automatisch standardmäßige `SentenceTransformers` Pooling-Module zu). Wenn Sie etwas Benutzerdefiniertes machen (benutzerdefinierte Köpfe, nicht standardmäßiges Pooling), überprüfen Sie die Ausgaben wie das Verhalten des gepoolten Embeddings noch einmal.

Einige Modelle benötigten benutzerdefinierte Ergänzungen, wie MPNet oder DistilBERT, wurden durch das Einfügen von Gradient Checkpointing in die `transformers` Modelle aktiviert.

### 🛠️ Fine-Tuning-Workflow

Der neue Fine-Tuning-Ablauf konzentriert sich auf `FastSentenceTransformer`.

Wichtigste Speicher-/Push-Methoden:

* `save_pretrained()` Speichert **LoRA-Adapter** in einem lokalen Ordner
* `save_pretrained_merged()` Speichert das **zusammengeführte Modell** in einem lokalen Ordner
* `push_to_hub()` Lädt **LoRA-Adapter** zu Hugging Face hoch
* `push_to_hub_merged()` Lädt das **zusammengeführte Modell** zu Hugging Face hoch

**Und ein sehr wichtiges Detail: Das Laden für die Inferenz erfordert `for_inference=True`**

`from_pretrained()` ist ähnlich wie Lackers andere schnelle Klassen, mit **einer Ausnahme**:

* Um ein Modell für **die Inferenz** mit `FastSentenceTransformer`zu laden, **müssen Sie** übergeben: `for_inference=True`

Ihre Inferenz-Ladevorgänge sollten also so aussehen:

```python
model = FastSentenceTransformer.from_pretrained(
    "sentence-transformers/all-MiniLM-L6-v2",
    for_inference=True,
)
```

Für die Hugging-Face-Autorisierung gilt: Wenn Sie

```
hf auth login
```

innerhalb derselben virtuellen Umgebung vor dem Aufruf der Hub-Methoden ausführen, dann:

* `push_to_hub()` und `push_to_hub_merged()` **ist kein Token-Argument erforderlich**.

### ✅ Inferenz und überall einsetzbar! <a href="#docs-internal-guid-c10bfa80-7fff-446e-714d-732eebcd72d6" id="docs-internal-guid-c10bfa80-7fff-446e-714d-732eebcd72d6"></a>

Ihr feinabgestimmtes Unsloth-Modell kann mit allen wichtigen Tools verwendet und bereitgestellt werden: transformers, LangChain, Weaviate, sentence-transformers, Text Embeddings Inference (TEI), vLLM und llama.cpp, benutzerdefinierte Embedding-API, pgvector, FAISS/Vektordatenbanken und jedes RAG-Framework.

Es gibt kein Lock-in, da das feinabgestimmte Modell später lokal auf Ihr eigenes Gerät heruntergeladen werden kann.

```python
# 1. Ein vortrainiertes Sentence-Transformer-Modell laden
model = SentenceTransformer("<Ihr-unsloth-feinabgestimmtes-Modell")

query = "Welcher Planet ist als der Rote Planet bekannt?"
documents = [
    "Venus wird wegen ihrer ähnlichen Größe und Nähe oft als der Zwilling der Erde bezeichnet.",
    "Der Mars, bekannt für sein rötliches Aussehen, wird oft als der Rote Planet bezeichnet.",
    "Jupiter, der größte Planet in unserem Sonnensystem, hat einen markanten roten Fleck.",
    "Saturn, berühmt für seine Ringe, wird manchmal mit dem Roten Planeten verwechselt."
]

# 2. Über encode_query und encode_document enkodieren, um bei Bedarf automatisch die richtigen Prompts zu verwenden
query_embedding = model.encode_query(query)
document_embedding = model.encode_document(documents)
print(query_embedding.shape, document_embedding.shape)

# 3. Ähnlichkeit berechnen, z. B. über die integrierte Hilfsfunktion für Ähnlichkeit
similarity = model.similarity(query_embedding, document_embedding)
print(similarity)
```

### 📊 Unsloth-Benchmarks

Zu den Vorteilen von Unsloth gehört die Geschwindigkeit beim Fine-Tuning von Embeddings! Wir zeigen, dass wir durchgehend **1,8 bis 3,3x schneller** bei einer Vielzahl von Embedding-Modellen und bei unterschiedlichen Sequenzlängen von 128 bis 2048 und darüber hinaus sind.

EmbeddingGemma-300M QLoRA läuft mit nur **3 GB VRAM** und LoRA läuft mit 6 GB VRAM.

Unten sehen Sie unsere Unsloth-Benchmarks in einer Heatmap vs. `SentenceTransformers` + Flash Attention 2 (FA2) für 4-Bit QLoRA. **Für 4-Bit QLoRA ist Unsloth 1,8x bis 2,6x schneller:**

<figure><img src="https://797013937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FQqagyYR6DebgX768A0HV%2Foutput(16).png?alt=media&#x26;token=e3ea6510-b129-401a-83ae-301d01865547" alt=""><figcaption></figcaption></figure>

Unten sehen Sie unsere Unsloth-Benchmarks in einer Heatmap vs. `SentenceTransformers` + Flash Attention 2 (FA2) für 16-Bit LoRA. **Für 16-Bit LoRA ist Unsloth 1,2x bis 3,3x schneller:**

<figure><img src="https://797013937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxhOjnexMCB3dmuQFQ2Zq%2Fuploads%2FTl12zuBg68ZPSyOC9hUe%2Foutput(15).png?alt=media&#x26;token=47d7cade-7eac-4366-8011-7034de087431" alt=""><figcaption></figcaption></figure>

### 🔮 Modellunterstützung

Hier sind einige beliebte Embedding-Modelle, die Unsloth unterstützt (nicht alle Modelle sind hier aufgeführt):

```
Alibaba-NLP/gte-modernbert-base
BAAI/bge-large-en-v1.5
BAAI/bge-m3
BAAI/bge-reranker-v2-m3
Qwen/Qwen3-Embedding-0.6B
answerdotai/ModernBERT-base
answerdotai/ModernBERT-large
google/embeddinggemma-300m
intfloat/e5-large-v2
intfloat/multilingual-e5-large-instruct
mixedbread-ai/mxbai-embed-large-v1
sentence-transformers/all-MiniLM-L6-v2
sentence-transformers/all-mpnet-base-v2
Snowflake/snowflake-arctic-embed-l-v2.0
```

Die meisten [gängigen Modelle](https://huggingface.co/models?library=sentence-transformers) werden bereits unterstützt. Wenn es ein ausschließlich Encoder-basiertes Modell gibt, das Sie gerne hätten und das noch nicht unterstützt wird, können Sie gern ein [GitHub-Issue](https://github.com/unslothai/unsloth/issues) dazu erstellen.
