身为一名AI从业者,你一定深有感触:随着项目规模的增长,处理海量文本数据时总会遇到各种令人头疼的问题。比如用BERT生成的句子向量在计算相似度时,经常出现一些让人啼笑皆非的结果。

明明是在描述同一个概念的两个句子,计算出来的相似度却低得离谱。又或者在构建检索系统时,召回的结果质量总是差强人意,用户找到真正需要的信息要翻好几页。

这些问题背后的一个重要原因,是传统文本嵌入模型在语义理解能力上的局限。最近,一篇来自北京航空航天大学等机构的综述论文《LLMs are Also Effective Embedding Models引起了我的注意。

这篇论文系统地分析了如何利用大语言模型的强大语义理解能力来生成更好的文本嵌入表示。读完让我眼前一亮,或许这正是解决我们这些困扰的一个新思路。

从编码器到解码器:范式转变背后的深层逻辑

LLM也能做 embedding:从BERT到大语言模型的演变_语言模型

要理解为什么大语言模型能够在文本嵌入领域带来突破,我们需要先深入理解传统方法的局限性。以BERT为代表的编码器模型采用掩码语言建模(MLM)作为预训练目标。这种方法的核心思想是:随机掩盖掉输入文本中15%的词,然后让模型去预测这些被掩盖的词。

这种预训练方式虽然直观,但存在几个根本性的问题。首先,每次只能学习很小一部分词之间的关系。想象一下,如果你在学习一门外语,老师每次只让你填空练习中的几个词,而不去关注整个句子的结构和含义,学习效果显然会受限。

其次,这种随机掩码的方式可能会打断原本重要的语义关联。比如在"The capital of France is Paris"这个句子中,如果随机掩码"France"和"Paris",模型就难以学习到这个重要的地理知识关联。

与之相比,大语言模型采用的因果语言建模(CLM)就高明得多。它要求模型在任何位置都要能预测下一个可能出现的词。这就像是在做完形填空时,不是随机选择几个空去填,而是要求你从头到尾,每个位置都要思考下一个最合适的词是什么。这种方式迫使模型必须深入理解整个上下文的语义关系。

让我们通过一个具体例子来理解这种差异。假设有一个句子:"The new vaccine shows promising results in clinical trials"。

LLM也能做 embedding:从BERT到大语言模型的演变_显式_02

  • BERT可能会随机掩码"vaccine"和"trials",让模型预测这两个词。但对于中间的"promising results"这个关键短语,模型并不会特别关注它们之间的搭配关系。
  • 而GPT这样的模型会从头开始,预测每一个可能的下一个词。当预测到"promising"之后,模型需要理解这个词通常会跟什么样的词搭配,才能正确预测出"results"。

这个过程中,模型自然而然地学习到了更丰富的语义关联。

让LLM生成文本嵌入的两条技术路线

研究者们提出了两种获取文本嵌入的主要方法:直接提示法和微调法。这两种方法各有特点,适用于不同的应用场景。

LLM也能做 embedding:从BERT到大语言模型的演变_显式_03

1. 直接提示

直接提示法的核心思想是通过精心设计的prompt来引导模型生成语义表示。以PromptBERT为例,它使用了这样一个模板:"This sentence: '[X]' means [MASK]"。当我们输入一个句子替换[X]后,模型会尝试理解这个句子的核心含义,并在[MASK]位置生成一个能够概括这个句子的词。这个过程中,[MASK]位置的隐层表示自然而然地捕获了输入句子的语义信息。

这种方法的优势在于简单直接,无需额外训练。但它的效果很大程度上依赖于prompt的设计质量。一个设计不当的prompt可能会误导模型,生成无关的或者有偏的表示。比如如果使用"This sentence: '[X]' is about"这样的模板,模型可能会过分关注句子的主题,而忽视其他重要的语义特征。

2. 微调法

微调法则采用了更系统的训练方式。它的核心是构建高质量的训练数据,通过对比学习来优化模型生成嵌入的能力。具体来说,我们需要构造语义相近的句子对作为正样本,语义不相关的句子对作为负样本。然后通过最小化InfoNCE loss来训练模型,使得语义相近的句子在嵌入空间中的距离更近,语义不相关的句子距离更远。

这里的一个关键技术问题是如何构造有效的负样本。最简单的方法是随机采样,但这样得到的负样本往往太"容易"了,不足以让模型学到细腻的语义差异。一个更好的策略是使用"难"负样本,即那些表面上看起来相似,但实际语义不同的句子。比如对于描述某个科技产品的评论,一个好的负样本可能是描述另一个相似产品的评论,而不是一个完全不相关领域的文本。

面向特定场景的深度优化

LLM也能做 embedding:从BERT到大语言模型的演变_显式_04

当我们把文本嵌入技术应用到实际场景时,还会遇到一些特殊的挑战。比如如何处理长文本、多语言文本,以及如何在保持语义表示能力的同时提升系统效率

长文本处理方面,核心挑战是如何在有限的计算资源下捕获长距离依赖。传统的方法是简单地截断或者分块处理,但这样容易丢失重要的上下文信息。

Zhang等人提出的方法别出心裁,他们在文本中插入特殊的标记来捕获关键语义信息。这些标记就像是文本的"书签",帮助模型在处理长文本时能够抓住重点,不会迷失在细节中。

语言是人类最重要的交流工具,但不同语言之间存在着巨大的差异。如何让一个模型同时理解多种语言,并生成统一的语义表示,这是一个极具挑战性的问题。

研究者们提出的显式对齐和隐式对齐两种策略,就像是教外语时的两种方法。显式对齐相当于通过词典和语法规则来建立不同语言之间的映射,而隐式对齐则更像是通过大量阅读和实践来自然获得语言感觉。

实验结果表明,基于这些优化技术的LLM嵌入模型在各类评测基准上都取得了显著进展。在MTEB测试中,基于Mistral-7B的模型在分类、聚类、检索等任务上的综合得分达到了72.31分,这个成绩比基于BERT的传统方法提升了将近20个百分点。这意味着在实际应用中,我们能够获得更准确的文本相似度计算结果,构建更高质量的检索系统。

写在最后

技术的进步总是在解决一个问题的同时带来新的挑战。虽然LLM在文本嵌入领域展现出了巨大潜力,但我们仍然面临着效率和成本的考验。

一个高质量的LLM模型动辄就需要数十亿的参数,这对计算资源提出了很高的要求。如何在保持性能的同时提升效率,将是未来研究的重要方向。

好在研究者们已经开始探索各种优化方案,比如模型蒸馏、知识压缩等。相信随着技术的不断发展,我们终将找到平衡点,让更多应用能够用上高质量的文本表示技术。对于我们这些AI从业者来说,这无疑是一个充满机遇和挑战的时代。

论文链接:https://arxiv.org/abs/2412.12591