Model2Vec: 极速静态嵌入

Model2Vec 是一种新技术,它可以将任何Sentence Transformer转换为一个小型静态词嵌入模型,但在现代基准测试中却能提供显著更优的性能。

Model2Vec: 极速静态嵌入

如果您曾经构建过语义搜索系统、RAG 管道或文本分类工作流程,您可能熟悉一些常见问题。

  • Sentence Transformer 功能强大,但体积庞大。
  • 它们需要 GPU 才能快速推理。
  • 索引数百万份文档需要时间和内存。
  • 在边缘设备或低资源环境中部署它们非常困难。

现在想象一下:

  • 模型体积缩小 50 倍
  • CPU 运行速度提升 500 倍
  • 无需 GPU
  • 生成最先进的静态词嵌入
  • 支持零预索引的即时向量搜索
  • 无需任何训练数据集,即可在 30 秒内完成提炼

这正是 Model2Vec 的优势所在。而且它是 100% 开源的。

1、什么是 Model2Vec?

Model2Vec 是一种新技术,它可以将任何Sentence Transformer转换为一个小型静态词嵌入模型——比 GloVe、BPEmb 或其他传统静态词嵌入模型小得多,但在现代基准测试中却能提供显著更优的性能。

Model2Vec 的核心步骤如下:

  • 接收一个词汇表
  • 将其输入句子转换器
  • 提取静态词嵌入
  • 应用多个后处理步骤
  • 生成一个小型、快速、仅用于推理的模型

无需训练数据集。无需 GPU。无需漫长的训练过程。

只需 30 秒即可在 CPU 上运行。

2、为何再次使用静态嵌入?

静态嵌入(例如 Word2Vec 和 GloVe)曾经是标准,但 Transformer 模型在语义任务中已经超越了它们。

Model2Vec 能够恢复静态嵌入,并达到 Transformer 级别的质量。

您可以将其视为两全其美:

  • Transformer 的性能
  • 静态模型的速度和简洁性

这使得 Model2Vec 特别适用于:

  • 实时搜索
  • 大规模向量检索
  • 轻量级 RAG(随机无序)
  • 离线或边缘推理
  • 纯 CPU 环境
  • 可扩展的多租户系统
  • 快速分类微调

3、性能概览

特性 Model2Vec
模型大小 最多缩小 50 倍
推理速度 速度提升高达 500 倍
依赖项 仅支持 NumPy
数据蒸馏 30 秒,无需数据集
搜索 即时完成,无需索引
微调 支持

所有模型均可在 HuggingFace Hub 上找到。

4、开始:30 秒内学会使用 Model2Vec

安装基础包:

pip install model2vec

加载预训练模型:

from model2vec import StaticModel

# Load the potion-base-32M model
model = StaticModel.from_pretrained("minishlab/potion-base-32M")
# Make embeddings
embeddings = model.encode([
    "It's dangerous to go alone!",
    "It's a secret to everybody."
])
# Token embeddings if needed
token_embeddings = model.encode_as_sequence([
    "It's dangerous to go alone!",
    "It's a secret to everybody."
])

就是这样。无需 GPU。没有繁重的依赖项。

现在,您可以以闪电般的速度生成词嵌入。

5、30 秒内提炼您自己的模型

想转换您现有的Sentence Transformer吗?

安装蒸馏插件:

pip install model2vec[distill]

蒸馏模型:

from model2vec.distill import distill

# Distill from BAAI/bge-base-en-v1.5
m2v_model = distill(model_name="BAAI/bge-base-en-v1.5")
# Save the result
m2v_model.save_pretrained("m2v_model")

Model2Vec 的工作原理:

  • 构建词汇表
  • 将其前向传递给模型
  • 提取词元级嵌入
  • 应用特殊的后处理
  • 生成紧凑的静态模型

无需数据集。无需调整超参数。

6、在此基础上微调分类器

Model2Vec 还支持下游训练。

安装训练扩展:

pip install model2vec[train]

微调分类器:

import numpy as np
from datasets import load_dataset
from model2vec.train import StaticModelForClassification

# Load a pre-trained model
classifier = StaticModelForClassification.from_pretrained(
    model_name="minishlab/potion-base-32M"
)
# Load a dataset (supports single & multi-label)
ds = load_dataset("setfit/subj")
# Train the classifier
classifier.fit(ds["train"]["text"], ds["train"]["label"])
# Evaluate
report = classifier.evaluate(ds["test"]["text"], ds["test"]["label"])
print(report)

这样就得到了一个快速、轻量级的分类器,可以部署到任何地方。

7、集成无处不在

Model2Vec 已集成到以下平台:

  • Sentence Transformers
  • LangChain
  • HuggingFace Hub(来自预训练,推送到中心)

如果您的工作流程使用这些工具,Model2Vec 可以无缝集成。

8、Model2Vec 的重要性

这项技术可能会改变开发者构建以下应用的方式:

  • 搜索引擎
  • RAG 系统
  • 边缘 AI 应用
  • 大规模嵌入管道
  • 多语言检索系统
  • CPU 优先的 AI 产品

现在,我们无需到处部署大型 Sentence Transformer 模型,而是可以:

  • 一次蒸馏
  • 部署一个小型模型
  • 实现接近 Transformer 的性能
  • 在 CPU 上每秒运行数百万个嵌入

这是效率工程的极致体现。

9、可用模型

模型 语言 Transformer 源 参数 任务
potion-base-32M 英语 bge-base-en-v1.5 32.3M 通用
potion-multilingual-128M 多语言 bge-m3 128M 通用
potion-retrieval-32M 英语 bge-base-en-v1.5 32.3M 检索
potion-base-8M 英语 bge-base-en-v1.5 7.5M 通用
potion-base-4M 英语 bge-base-en-v1.5 3.7M 通用
potion-base-2M 英语 bge-base-en-v1.5 1.8M 通用

所有模型均可在 HuggingFace 上找到。

10、结束语

Model2Vec 为词嵌入带来了全新的视角:

  • 静态词嵌入回归
  • 性能媲美 Transformer,但开销却远低于 Transformer
  • 速度和压缩率大幅提升
  • 生态系统中最简单的蒸馏工作流程

如果您正在使用向量嵌入,Model2Vec 值得您深入了解,甚至值得您采用。


原文链接:Make Sentence Transformers 50× Smaller and 500× Faster with Model2Vec

汇智网翻译整理,转载请标明出处