预训练模型¶
我们通过 Sentence Transformers Hugging Face 组织提供多种预训练的 Sentence Transformers 模型。此外,Hugging Face Hub 上已公开发布了超过 6,000 个社区 Sentence Transformers 模型。所有模型都可以在这里找到:
原始模型:Sentence Transformers Hugging Face 组织。
社区模型:Hugging Face 上的所有 Sentence Transformer 模型。
这些模型中的每一个都可以轻松下载并像这样使用:
from sentence_transformers import SentenceTransformer
# Load https://huggingface.co/sentence-transformers/all-mpnet-base-v2
model = SentenceTransformer("all-mpnet-base-v2")
embeddings = model.encode([
"The weather is lovely today.",
"It's so sunny outside!",
"He drove to the stadium.",
])
similarities = model.similarity(embeddings, embeddings)
备注
考虑使用 Massive Textual Embedding Benchmark 排行榜 <https://huggingface.co/spaces/mteb/leaderboard>
_ 作为强大的 Sentence Transformer 模型的灵感来源。注意:
模型大小:建议过滤掉那些在没有过度硬件的情况下可能不可行的大型模型。
实验是关键:在排行榜上表现良好的模型不一定能在您的任务中表现良好,至关重要的是要尝试各种有前途的模型。
原始模型¶
下表概述了我们部分模型的性能。这些模型已广泛评估了它们嵌入句子(性能句子嵌入)和嵌入搜索查询与段落(性能语义搜索)的质量。
所有-* 模型都是在所有可用的训练数据(超过10亿个训练对)上训练的,并且被设计为通用模型。all-mpnet-base-v2 模型提供了最佳的质量,而 all-MiniLM-L6-v2 的速度快了5倍,同时仍然提供了良好的质量。切换所有模型以查看所有评估的原始模型。
语义搜索模型¶
以下模型专门为语义搜索进行了训练:给定一个问题/搜索查询,这些模型能够找到相关的文本段落。更多详情,请参阅使用 > 语义搜索。
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("multi-qa-mpnet-base-cos-v1")
query_embedding = model.encode("How big is London")
passage_embeddings = model.encode([
"London is known for its financial district",
"London has 9,787,426 inhabitants at the 2011 census",
"The United Kingdom is the fourth largest exporter of goods in the world",
])
similarity = model.similarity(query_embedding, passage_embeddings)
# => tensor([[0.4659, 0.6142, 0.2697]])
多问答模型¶
以下模型已经在来自各种来源和领域的215M个问答对上进行了训练,包括StackExchange、Yahoo Answers、Google & Bing搜索查询等。这些模型在许多搜索任务和领域中表现良好。
这些模型经过调整,适用于点积相似度评分:
Model | Performance Semantic Search (6 Datasets) | Queries (GPU / CPU) per sec. |
---|---|---|
multi-qa-mpnet-base-dot-v1 | 57.60 | 4,000 / 170 |
multi-qa-distilbert-dot-v1 | 52.51 | 7,000 / 350 |
multi-qa-MiniLM-L6-dot-v1 | 49.19 | 18,000 / 750 |
这些模型生成归一化长度为1的向量,可以与点积、余弦相似度和欧几里得距离作为相似性函数一起使用:
Model | Performance Semantic Search (6 Datasets) | Queries (GPU / CPU) per sec. |
---|---|---|
multi-qa-mpnet-base-cos-v1 | 57.46 | 4,000 / 170 |
multi-qa-distilbert-cos-v1 | 52.83 | 7,000 / 350 |
multi-qa-MiniLM-L6-cos-v1 | 51.83 | 18,000 / 750 |
MSMARCO 段落模型¶
以下模型已经在 MSMARCO Passage Ranking Dataset 上进行了训练,该数据集包含来自 Bing 搜索的 500k 真实查询以及来自各种网络来源的相关段落。鉴于 MSMARCO 数据集的多样性,模型在其他领域也表现良好。
这些模型经过调整,适用于点积相似度评分:
Model | MSMARCO MRR@10 dev set | Performance Semantic Search (6 Datasets) | Queries (GPU / CPU) per sec. |
---|---|---|---|
msmarco-bert-base-dot-v5 | 38.08 | 52.11 | 4,000 / 170 |
msmarco-distilbert-dot-v5 | 37.25 | 49.47 | 7,000 / 350 |
msmarco-distilbert-base-tas-b | 34.43 | 49.25 | 7,000 / 350 |
这些模型生成归一化长度为1的向量,可以与点积、余弦相似度和欧几里得距离作为相似性函数一起使用:
Model | MSMARCO MRR@10 dev set | Performance Semantic Search (6 Datasets) | Queries (GPU / CPU) per sec. |
---|---|---|---|
msmarco-distilbert-cos-v5 | 33.79 | 44.98 | 7,000 / 350 |
msmarco-MiniLM-L12-cos-v5 | 32.75 | 43.89 | 11,000 / 400 |
msmarco-MiniLM-L6-cos-v5 | 32.27 | 42.16 | 18,000 / 750 |
MSMARCO 模型 - 更多详情
多语言模型¶
以下模型为不同语言的相同文本生成类似的嵌入。您不需要指定输入语言。详细信息请参阅我们的出版物《使用知识蒸馏使单语句嵌入多语言化》。我们使用了以下50多种语言:ar, bg, ca, cs, da, de, el, en, es, et, fa, fi, fr, fr-ca, gl, gu, he, hi, hr, hu, hy, id, it, ja, ka, ko, ku, lt, lv, mk, mn, mr, ms, my, nb, nl, pl, pt, pt-br, ro, ru, sk, sl, sq, sr, sv, th, tr, uk, ur, vi, zh-cn, zh-tw。
语义相似度模型¶
这些模型能在同一语言或跨语言中找到语义相似的句子:
distiluse-base-multilingual-cased-v1: 多语言通用句子编码器(Universal Sentence Encoder)的多语言知识蒸馏版本。支持15种语言:阿拉伯语、中文、荷兰语、英语、法语、德语、意大利语、韩语、波兰语、葡萄牙语、俄语、西班牙语、土耳其语。
distiluse-base-multilingual-cased-v2: 多语言通用句子编码器(Universal Sentence Encoder)的知识蒸馏版本。此版本支持50多种语言,但性能略逊于v1模型。
paraphrase-multilingual-MiniLM-L12-v2 - paraphrase-MiniLM-L12-v2 的多语言版本,针对50多种语言的平行数据进行训练。
paraphrase-multilingual-mpnet-base-v2 - paraphrase-mpnet-base-v2 的多语言版本,针对 50 多种语言的平行数据进行了训练。
双语挖掘¶
双语挖掘描述了在两种语言中寻找翻译句子对的过程。如果这是你的使用场景,以下模型提供了最佳性能:
LaBSE - LaBSE 模型。支持 109 种语言。在查找多语言翻译对方面效果良好。如这里所述,LaBSE 在评估非互译句子对的相似性方面效果较差。
通过遵循训练示例 > 多语言模型,将模型扩展到新语言很容易。
图像 & 文本模型¶
以下模型可以将图像和文本嵌入到一个联合向量空间中。有关如何用于文本到图像搜索、图像到图像搜索、图像聚类和零样本图像分类的更多详细信息,请参阅使用指南 > 图像搜索。
以下模型在zero-shot ImageNet验证数据集上的Top 1准确率如下。
Model | Top 1 Performance |
---|---|
clip-ViT-L-14 | 75.4 |
clip-ViT-B-16 | 68.1 |
clip-ViT-B-32 | 63.3 |
我们进一步提供这种多语言文本-图像模型:
clip-ViT-B-32-multilingual-v1 - 使用多语言知识蒸馏的 clip-ViT-B-32 模型的多语言文本编码器。该模型可以将50多种语言的文本编码,以匹配 clip-ViT-B-32 模型的图像向量。
INSTRUCTOR 模型¶
一些 INSTRUCTOR 模型,例如 hkunlp/instructor-large,在 Sentence Transformers 中得到了原生支持。这些模型是特殊的,因为它们是在考虑指令的情况下进行训练的。值得注意的是,普通 Sentence Transformer 模型和 Instructor 模型之间的主要区别在于,后者在池化步骤中不包括指令本身。
以下模型可以直接使用:
你可以这样使用这些模型:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("hkunlp/instructor-large")
embeddings = model.encode(
[
"Dynamical Scalar Degree of Freedom in Horava-Lifshitz Gravity",
"Comparison of Atmospheric Neutrino Flux Calculations at Low Energies",
"Fermion Bags in the Massive Gross-Neveu Model",
"QCD corrections to Associated t-tbar-H production at the Tevatron",
],
prompt="Represent the Medicine sentence for clustering: ",
)
print(embeddings.shape)
# => (4, 768)
例如,对于信息检索:
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim
model = SentenceTransformer("hkunlp/instructor-large")
query = "where is the food stored in a yam plant"
query_instruction = (
"Represent the Wikipedia question for retrieving supporting documents: "
)
corpus = [
'Yams are perennial herbaceous vines native to Africa, Asia, and the Americas and cultivated for the consumption of their starchy tubers in many temperate and tropical regions. The tubers themselves, also called "yams", come in a variety of forms owing to numerous cultivars and related species.',
"The disparate impact theory is especially controversial under the Fair Housing Act because the Act regulates many activities relating to housing, insurance, and mortgage loans—and some scholars have argued that the theory's use under the Fair Housing Act, combined with extensions of the Community Reinvestment Act, contributed to rise of sub-prime lending and the crash of the U.S. housing market and ensuing global economic recession",
"Disparate impact in United States labor law refers to practices in employment, housing, and other areas that adversely affect one group of people of a protected characteristic more than another, even though rules applied by employers or landlords are formally neutral. Although the protected classes vary by statute, most federal civil rights laws protect based on race, color, religion, national origin, and sex as protected traits, and some laws include disability status and other traits as well.",
]
corpus_instruction = "Represent the Wikipedia document for retrieval: "
query_embedding = model.encode(query, prompt=query_instruction)
corpus_embeddings = model.encode(corpus, prompt=corpus_instruction)
similarities = cos_sim(query_embedding, corpus_embeddings)
print(similarities)
# => tensor([[0.8835, 0.7037, 0.6970]])
所有其他Instructor模型要么1) 无法加载,因为它们的modules.json中引用了InstructorEmbedding,要么2) 需要在加载后调用model.set_pooling_include_prompt(include_prompt=False)。
科学相似性模型¶
SPECTER 是一个在科学引文上训练的模型,可以用来估计两篇出版物之间的相似性。我们可以用它来找到相似的论文。
allenai-specter - 语义搜索 Python 示例 / 语义搜索 Colab 示例