提示工程

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

mm
将 Unite.AI 添加到您在 Google 上的首选来源

文本嵌入是捕捉词语、句子、段落或文档语义含义的向量表示。它们是许多自然语言处理(NLP)应用的核心构建块,包括信息检索、问答、语义搜索等。

向量嵌入

向量嵌入

最近的大型语言模型(LLM)如GPT-3的进展已经展示了其在少样本学习和自然语言生成方面的出色能力。我们可以利用LLM来推进文本嵌入的发展吗?在他们的论文《使用大型语言模型改进文本嵌入》中,微软的研究人员提出了一个新方法,通过使用LLM生成合成训练数据并对其进行微调,取得了更好的结果。

现有方法的挑战

传统的文本嵌入技术,如加权平均的词向量或TF-IDF,无法充分捕捉文本中的丰富的上下文信息。更近期的基于预训练语言模型的方法,如BERT,获得了更好的上下文感知嵌入。

然而,它们需要复杂的多阶段训练流程:

  • 预训练于数十亿弱标注或人工生成的文本对
  • 在有限的手工标注数据集上进行微调

这需要大量的计算资源和数据收集的人力。训练数据也受到多样性和语言覆盖范围的限制。例如,BEIR基准测试包括仅15个英语检索任务的数据集。

现有的方法主要使用较小的BERT风格的架构作为骨干模型。它们无法利用更先进的LLM和相关技术。

方法论:使用LLM生成合成数据

为了克服这些限制,研究人员提出了一个新颖的单阶段训练方法,利用LLM如GPT-3和GPT-4生成多样化的合成训练数据。

关键步骤是:

  1. 任务分类法: 定义一个分类法,将文本嵌入任务分为:
    • 非对称任务(查询和文档不是同义词,例如搜索)
    • 对称任务(查询和文档是同义词,例如语义相似性)
  2. 提示设计: 创建针对每种任务类型的提示模板,引导LLM生成相关的训练示例。
  3. 合成数据生成: 使用设计好的提示,LLM生成数十万个(查询,文档)对,涵盖93种语言的广泛语义任务。
  4. 模型训练: 在合成数据上微调一个强大的开源LLM,如Mistral,使用对比损失函数。

这种方法允许在没有人工标注工作的情况下创建大量的训练数据。通过利用LLM在预训练中已经嵌入的知识,我们可以合成高质量的数据,专门为文本嵌入而设计。

研究人员通过一个2步骤的提示策略来展示这一点:

  • 提示GPT-4提出潜在的检索任务

生成高级检索任务的提示

    生成高级检索任务的提示
  • 再次提示它生成(查询,文档)对,基于建议的任务

生成(查询,正,难负)三元组

    生成(查询,正,难负)三元组

一些关键的提示设计方面:

  • 自然语言提示,用于直观的人类式指令
  • 占位符,用于鼓励多样性(例如查询长度,清晰度,文档长度)
  • 合并来自多个模板的数据,用于相同的任务类型
  • 根据资源可用性对语言进行加权

总共,他们能够生成500k个文本嵌入示例,计算成本为180M令牌。主要语言是英语(43%),其次是波兰语,日语,意大利语等。

对于模型训练,他们选择微调开源的7B参数Mistral模型,而不是较小的BERT风格的架构。由于Mistral已经在大规模文本语料库上进行了预训练,因此不需要额外的对比预训练。添加它只带来了微小的改进。

整个微调过程不到1k步,使用了合成和人工标注的数据混合。这展示了该方法的样本效率。

结果

研究人员在MTEB基准测试上评估了他们的模型,涵盖了分类、聚类、语义相似性、摘要和信息检索等多样任务。

他们的模型比之前的最优结果平均提高了2.4分,在几乎每个类别中都创造了新的记录:

模型 之前的最优结果 提出的模型
分类 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具有生成高质量合成训练数据的出色能力,当合适地提示时,可以减少对人工标注数据的依赖。
  • 对于文本嵌入,仅微调已经预训练的模型如Mistral,而不需要对比预训练,提供了可忽略的改进。这是训练效率的一个重要见解。
  • 检索增强生成方法使LLM能够动态访问外部知识。因此,改进文本嵌入对于增强这些LLM非常有价值。
  • 仍然有显著的改进空间,尤其是在低资源语言上。多语言LLM的预训练可能有助于弥补这一差距。
  • 从概念上讲,语言建模和文本嵌入是同一枚硬币的两面——理解语言语义。通过合成数据提示,LLM可以被有机地微调为嵌入器,而无需复杂的流程。

一些有前途的未来工作方向包括:

  • 利用开源LLM如GPT-NeoX生成合成数据
  • 探索轻量级的后训练,以适应更长的上下文
  • 开发提示工程技术,以控制质量和任务覆盖范围
  • 改进推理延迟和存储成本,以适应工业使用

超越基准测试,使用大型语言模型来增强文本嵌入开启了令人着迷的可能性。随着LLM继续在自然语言处理方面进步,它们生成高保真合成数据的能力也可能会提高。

然而,关键的研究方向仍然需要将这一潜力转化为实际影响。

定制和控制

合成数据的一个关键优势是能够以编程方式生成定制的示例。正如论文所展示的,提示工程允许创建数十万个嵌入任务的训练数据。

然而,当前的提示设计实践仍然更像是一种艺术而不是科学。开发系统化、可复制的方法来精确控制生成数据的属性将会扩大这一技术的适用性。

例如,技术来调节复杂性、模糊性和新颖性的因素可以帮助解决下游任务的鲁棒性问题。动态提示生成以匹配不断演变的现实世界分布也是一个开放的挑战。

大规模训练

虽然预训练的LLM已经编码了大量的语言知识,但它们的数据生成能力可能会随着规模的增加而进一步增强。像GPT-4这样的模型,训练于数万亿令牌的互联网文本上,表现出强大的少样本学习能力,但尚未针对生成训练数据进行优化。

针对自监督数据生成的架构和目标可能会大大推进这一方法的质量和效率。有效地集成检索的知识以补充学习的知识也是一个有前途的方向。

多任务和多语言

正如论文所指出的,改进低资源语言的性能仍然是一个问题。与其预训练一个大型的LLM,不如训练一系列较小的专家模型,每个模型专门针对特定的数据模式或语言领域。

这种集成方法可以通过共享各个专家学习的表示来帮助提高对罕见任务和语言的覆盖范围。持续学习以扩展语言和任务专业知识随着时间的推移也是一个令人兴奋的前景。

总之,这篇论文介绍了一种创新性的从LLM生成训练数据来创建高性能文本嵌入的概念。他们的结果展示了这一方法的有效性,超越了之前的最优结果。随着LLM和合成数据技术的进步,利用它们的知识来训练嵌入器可能会成为一个非常有前途的方向。

我已经沉浸在了令人着迷的机器学习和深度学习世界中五年了。我的热情和专业知识让我为超过50个不同的软件工程项目做出了贡献,特别关注AI/ML。我的持续的好奇心也让我对自然语言处理产生了兴趣,这是一个我渴望进一步探索的领域。