概述
引入了 INSTRUCTOR,一种计算给定任务指令的文本嵌入的新方法:每个文本输入都与解释用例的指令(例如任务和域描述)嵌入在一起。与之前工作中更专业的编码器不同,INSTRUCTOR 是一个单一的嵌入器,可以生成针对不同下游任务和领域的文本嵌入,无需任何进一步的培训。首先对 330 个不同任务的指令进行注释,并在这种多任务混合上使用对比损失来训练 INSTRUCTOR。在 70 个嵌入评估任务(其中 64 个在训练过程中看不见)上评估 INSTRUCTOR,范围从分类和信息检索到语义文本相似性和文本生成评估。INSTRUCTOR 虽然参数比之前的最佳模型少了一个数量级,但却实现了最先进的性能,与之前在 70 个不同数据集上的最佳结果相比,平均提高了 3.4%。分析表明,INSTRUCTOR 对指令的变化具有鲁棒性,并且指令微调减轻了在不同数据集上训练单一模型的挑战。
使用INSTRUCTOR通过自定义嵌入来计算两组句子之间的相似性
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)
参考文献
- code:https://github.com/xlang-ai/instructor-embedding
- paper:One Embedder, Any Task: Instruction-Finetuned Text Embeddings