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

并且 LoRA 在 6GB 显存下可运行。 SentenceTransformers 对于 4bit QLoRA,Unsloth 快 1.8x 到 2.6x: + Flash Attention 2 (FA2) 用于 16bit LoRA。

对于 16bit LoRA,Unsloth 快 1.2x 到 3.3x:
🔮 模型支持
Snowflake/snowflake-arctic-embed-l-v2.0 大多数 常见模型 已被支持。如果有您想要的仅编码器模型尚未被支持,欢迎提出一个 GitHub issue
最后更新于
这有帮助吗?

