🚀 hkunlp/instructor-large
我们推出了 Instructor👨🏫,这是一个经过指令微调的文本嵌入模型,它能够 仅通过提供任务指令,无需任何微调,就生成适用于任何任务(如分类、检索、聚类、文本评估等)和领域(如科学、金融等)的文本嵌入。Instructor👨 在 70 个不同的嵌入任务中取得了最优成绩(MTEB 排行榜)!该模型可以通过 我们定制的 sentence-transformer
库轻松使用。更多详情,请查看 我们的论文 和 项目页面!
**************************** 更新内容 ****************************
- 12/28:我们发布了一个新的 检查点,该检查点使用难负样本进行训练,性能更佳。
- 12/21:我们发布了 论文、代码、检查点 和 项目页面!快来查看吧!
🚀 快速开始
📦 安装指南
pip install InstructorEmbedding
💻 使用示例
基础用法
计算自定义嵌入
from InstructorEmbedding import INSTRUCTOR
model = INSTRUCTOR('hkunlp/instructor-large')
sentence = "3D ActionSLAM: wearable person tracking in multi-floor environments"
instruction = "Represent the Science title:"
embeddings = model.encode([[instruction,sentence]])
print(embeddings)
高级用法
为自定义文本计算嵌入
如果你想为特定句子计算自定义嵌入,可以遵循统一模板编写指令:
Represent the domain
text_type
for task_objective
:
domain
是可选的,它指定文本的领域,例如科学、金融、医学等。
text_type
是必需的,它指定编码单元,例如句子、文档、段落等。
task_objective
是可选的,它指定嵌入的目标,例如检索文档、对句子进行分类等。
计算句子相似度
from sklearn.metrics.pairwise import cosine_similarity
sentences_a = [['Represent the Science sentence: ','Parton energy loss in QCD matter'],
['Represent the Financial statement: ','The Federal Reserve on Wednesday raised its benchmark interest rate.']]
sentences_b = [['Represent the Science sentence: ','The Chiral Phase Transition in Dissipative Dynamics'],
['Represent the Financial statement: ','The funds rose less than 0.5 per cent on Friday']]
embeddings_a = model.encode(sentences_a)
embeddings_b = model.encode(sentences_b)
similarities = cosine_similarity(embeddings_a,embeddings_b)
print(similarities)
信息检索
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
query = [['Represent the Wikipedia question for retrieving supporting documents: ','where is the food stored in a yam plant']]
corpus = [['Represent the Wikipedia document for retrieval: ','Capitalism has been dominant in the Western world since the end of feudalism, but most feel[who?] that the term "mixed economies" more precisely describes most contemporary economies, due to their containing both private-owned and state-owned enterprises. In capitalism, prices determine the demand-supply scale. For example, higher demand for certain goods and services lead to higher prices and lower demand for certain goods lead to lower prices.'],
['Represent the Wikipedia document for retrieval: ',"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"],
['Represent the Wikipedia document for retrieval: ','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.']]
query_embeddings = model.encode(query)
corpus_embeddings = model.encode(corpus)
similarities = cosine_similarity(query_embeddings,corpus_embeddings)
retrieved_doc_id = np.argmax(similarities)
print(retrieved_doc_id)
聚类
import sklearn.cluster
sentences = [['Represent the Medicine sentence for clustering: ','Dynamical Scalar Degree of Freedom in Horava-Lifshitz Gravity'],
['Represent the Medicine sentence for clustering: ','Comparison of Atmospheric Neutrino Flux Calculations at Low Energies'],
['Represent the Medicine sentence for clustering: ','Fermion Bags in the Massive Gross-Neveu Model'],
['Represent the Medicine sentence for clustering: ',"QCD corrections to Associated t-tbar-H production at the Tevatron"],
['Represent the Medicine sentence for clustering: ','A New Analysis of the R Measurements: Resonance Parameters of the Higher, Vector States of Charmonium']]
embeddings = model.encode(sentences)
clustering_model = sklearn.cluster.MiniBatchKMeans(n_clusters=2)
clustering_model.fit(embeddings)
cluster_assignment = clustering_model.labels_
print(cluster_assignment)
🔧 技术细节
本项目引入了 Instructor👨🏫,这是一个经过指令微调的文本嵌入模型。它的独特之处在于,无需进行任何微调,仅通过提供任务指令,就能生成适用于各种任务(如分类、检索、聚类、文本评估等)和领域(如科学、金融等)的文本嵌入。该模型在 70 个不同的嵌入任务中取得了最优成绩,可通过定制的 sentence-transformer
库轻松使用。用户可以根据统一模板编写指令,为特定句子计算自定义嵌入,还能利用这些嵌入进行句子相似度计算、信息检索和聚类等操作。
📄 许可证
本项目采用 apache-2.0
许可证。