一些流行的预训练 Sentence Transformer 模型被广泛用于将文本转换为嵌入,其中 all-MiniLM-L6-v2 和 all-mpnet-base-v2 是两个常见的选择。 这些模型的主要区别在于架构、大小和性能权衡。 例如,all-MiniLM-L6-v2 是一个紧凑、注重效率的模型,而 all-mpnet-base-v2 则以牺牲计算资源为代价来优先考虑更高的准确性。 两者都是“all-*”系列的一部分,这意味着它们在各种数据集上进行了微调,用于语义搜索、聚类或检索等通用任务。
架构差异 all-mpnet-base-v2 模型基于 MPNet,这是一种预训练架构,它结合了掩码语言建模(如 BERT)和置换句子训练(如 XLNet)。 这种混合方法有助于 MPNet 更好地捕获词序和上下文,从而产生强大的嵌入。 它有 12 个 transformer 层,并输出 768 维向量。 相比之下,all-MiniLM-L6-v2 使用了较大模型(如 BERT 或 RoBERTa)的精简版本,以在保留性能的同时减小尺寸。 它有 6 个 transformer 层和 384 维嵌入,使其明显更小(大约 2200 万个参数,而 MPNet 的 1.1 亿个参数)。 MiniLM 通过训练一个较小的模型来模仿较大模型的行为来实现这一点,从而牺牲了一些细微差别以换取速度和资源效率。
性能和应用场景 在大规模文本嵌入基准 (MTEB) 等基准测试中,由于其更大的尺寸和预训练方法,all-mpnet-base-v2 在语义相似性或检索等任务中的准确性通常排名更高。 例如,在 STS-B 语义相似性任务中,它的得分约为 87-88%,而 MiniLM 的得分为 84-85%。 但是,all-MiniLM-L6-v2 运行速度更快(例如,在 CPU 上约为 14k 个句子/秒,而约为 4k 个句子/秒)并且使用的内存更少,使其成为边缘设备、实时 API 或延迟至关重要的应用程序的理想选择。 开发人员可能会选择 MPNet 用于需要高精度的后端系统(例如,法律文档分析),而 MiniLM 用于移动应用程序或高吞吐量场景(例如,实时推荐系统)。 这两个模型都可以通过 sentence-transformers
库访问,从而可以轻松集成到 Python 管道中。