提示工程
使用大型语言模型训练改进的文本嵌入

文本嵌入是捕获单词、句子、段落或文档语义含义的向量表示。它们是许多自然语言处理(NLP)应用程序的核心构建块,包括信息检索、问答、语义搜索等。
最近,大型语言模型(LLM)如GPT-3在少样本学习和自然语言生成方面表现出了令人印象深刻的能力。我们可以利用LLM来推进文本嵌入的发展吗?在他们的论文《使用大型语言模型改进文本嵌入》中,微软的研究人员提出了一个新方法,通过使用LLM生成合成训练数据并对其进行微调,实现了优异的结果。
现有方法的挑战
传统的文本嵌入技术,如加权平均的词向量或TF-IDF,无法充分捕捉文本中的丰富上下文信息。最近基于预训练语言模型的方法,如BERT,获得了更好的上下文感知嵌入。
然而,它们需要复杂的多阶段训练流水线:
- 在数十亿弱标注或人工生成的文本对上预训练
- 在有限的手工标注数据集上微调
这需要大量的计算资源和数据收集的人力。训练数据在多样性和语言覆盖方面也受到限制。例如,BEIR基准测试包括仅15个英语检索任务的数据集。
现有方法主要使用较小的BERT风格的架构作为骨干模型。它们无法利用更先进的LLM和相关技术。
方法:使用LLM生成合成数据
为了克服这些限制,研究人员提出了一个新颖的单阶段训练方法,利用LLM如GPT-3和GPT-4生成多样化的合成训练数据。
关键步骤是:
- 任务分类法: 定义一个分类法,将文本嵌入任务分为:
- 非对称任务(查询和文档不是同义词,例如搜索)
- 对称任务(查询和文档是同义词,例如语义相似性)
- 提示设计: 创建针对每个任务类型的提示模板,指导LLM生成相关的训练示例。
- 合成数据生成: 使用设计好的提示,LLM生成数十万个(查询,文档)对,涵盖93种语言的各种语义任务。
- 模型训练: 在合成数据上对强大的开源LLM(如Mistral)进行微调,使用对比损失函数。
这种方法可以在不需要人工标注的情况下创建多样化任务和多语言的丰富训练数据。通过利用LLM在预训练中已经学习到的知识,我们可以合成高质量的数据,专门用于文本嵌入。
研究人员通过2步提示策略来展示这一点:
- 提示GPT-4建议潜在的检索任务
- 提示它生成(查询,文档)样本,基于建议的任务
一些关键的提示设计方面:
- 自然语言提示,用于直观的人类化指令
- 占位符,用于鼓励多样性(例如,查询长度,清晰度,文档长度)
- 结合多个模板的数据,用于相同的任务类型
- 根据资源可用性对语言进行加权
总共,他们能够以1.8亿令牌的计算成本生成50万个文本嵌入示例。占主导地位的语言是英语(43%),其次是波兰语、日语、意大利语等。
对于模型训练,他们选择对开源7B参数Mistral模型进行微调,而不是使用较小的BERT风格的架构。由于Mistral已经在大规模文本语料库上预训练,因此不需要额外的对比预训练。添加它只提供了微不足道的改进。
整个微调过程少于1k步,使用了合成和人工标注数据的混合。这表明了该方法的样本效率。
结果
研究人员在MTEB基准测试上评估了他们的模型,涵盖了分类、聚类、语义相似性、摘要和信息检索等多样任务。
他们的模型超越了之前的最优结果2.4分</strong%,在几乎每个类别中都创造了新的记录:
| 模型 | 之前的最优结果 | 提出的模型 |
|---|---|---|
| 分类 | 76.0 | 78.5 |
| 聚类 | 46.1 | 50.3 |
| 成对分类 | 87.1 | 88.3 |
| 重排 | 60.0 | 60.2 |
| 检索 | 54.3 | 56.9 |
| STS | 83.1 | 84.6 |
| 摘要 | 31.6 | 31.4 |
| 平均 | 64.2 | 66.6 |
值得注意的是,即使不使用任何标注数据,只训练在合成数据上,它也取得了具有竞争力的准确率——仅落后于全监督模型3.5分。这表明仅使用LLM生成文本嵌入的可行性,而无需人工标注。
研究人员还在多语言MIRACL基准测试上评估了他们的模型,涵盖了18种语言。他们的模型在高资源语言上超越了之前的最优结果,但在低资源语言上较弱。他们假设这可能通过更广泛地预训练LLM来缓解。
总之,使用LLM生成的合成数据训练的文本嵌入实现了新的最优结果,同时使用更简单、更高效的训练方法,相比之前的多阶段方法。通过进一步研究提示工程和合成数据质量,这种方法可能会显著推进多语言文本嵌入的发展。
分析
这项工作提供了几个有价值的见解:
- LLM如GPT-3和GPT-4在被适当提示时,具有生成高质量合成训练数据的令人印象深刻的能力,用于各种NLP任务。这可以减少对人工标注数据的依赖。
- 对于文本嵌入,使用对比预训练提供了微不足道的改进,相比仅微调已经预训练在大规模文本语料库上的模型,如Mistral。这是训练效率的一个重要见解。
- 检索增强生成方法使LLM能够动态访问外部知识。因此,改进文本嵌入对于增强这些LLM很有价值。
- 在低资源语言上仍然存在显著的改进空间。预训练在更具代表性的数据上的多语言LLM可能有助于弥补这一差距。
- 从概念上讲,语言建模和文本嵌入是同一枚硬币的两面——理解语言语义。通过合成数据提示,LLM可以被有机地微调为嵌入器,而无需复杂的流水线。
一些有前途的未来工作方向包括:
- 利用开源LLM,如GPT-NeoX,生成合成数据
- 探索轻量级的后训练,以适应更长的上下文
- 开发提示工程技术,以控制质量和任务覆盖
- 改进推理延迟和存储成本的方法,用于工业应用
超越基准测试,利用大型语言模型来增强文本嵌入,开启了令人着迷的未来可能性。随着LLM继续在自然语言方面进步,它们生成高保真合成数据的能力也可能会改进。
然而,仍然存在关键的研究方向,需要将这一潜力转化为实际影响。
定制和控制
合成数据的一个关键优势是能够以编程方式生成特定需求的示例。如论文所示,提示工程允许为数十万个嵌入任务创建训练数据。
然而,当前的提示设计实践仍然更像是一种艺术,而不是科学。开发系统化、可复制的方法,以精确控制生成数据的属性,将扩大这种技术的适用性。
例如,调节复杂性、模糊性和新颖性的因素的技术可能有助于解决下游任务中的鲁棒性问题。动态提示生成以匹配不断变化的实际分布也是一个开放性的挑战。
大规模训练
虽然预训练的LLM已经编码了大量的语言知识,但它们的数据生成能力可能会随着规模的增加而进一步增强。像GPT-4这样的模型,在数万亿令牌的互联网文本上训练,表现出了强大的少样本学习能力,但尚未针对生成训练数据进行优化。
针对自监督数据生成的架构和目标可能会显著推进这种方法的质量和效率。检索知识与学习知识的有效集成也是一个有前途的方向。
多任务和多语言
如论文所述,改进低资源语言的性能仍然是一个问题。与其预训练一个单独的大型LLM,不如训练一系列较小的专家模型,它们专门针对特定的数据模式或语言领域。
这种集成方法可以通过在专家之间共享表示来改进对罕见任务和语言的覆盖。随着时间的推移,持续学习以扩展语言和任务专业知识也是一个令人兴奋的前景。
总之,这篇论文介绍了一种创新性的概念,即从LLM生成合成数据来创建高性能的文本嵌入。他们的结果证明了这种方法的有效性,超越了之前的基准测试。随着LLM和合成数据技术的进步,利用它们的知识来训练嵌入器可能会成为一个非常有前途的方向。












