Gecko:从大型语言模型中提取的多功能文本嵌入
该论文介绍了 Gecko,一个紧凑且多功能的文本嵌入模型,它通过两步蒸馏过程利用大型语言模型(LLM)的知识。主要思想是利用 LLM 生成多样化的合成数据,然后通过相同的 LLM 检索和重新标记正负例片段来提炼数据质量。
方法概述
Gecko 采用两步蒸馏过程,利用大型语言模型(LLM)生成高质量的合成训练数据。第一步侧重于使用 LLM 在少样本提示设置中生成多样化的查询和任务描述。LLM 读取一个大型采样网页片段,并为该任务生成任务描述和相关查询。此过程会产生各种跨不同领域和语言模式的查询-任务对。
在第二步中,使用预训练的嵌入模型从语料库中检索每个生成的查询的前 k 个最近邻片段。然后,这些检索到的片段由相同的 LLM 进行评分。这些分数用于选择正例和负例。与仅使用原始种子片段相比,此重新标记过程允许 Gecko 从更相关的正目标和更难的负例中学习。
通过这种方式,作者获得了 FRet(少样本检索)数据集。该过程如下所示:
为了 Gecko 的最终训练,FRet 数据集与几个学术数据集(如 Natural Questions、HotpotQA、FEVER 等)结合,所有这些数据集都格式化为包含任务描述、查询、正例片段和负例片段的统一结构。这种统一的数据集混合(涵盖问题回答、事实核查、文本蕴含等多种任务)随后用于微调 Gecko 模型。训练目标是对比损失,其中对于每个查询,模型尝试使正例片段更接近,同时将硬负例片段和其他批内负例推开。此外,通过将每个输入-标签对视为查询-正例片段,并使用其他标签实例作为负例,将分类数据集中的多任务目标整合进来。这使得 Gecko 能够在单个统一的训练过程中学习语义相似性和分类。
结果
在海量文本嵌入基准(MTEB)上,Gecko 即使在嵌入维度为 256 的情况下也取得了不错的成绩。嵌入维度为 768 的 Gecko 平均得分达到 66.31,与比它大 7 倍且嵌入维度高 5 倍的模型竞争。
通过改变用于训练的数据获得的结果也很有趣。仅在 FRet 上训练的 Gecko 表现出强大的性能,进一步强调了合成数据的重要性。
结论
通过利用 LLM 进行多样化的合成数据生成和重新标记,Gecko 在保持紧凑尺寸的同时,在多个文本嵌入任务上取得了强大的性能。欲了解更多信息,请参阅完整论文。
祝贺作者们的工作!
Lee, Jinhyuk, et al. "Gecko: Versatile Text Embeddings Distilled from Large Language Models." arXiv preprint arXiv:2403.20327 (2024)。