用LLM来做向量表征(embedding)的解答一、概述最近,E5-mistral-7b-instruct模型在MTEB(Multilingual Text Embedding Benchmark)竞赛中取得了显著成绩,其通过采用大型语言模型(LLM)来进行向量表征任务,实现了比第二名高出2%的效果。这一方法的核心在于利用LLM生成向量化任务的人造数据,并通过对比学习进行微调。二、核心方法数据生成头脑风暴候选任务:给定一些示例,让大模型针对给定的示例头脑风暴一个候选向量任务的池子。生成任务数据:为每一个任务,设置多个prompt模板,并随机选择模板参数(如query长度、语言)以提高生成数据的多样性。具体分为不对称任务和对称任务两种。不对称任务:query和doc语义相关,但不是彼此的释义。根据长度划分为短-长、短-短、长-短、长-长匹配四个细粒度,并为每个细粒度设计了两阶段的prompt模板。对称任务:query和doc语义相关,但表达方式不同。包括单语匹配和多语匹配,定义了不同的prompt模板并直接一个阶段生成数据。模型训练输入处理:针对不同的任务,给query侧加上任务定义的指令,doc侧不加。输入到LLM中,拿EOS token的向量作为整个句子的表示。损失函数:使用典型的对比学习,infoNCE loss。batch内随机负例+难负例。难负例挖掘:对于LLM生成的人造数据,让大模型自己生成难负例;对于开源数据集,用e5-base去挖掘top100的难负例。三、实验结果与分析生成数据统计总共生成了50w个数据,15w个不同的指令。其中25%来自GPT3,其他来自GPT4。训练数据与参数使用50w的人造数据+180w的公开数据(部分采样)进行训练,每个训练数据包括query、pos_doc、hard_neg_doc。模型训练了一个epoch。主要实验结果仅使用人造数据,达到与其他模型可比的结果;当使用人造数据和开源的标注数据微调时,达到了MTEB的SOTA,比第二名高了2%。多语言结果对比显示,高资源语言效果优于其他模型,低资源语言效果较差,主要因为mistral-7b主要训练在英文上。对比学习预训练效果对比encoder类模型,对比学习预训练很有效果,提升了5.7个点;但对于decoder类模型,效果微弱。超参数分析初始化时,Mistral-7B比llama-2 7b更有优势;指令对效果影响很大,尤其对检索任务和STS任务。四、核心认知与Insight作者认为,生成式大语言模型和向量化任务是一枚硬币的正反面,都要求模型对自然语言有深刻的理解。生成式大语言模型采用自回归的预训练方式,在更多的数据上微调过,可以更好地表征句子。通过为不同的任务使用不同的prompt,可以对同一个query生成新的向量,而无需微调模型或重新构建文档索引。这种方法为句子得到了针对具体任务的向量表示,针对同一个query,任务不同,可以生成不同的向量,作者认为这种向量针对具体任务会更好。五、图片展示综上所述,E5-mistral-7b-instruct模型通过采用LLM进行向量表征任务,实现了显著的效果提升。其核心在于利用LLM生成高质量的人造数据,并通过对比学习进行微调。这种方法为自然语言处理领域带来了新的启示和思路。



































