🔎Finetuning von Embedding-Modellen mit Unsloth - Anleitung

Lerne, wie man Embedding-Modelle ganz einfach mit Unsloth finetunt.

Feinabstimmung von Embedding-Modellen kann die Retrieval- und RAG-Leistung für spezifische Aufgaben erheblich verbessern. Sie richtet die Vektoren des Modells an Ihrer Domäne und der Art von „Ähnlichkeit“ aus, die für Ihren Anwendungsfall wichtig ist, was die Suche, RAG, Clusterbildung und Empfehlungen auf Ihren Daten verbessert.

Beispiel: Die Überschriften „Google launches Pixel 10“ und „Qwen releases Qwen3“ könnten als ähnlich eingebettet werden, wenn Sie beide einfach als „Tech“ kennzeichnen, aber nicht als ähnlich, wenn Sie semantische Suche durchführen, weil sie von unterschiedlichen Themen handeln. Feinabstimmung hilft dem Modell, die für Ihren Anwendungsfall „richtige“ Art von Ähnlichkeit zu erzeugen, wodurch Fehler reduziert und Ergebnisse verbessert werden.

Unslotharrow-up-right unterstützt jetzt das Training von Embeddings, Klassifikator, BERT, Reranker Modelle ~1,8–3,3x schneller mit 20% weniger Speicher und doppelt so langem Kontext im Vergleich zu anderen Flash Attention 2-Implementierungen - ohne Genauigkeitsverlust. EmbeddingGemma-300M funktioniert bereits mit nur 3GB VRAM. Sie können Ihr trainiertes Modell überall: transformers, LangChain, Ollama, vLLM, llama.cpp usw.

Unsloth verwendet SentenceTransformersarrow-up-right um kompatible Modelle wie Qwen3-Embedding, BERT und mehr zu unterstützen. Auch wenn es kein Notebook oder Upload gibt, ist es trotzdem unterstützt.

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

  • All-MiniLM-L6-v2: erzeugen kompakte, domänenspezifische Satz-Embeddings für semantische Suche, Retrieval und Clustering, abgestimmt auf Ihre eigenen Daten.

  • tomaarsen/miriad-4.4M-split: bettet medizinische Fragen und biomedizinische Arbeiten ein für qualitativ hochwertige medizinische semantische Suche und RAG.

  • electroglyph/technical: erfasst Bedeutung und semantische Ähnlichkeit in technischem Text (Dokumente, Spezifikationen und technische Diskussionen) besser.

Sie können den Rest unserer hochgeladenen Modelle ansehen in unserer Sammlung hierarrow-up-right.

Ein großes Dankeschön an den Unsloth-Mitwirkenden electroglypharrow-up-right, dessen Arbeit maßgeblich zur Unterstützung beigetragen hat. Sie können electroglyphs benutzerdefinierte Modelle auf Hugging Face ansehen hierarrow-up-right.

🦥 Unsloth-Funktionen

  • LoRA/QLoRA oder vollständiges Fine-Tuning für Embeddings, ohne dass Sie Ihre Pipeline umschreiben müssen

  • Beste Unterstützung für Encoder-only SentenceTransformer Modelle (mit einer modules.json)

  • Cross-Encoder-Modelle wurden bestätigt, dass sie sogar unter dem Fallback-Pfad ordnungsgemäß trainieren

  • Diese Veröffentlichung unterstützt außerdem transformers v5

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

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

🛠️ Fine-Tuning-Workflow

Der neue Fine-Tuning-Flow ist zentriert um FastSentenceTransformer.

Haupt-Speicher-/Push-Methoden:

  • save_pretrained() Speichert LoRA-Adapter in einen lokalen Ordner

  • save_pretrained_merged() Speichert das zusammengeführte Modell in einen lokalen Ordner

  • push_to_hub() Schiebt LoRA-Adapter zu Hugging Face

  • push_to_hub_merged() Schiebt das zusammengeführte Modell zu Hugging Face

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

from_pretrained() ist ähnlich zu Lackers anderen schnellen Klassen, mit einer Ausnahme:

  • Um ein Modell für Inference mit FastSentenceTransformeraufrufen, müssen folgende Angaben gemacht werden: for_inference=True

Ihre Inferenz-Loads sollten also wie folgt aussehen:

Für Hugging Face-Autorisierung, falls Sie ausführen:

innerhalb desselben virtualenv bevor Sie die Hub-Methoden aufrufen, dann:

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

✅ Inferenz und Deployment überall!

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

Es gibt keine Bindung, da das feinabgestimmte Modell später lokal auf Ihrem eigenen Gerät heruntergeladen werden kann.

📊 Unsloth-Benchmarks

Zu Unsloths Vorteilen gehört Geschwindigkeit beim Embedding-Fine-Tuning! Wir zeigen, dass wir konsequent 1,8 bis 3,3x schneller für eine Vielzahl von Embedding-Modellen und bei unterschiedlichen Sequenzlängen von 128 bis 2048 und länger sind.

EmbeddingGemma-300M QLoRA funktioniert bereits mit nur 3GB VRAM und LoRA funktioniert mit 6GB VRAM.

Nachfolgend sind unsere Unsloth-Benchmarks in einer Heatmap gegenüber: SentenceTransformers + Flash Attention 2 (FA2) für 4bit QLoRA. Für 4bit QLoRA ist Unsloth 1,8x bis 2,6x schneller:

Nachfolgend sind unsere Unsloth-Benchmarks in einer Heatmap gegenüber: SentenceTransformers + Flash Attention 2 (FA2) für 16bit LoRA. Für 16bit LoRA ist Unsloth 1,2x bis 3,3x schneller:

🔮 Modellunterstützung

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

Die meisten gängigen Modellearrow-up-right werden bereits unterstützt. Wenn es ein Encoder-only-Modell gibt, das Sie möchten und das noch nicht unterstützt wird, können Sie gerne eine GitHub-Issuearrow-up-right Anfrage dafür öffnen.

Zuletzt aktualisiert

War das hilfreich?