🔎Guide d'ajustement des modèles d'embeddings avec Unsloth
Apprenez comment affiner facilement les modèles d'embeddings avec Unsloth.
L'affinage (fine-tuning) des modèles d'embeddings peut grandement améliorer la récupération et les performances RAG sur des tâches spécifiques. Il aligne les vecteurs du modèle avec votre domaine et le type de « similarité » qui compte pour votre cas d'utilisation, ce qui améliore la recherche, le RAG, le clustering et les recommandations sur vos données.
Exemple : Les titres « Google lance le Pixel 10 » et « Qwen publie Qwen3 » pourraient être encodés comme similaires si vous les étiquetez simplement tous deux comme « Tech », mais pas similaires si vous effectuez une recherche sémantique car ils portent sur des choses différentes. L'affinage aide le modèle à établir le type de similarité « correct » pour votre cas d'utilisation, réduisant les erreurs et améliorant les résultats.
Unsloth prend désormais en charge l'entraînement d'embeddings, classificateur, BERT, réordonnanceur modèles ≈1,8 à 3,3x plus rapide avec 20 % de mémoire en moins et un contexte 2x plus long que d'autres implémentations de Flash Attention 2 - sans dégradation de la précision. EmbeddingGemma-300M fonctionne sur seulement 3 Go de VRAM. Vous pouvez utiliser votre modèle n'importe où : transformers, LangChain, Ollama, vLLM, llama.cpp, etc.
Unsloth utilise SentenceTransformers pour prendre en charge des modèles compatibles comme Qwen3-Embedding, BERT et d'autres. Même s'il n'y a pas de notebook ou d'upload, c'est toujours pris en charge.
Nous avons créé des notebooks gratuits pour l'affinage, avec 3 cas d'utilisation principaux :
All-MiniLM-L6-v2: produire des embeddings de phrases compacts et spécifiques au domaine pour la recherche sémantique, la récupération et le clustering, ajustés sur vos propres données.tomaarsen/miriad-4.4M-split: encoder des questions médicales et des articles biomédicaux pour une recherche sémantique médicale et du RAG de haute qualité.electroglyph/technical: mieux capter le sens et la similarité sémantique dans les textes techniques (docs, spécifications et discussions d'ingénierie).
Vous pouvez voir le reste de nos modèles uploadés dans notre collection ici.
Un grand merci au contributeur Unsloth electroglyph, dont le travail a été important pour soutenir cela. Vous pouvez consulter les modèles personnalisés d'electroglyph sur Hugging Face ici.
🦥 Fonctionnalités d'Unsloth
LoRA/QLoRA ou affinage complet pour les embeddings, sans avoir besoin de réécrire votre pipeline
Meilleur support pour les modèles
SentenceTransformeruniquement encodeur (avec unmodules.json)Les modèles cross-encoder sont confirmés comme pouvant s'entraîner correctement même via le chemin de repli
Cette version prend également en charge
transformers v5
Il y a un support limité pour les modèles sans modules.json (nous assignerons automatiquement des SentenceTransformers modules de pooling). Si vous faites quelque chose de personnalisé (têtes personnalisées, pooling non standard), vérifiez soigneusement les sorties comme le comportement de l'embedding poolé.
Certains modèles nécessitaient des ajouts personnalisés tels que MPNet ou DistilBERT ont été rendus possibles en patchant le checkpointing de gradient dans le transformers modèles.
🛠️ Flux de travail d'affinage
Le nouveau flux d'affinage est centré autour de FastSentenceTransformer.
Principales méthodes de sauvegarde/poussée :
save_pretrained()Sauvegarde adaptateurs LoRA dans un dossier localsave_pretrained_merged()Sauvegarde le modèle fusionné dans un dossier localpush_to_hub()Pousse adaptateurs LoRA vers Hugging Facepush_to_hub_merged()Pousse le modèle fusionné vers Hugging Face
Et un détail très important : le chargement pour l'inférence nécessite for_inference=True
from_pretrained() est similaire aux autres classes rapides de Lacker, avec une exception:
Pour charger un modèle pour l'inférence en utilisant
FastSentenceTransformer, vous vous devez passer :for_inference=True
Ainsi vos chargements pour l'inférence devraient ressembler à :
Pour l'autorisation Hugging Face, si vous exécutez :
dans le même virtualenv avant d'appeler les méthodes hub, alors :
push_to_hub()etpush_to_hub_merged()n'exigent pas d'argument token.
✅ Inférence et déploiement partout !
Votre modèle Unsloth affiné peut être utilisé et déployé avec tous les principaux outils : transformers, LangChain, Weaviate, sentence-transformers, Text Embeddings Inference (TEI), vLLM, et llama.cpp, API d'embedding personnalisée, pgvector, FAISS/bases de données vectorielles, et tout framework RAG.
Il n'y a pas d'enfermement propriétaire car le modèle affiné peut ensuite être téléchargé localement sur votre propre appareil.
📊 Benchmarks Unsloth
Les avantages d'Unsloth incluent la vitesse pour l'affinage des embeddings ! Nous montrons que nous sommes constamment 1,8 à 3,3x plus rapides sur une grande variété de modèles d'embeddings et sur différentes longueurs de séquence de 128 à 2048 et plus.
EmbeddingGemma-300M QLoRA fonctionne sur seulement 3 Go de VRAM et LoRA fonctionne avec 6 Go de VRAM.
Ci-dessous figurent nos benchmarks Unsloth dans une heatmap vs. SentenceTransformers + Flash Attention 2 (FA2) pour QLoRA 4 bits. Pour le QLoRA 4 bits, Unsloth est 1,8x à 2,6x plus rapide :

Ci-dessous figurent nos benchmarks Unsloth dans une heatmap vs. SentenceTransformers + Flash Attention 2 (FA2) pour LoRA 16 bits. Pour le LoRA 16 bits, Unsloth est 1,2x à 3,3x plus rapide :

🔮 Support de modèles
Voici quelques modèles d'embeddings populaires pris en charge par Unsloth (tous les modèles ne sont pas listés ici) :
La plupart des modèles courants sont déjà pris en charge. S'il y a un modèle uniquement encodeur que vous souhaitez et qui ne l'est pas, n'hésitez pas à ouvrir une GitHub issue demande pour cela.
Mis à jour
Ce contenu vous a-t-il été utile ?

