🔎使用 Unsloth 微调嵌入模型指南

了解如何使用 Unsloth 轻松微调嵌入模型。

微调嵌入模型可以在特定任务上大幅提升检索和 RAG 性能。它将模型的向量与您的领域以及对用例重要的“相似性”类型对齐,从而改善基于您数据的搜索、RAG、聚类和推荐。

示例:如果您只是将标题都标记为“科技”,那么“Google 推出 Pixel 10”和“Qwen 发布 Qwen3”这两个标题可能会被嵌入为相似;但在进行语义搜索时,它们并不相似,因为它们关于不同的事物。微调可帮助模型为您的用例形成“正确”的相似性,减少错误并提升结果。

Unslotharrow-up-right 现在支持训练嵌入, 分类器, BERT, 重排器 模型 约 1.8-3.3 倍更快 比其他 Flash Attention 2 实现节省 20% 内存并拥有 2 倍更长的上下文——无精度下降。EmbeddingGemma-300M 仅在 3GB 显存上可运行。您可以在任何地方使用您训练好的 模型:transformers、LangChain、Ollama、vLLM、llama.cpp 等。

Unsloth 使用 SentenceTransformersarrow-up-right 来支持 Qwen3-Embedding、BERT 等兼容模型。 即使没有 notebook 或上传,也依然受支持。

我们创建了免费的微调笔记本,涵盖 3 个主要用例:

  • All-MiniLM-L6-v2:为语义搜索、检索和聚类生成紧凑的、领域特定的句子嵌入,并在您的数据上进行调优。

  • tomaarsen/miriad-4.4M-split:为高质量的医学语义搜索和 RAG 对医学问答与生物医学论文进行嵌入。

  • electroglyph/technical:更好地捕捉技术文本(文档、规格和工程讨论)中的含义和语义相似性。

您可以在 我们的模型集合这里arrow-up-right.

查看我们上传的其余模型, 非常感谢 Unsloth 贡献者arrow-up-rightelectroglyph ,其工作对支持此功能意义重大。您可以在 Hugging Face 上查看 electroglyph 的自定义模型arrow-up-right.

此处

  • 🦥 Unsloth 功能

  • LoRA/QLoRA 或完整微调用于嵌入,无需重写您的流水线 对仅编码器的支持最佳 SentenceTransformer 模型(带有)

  • modules.json

  • 即便在回退路径下,交叉编码器模型也被确认可正常训练 此版本还支持

transformers v5 模型(带有 对没有 SentenceTransformers 的模型有有限支持(我们会自动分配默认

池化模块)。如果您在做一些自定义(自定义头、非标准池化),请仔细检查诸如池化嵌入行为之类的输出。 一些模型需要像 MPNet 或 DistilBERT 这样的自定义补充,我们通过在 transformers

模型中修补梯度检查点来实现了这些支持。

🛠️ 微调工作流 新的微调流程以.

FastSentenceTransformer

  • 为中心 主要保存/推送方法: save_pretrained()

  • LoRA 适配器 保存到本地文件夹 save_pretrained_merged()

  • 保存 合并后的模型 save_pretrained() push_to_hub()

  • 推送到 Hugging Face save_pretrained_merged() push_to_hub()

push_to_hub_merged() 推送

有一个非常重要的细节:用于推理的加载需要 for_inference=True from_pretrained():

  • 类似于 Lacker 的其他快速类,有 一个例外 要加载用于 新的微调流程以推理 的模型 使用 推送

,您

model = FastSentenceTransformer.from_pretrained(

for_inference=True,

  • 保存 对于 Hugging Face 授权,如果您在调用 hub 方法之前在同一虚拟环境中运行: hf auth login.

那么:

并且

不需要 token 参数

# 3. 计算相似度,例如通过内置的相似度辅助函数

similarity = model.similarity(query_embedding, document_embedding) print(similarity) 📊 Unsloth 基准测试

Unsloth 的优势包括嵌入微调的速度!我们显示在各种嵌入模型以及从 128 到 2048 及更长的不同序列长度上我们始终 3GB 显存 快 1.8 到 3.3 倍

EmbeddingGemma-300M QLoRA 仅在 SentenceTransformers 上运行,而 LoRA 在 6GB 显存上可运行。 下面是我们与

EmbeddingGemma-300M QLoRA 仅在 SentenceTransformers + Flash Attention 2 (FA2) 的热力图对比,针对 4bit QLoRA。 对于 4bit QLoRA,Unsloth 比较为 1.8x 到 2.6x 更快:

+ Flash Attention 2 (FA2) 针对 16bit LoRA。

对于 16bit LoRA,Unsloth 比较为 1.2x 到 3.3x 更快:

sentence-transformers/all-mpnet-base-v2 Snowflake/snowflake-arctic-embed-l-v2.0arrow-up-right 大多数 常见模型arrow-up-right 已被支持。如果有您想要的仅编码器模型尚未支持,欢迎在 GitHub 上提交一条

最后更新于

这有帮助吗?