🔎使用 Unsloth 指南微调嵌入模型
学习如何轻松使用 Unsloth 微调嵌入模型。
微调嵌入模型可以大幅提升特定任务上的检索和 RAG 性能。它会将模型的向量与您的领域以及对您的用例真正重要的“相似性”对齐,从而提升您数据上的搜索、RAG、聚类和推荐效果。
例如:标题“Google launches Pixel 10”和“Qwen releases Qwen3”如果你只是把它们都标记为“科技”,可能会被嵌入为相似;但如果你在做语义搜索,它们就不相似,因为它们讲的是不同的事情。微调有助于模型为您的用例建立“正确”类型的相似性,从而减少错误并改善结果。
Unsloth 现已支持训练嵌入、 分类器, BERT, 重排序器 模型 快约 1.8-3.3 倍 ,并且比其他 Flash Attention 2 实现少用 20% 内存、上下文长度加倍——且不会降低准确率。EmbeddingGemma-300M 仅需 3GB 显存。您可以在任何地方使用您训练好的 模型:transformers、LangChain、Ollama、vLLM、llama.cpp 等。
Unsloth 使用 SentenceTransformers 来支持像 Qwen3-Embedding、BERT 等兼容模型。 即使没有 notebook 或上传,仍然支持。
我们创建了免费的微调 notebooks,包含 3 个主要用例:
All-MiniLM-L6-v2:生成紧凑、特定领域的句向量嵌入,用于语义搜索、检索和聚类,并可基于您自己的数据进行调优。tomaarsen/miriad-4.4M-split:为高质量医疗语义搜索和 RAG 嵌入医学问题和生物医学论文。electroglyph/technical:更好地捕捉技术文本(文档、规格和工程讨论)中的含义和语义相似性。
您可以在 我们的合集这里.
查看我们其余已上传模型。非常感谢 Unsloth 贡献者 electroglyph,其工作对支持这一功能至关重要。您可以在 Hugging Face 上查看 electroglyph 的自定义模型 这里.
🦥 Unsloth 功能
用于嵌入的 LoRA/QLoRA 或全量微调,无需重写您的流水线
对仅编码器(encoder-only)
SentenceTransformer模型的最佳支持(包含一个modules.json)即使在回退路径下,交叉编码器模型也已确认可以正确训练
此版本还支持
transformers v5
对于没有 modules.json 的模型,支持有限(我们会自动分配默认的 SentenceTransformers 池化模块)。如果您在做自定义内容(自定义头、非标准池化),请仔细检查输出,例如池化嵌入的行为。
通过把梯度检查点机制补丁到 transformers 模型中,启用了某些需要自定义补丁的模型,如 MPNet 或 DistilBERT。
🛠️ 微调工作流
新的微调流程以 FastSentenceTransformer.
为中心。主要的保存/推送方法:
save_pretrained()保存 LoRA 适配器 到本地文件夹save_pretrained_merged()保存 合并后的模型 到本地文件夹push_to_hub()推送 LoRA 适配器 到 Hugging Facepush_to_hub_merged()推送合并后的 合并后的模型 到 Hugging Face
还有一个非常重要的细节:推理加载需要 for_inference=True
from_pretrained() 与 Lacker 的其他快速类相似,只有 一个例外:
要加载用于 推理 的模型,使用
FastSentenceTransformer时,您 必须 传入:for_inference=True
因此您的推理加载应如下所示:
对于 Hugging Face 授权,如果您运行:
并在调用 hub 方法之前在同一个 virtualenv 中执行,那么:
push_to_hub()和push_to_hub_merged()不需要 token 参数.
✅ 可推理,可部署到任何地方!
您微调后的 Unsloth 模型可以与所有主流工具一起使用和部署:transformers、LangChain、Weaviate、sentence-transformers、Text Embeddings Inference (TEI)、vLLM 和 llama.cpp、自定义嵌入 API、pgvector、FAISS/向量数据库,以及任何 RAG 框架。
没有锁定,因为微调后的模型之后可以在您自己的设备上本地下载。
📊 Unsloth 基准测试
Unsloth 在嵌入微调方面的优势包括速度!我们展示了我们始终保持 快 1.8 到 3.3 倍 ,适用于各种嵌入模型,以及从 128 到 2048 及更长的不同序列长度。
EmbeddingGemma-300M QLoRA 仅需 3GB 显存 ,而 LoRA 仅需 6GB 显存即可运行。
下面是我们与 SentenceTransformers + Flash Attention 2 (FA2) 在 4bit QLoRA 上的热力图基准对比。 对于 4bit QLoRA,Unsloth 快 1.8x 到 2.6x:

下面是我们与 SentenceTransformers + Flash Attention 2 (FA2) 在 16bit LoRA 上的表现。 对于 16bit LoRA,Unsloth 快 1.2x 到 3.3x:

🔮 模型支持
以下是 Unsloth 支持的一些流行嵌入模型(此处未列出全部模型):
大多数 常见模型 已经支持。如果您想要的仅编码器模型尚未支持,欢迎提交一个 GitHub issue 来请求支持。
最后更新于
这有帮助吗?

