🔎使用 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 贡献者 electroglypharrow-up-right,他的工作对支持此功能非常重要。您可以在 Hugging Face 上查看 electroglyph 的自定义模型 这里arrow-up-right.

🦥 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 model push_to_hub()

  • 推送到 Hugging Face push_to_hub_merged() 保存

推送 还有一个非常重要的细节:推理加载需要

for_inference=True from_pretrained() 类似于 Lacker 的其他快速类,具有:

  • 一个例外情况 要加载用于 推理 FastSentenceTransformer的模型 使用 ,您 还有一个非常重要的细节:推理加载需要

必须

"sentence-transformers/all-MiniLM-L6-v2",

对于 Hugging Face 授权,如果您在调用 hub 方法之前在相同的 virtualenv 中运行:

  • merged model hf 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 大多数arrow-up-right 常见模型 已被支持。如果有您想要的仅编码器模型尚未被支持,欢迎提出一个arrow-up-right GitHub issue

最后更新于

这有帮助吗?