一、什么是Embedding:向量嵌入技术概述
Embedding(向量嵌入)是当代人工智能特别是自然语言处理和信息检索领域最核心的基础技术之一。其核心思想是将离散的符号(如单词、句子、图像、音频片段)映射到连续的向量空间中,使得语义相似的实体在向量空间中彼此靠近。这种映射不是简单的编码,而是通过大量数据训练得到的、能够捕捉深层语义关系的分布式表示。
从数学角度看,Embedding是一个从离散符号空间到连续向量空间的映射函数 f: S → R^d,其中S是符号集合(如词汇表),R^d是d维实数向量空间。早期的词表示方法如One-hot编码将每个词表示为一个高维稀疏向量(维度等于词汇表大小),这种表示存在维度灾难问题,且无法捕捉词与词之间的语义关系。Embedding技术通过低维稠密向量(通常128维到4096维)来表示词,不仅大幅降低了维度,更重要的是使得向量之间的距离(如余弦相似度)能够反映词之间的语义相似度。
Embedding技术的发展经历了多个重要阶段。2013年Google提出的Word2Vec开创了神经网络词嵌入的先河,通过Skip-gram和CBOW两种模型架构,利用上下文预测目标词或利用目标词预测上下文,从而学习到词的分布式表示。随后,2014年Stanford提出的GloVe(Global Vectors)从矩阵分解的角度出发,利用全局词共现统计信息来学习词向量。2016至2017年,FastText进一步将子词信息(subword n-grams)引入词嵌入,有效解决了未登录词(out-of-vocabulary)问题。2018年是Embedding技术的分水岭,ELMo和BERT等模型引入了上下文相关的动态词嵌入,使得同一个词在不同语境下可以有不同的向量表示,彻底解决了传统静态词嵌入的歧义问题。
在信息检索领域,Embedding技术支撑了语义搜索(Semantic Search)的诞生。传统的关键词匹配搜索(如TF-IDF、BM25)只能进行字面匹配,无法理解查询意图和文档语义。而基于Embedding的语义搜索将查询和文档都映射到同一个向量空间,通过计算向量相似度来匹配语义相关的文档,实现了真正的语义理解。这一技术在Google搜索、Bing、百度等主流搜索引擎中得到了广泛应用,也是当前Retrieval-Augmented Generation(RAG)系统的核心技术基础。
Embedding技术的应用远不止于文本。在计算机视觉领域,图像也可以通过卷积神经网络(CNN)或视觉Transformer(ViT)被嵌入到向量空间中,使得相似的图像在向量空间中距离较近。在推荐系统中,用户和物品(商品、视频、音乐等)都可以用Embedding表示,通过向量相似度计算来实现个性化推荐。在图神经网络(GNN)中,节点和边也可以被嵌入到向量空间,用于链路预测、节点分类等任务。近年来,多模态Embedding技术更是将文本、图像、音频、视频等不同模态的数据映射到同一个向量空间中,使得跨模态检索和生成成为可能,如CLIP(Contrastive Language-Image Pre-training)模型能够实现文本和图像的统一向量表示。
二、Embedding的数学基础:向量空间与分布式表示理论
Embedding技术的理论基础可以追溯到语言学中的分布式假说(Distributional Hypothesis),该假说由英国语言学家J.R. Firth在1957年提出,其核心观点是’一个词的语义由其上下文决定’(You shall know a word by the company it keeps)。这一思想在信息论和统计学习理论中得到了进一步的发展,成为了现代词嵌入技术的理论基石。
从线性代数的角度来看,Embedding向量存在于一个高维向量空间中。在这个空间中,每一维都代表了某种潜在的语义特征,虽然这些特征通常无法直接解释(因此被称为’分布式表示’或’稠密表示’)。重要的是,这些向量之间可以进行向量运算,最著名的例子是Word2Vec发现的’语义算术’现象:king – man + woman ≈ queen。这种向量运算的合理性源于向量空间中语义关系的线性结构,即语义关系(如性别、时态、复数等)可以在向量空间中表现为特定的方向向量。
向量空间模型(Vector Space Model, VSM)最早由Salton等人在1970年代提出,用于信息检索。在传统的VSM中,文档被表示为词频向量(term frequency vector),但这种表示非常稀疏且高维。现代Embedding技术可以看作是对VSM的深化和发展,通过神经网络或矩阵分解等方法,将高维稀疏的离散表示转化为低维稠密的连续表示。这种转化不是简单的降维,而是一个特征学习和语义抽象的过程。
从概率论的角度,Embedding可以被理解为对条件概率分布 P(context|word) 或 P(word|context) 的一种参数化表示。在Word2Vec的Skip-gram模型中,目标函数是最大化给定中心词时上下文中各词出现的概率;而在CBOW模型中,目标函数是最大化给定上下文时中心词出现的概率。通过优化这些目标函数,模型学习到的词向量实际上编码了词与词之间的统计依赖关系。
近年来,对比学习(Contrastive Learning)成为了Embedding技术的重要理论基础。对比学习的核心思想是通过构造正样本对(语义相似的样本)和负样本对(语义不相似的样本),训练模型使得正样本对在向量空间中靠近,而负样本对远离。这一思想在句子嵌入(如Sentence-BERT)、图像嵌入(如SimCLR)和多模态嵌入(如CLIP)中都取得了巨大的成功。对比学习框架下,Embedding的训练目标可以表示为InfoNCE损失函数,该函数最大化正样本对的互信息,从而学习到更具判别性的向量表示。
流形学习(Manifold Learning)理论为Embedding技术提供了另一个重要的视角。流形学习假设高维数据实际上分布在一个低维流形上,Embedding的过程就是从观测空间到流形空间的映射。在这个视角下,Transformer等深度模型可以被理解为复杂的非线性流形映射函数,将离散的符号序列映射到连续的语义流形上。这一理论不仅解释了为什么低维Embedding能够捕捉高维数据的本质结构,也为设计更好的Embedding模型提供了理论指导。
三、Word2Vec时代:神经网络语言模型的突破
2013年是自然语言处理领域的里程碑之年,Google的Tomas Mikolov团队连续发表了两篇论文,提出了Word2Vec模型,彻底改变了词表示的范式。Word2Vec包含两个主要的模型架构:Continuous Bag-of-Words(CBOW)和Skip-gram。这两种架构都基于神经网络语言模型,但训练目标和计算效率有所不同。
CBOW模型的思路是利用上下文来预测中心词。具体来说,给定一个长度为T的文本序列 w_1, w_2, …, w_T,对于位置t的中心词w_t,其上下文是窗口大小为c的周边词。CBOW模型将这些上下文词的One-hot向量取平均(或求和),然后通过一个线性变换(实际上是查表操作)映射到隐藏层,再经过输出层的Softmax分类器来预测中心词。CBOW的训练目标是最大化 P(w_t | context)。
Skip-gram模型则采用了相反的思路:利用中心词来预测其上下文。对于给定的中心词w_t,Skip-gram模型将其映射到隐藏层,然后独立地预测每个上下文位置上的词。其训练目标是最大化 P(w_{t+j} | w_t),其中 j 属于上下文窗口范围。从计算效率上看,Skip-gram在低频次词和短语的表示上表现更好,而CBOW在大规模语料上训练速度更快。
Word2Vec的高效训练离不开两项关键技术的引入:负采样(Negative Sampling)和层次Softmax(Hierarchical Softmax)。原始的Word2Vec模型在输出层使用Softmax函数,其计算复杂度与词汇表大小V成正比(O(V)),当V达到百万级别时,训练变得不可行。负采样技术通过将上述多分类问题转化为二分类问题来降低计算复杂度:对于每个正样本(中心词-上下文词对),随机采样K个负样本(中心词与非上下文中词的对),然后训练一个逻辑回归分类器来区分正样本和负样本。
层次Softmax则是利用霍夫曼树(Huffman Tree)来组织词汇表中的词,将Softmax的O(V)复杂度降低到O(log V)。在霍夫曼树中,每个叶节点对应一个词,每个内部节点对应一个二分类器。从根节点到叶节点的路径上的每个二分类器都在判断应该走左子树还是右子树,从而将预测问题转化为一系列二分类问题。由于霍夫曼编码的性质,高频词在树中的路径更短,进一步提高了训练效率。
Word2Vec的成功不仅在于其高效的训练算法,更在于它首次证明了神经网络词嵌入能够捕捉丰富的语义和句法信息。Mikolov等人在论文中展示了大量令人震撼的例子:通过向量运算,可以实现语义类比推理(如’国王’-‘男人’+’女人’=’女王’)、句法关系推理(如’run’-‘running’+’swim’=’swimming’)等。这些发现激发了学术界和工业界对词嵌入技术的广泛研究,开启了Embedding技术的黄金时代。Word2Vec的训练语料通常来自Google News等大规模文本语料,词汇表大小约为300万,词向量维度通常为300维。
四、从静态到动态:上下文相关的Embedding演进
Word2Vec和GloVe等早期词嵌入技术存在一个根本性的缺陷:它们为每个词分配一个固定的向量表示,无法处理一词多义(polysemy)问题。例如,’bank’这个词既可以表示’银行’,也可以表示’河岸’,但在Word2Vec中,这两个语义被混合在了一个向量中。此外,静态词嵌入无法捕捉词义随上下文变化的细微差别,也无法处理同形异义词(homonymy)问题。这些局限性促使研究者们探索能够根据上下文动态生成词嵌入的模型。
2018年,Matthew Peters等人提出了ELMo(Embeddings from Language Models),这是第一个真正意义上的动态上下文词嵌入模型。ELMo的核心思想是利用双向语言模型(Bidirectional Language Model, BiLM)来生成词表示。与传统的单向语言模型(只能利用上文信息)不同,BiLM同时训练一个前向语言模型(利用上文预测下一个词)和一个后向语言模型(利用下文预测上一个词)。对于输入句子中的每个词,ELMo提取预训练BiLM中每一层的隐藏状态,然后将这些隐藏状态进行加权求和,得到该词的上下文相关表示。
ELMo的一个重要设计是采用了多层表示(multi-layer representation)。在深度神经网络中,不同层的隐藏状态捕捉了不同层次的语言学信息:较低的层更多捕捉句法信息(如词性标注、句法分析),较高的层更多捕捉语义信息(如词义消歧、语义角色标注)。通过将不同层的表示进行线性组合(权重由下游任务学习得到),ELMo能够灵活地适应不同的NLP任务。实验表明,将ELMo嵌入与任务特定的模型相结合,能够在多个NLP基准数据集上取得显著的性能提升。
几乎在同一时期,Google的Jacob Devlin等人提出了BERT(Bidirectional Encoder Representations from Transformers),将上下文相关Embedding技术推向了新的高度。BERT基于Transformer架构的编码器部分,通过掩码语言模型(Masked Language Model, MLM)和下一句预测(Next Sentence Prediction, NSP)两个预训练任务来学习深度双向表示。MLM任务随机掩盖输入中15%的词,然后让模型预测被掩盖的词;NSP任务则让模型判断两个句子是否在原始文本中连续出现。这两个任务的结合使得BERT能够学习到丰富的语言知识。
BERT的成功催生了大量的变体和改进模型。RoBERTa通过去除NSP任务、使用更大的训练数据和动态掩码策略,进一步提升了性能。ALBERT通过参数共享和因式分解技术,在大幅减少参数量的同时保持了模型性能。ELECTRA则提出了一种更高效预训练方法:通过训练一个生成器来替换输入中的一些词,然后训练一个判别器来判断每个词是否被替换,这种方法在同等计算预算下取得了更好的效果。这些模型都在各自的维度上推进了上下文Embedding技术的发展。
上下文相关Embedding技术的核心优势在于其能够捕捉词义的语境依赖性。以BERT为例,对于句子’我今天去银行取钱’和’我坐在河岸上钓鱼’,’银行’和’河岸’虽然都源自同一个英文单词’bank’,但在BERT的向量表示中会被映射到向量空间中完全不同的位置,从而实现了词义消歧。这种能力对于机器翻译、问答系统、文本理解等需要深层语义分析的任务至关重要。此外,上下文Embedding还为跨语言语义对齐提供了可能:通过多语言BERT(mBERT)等模型,不同语言的语义相似的词在向量空间中可以被对齐到相近的位置,为多语言NLP任务提供了统一的特征表示。
五、句子与文档级别的Embedding技术
词级别的Embedding虽然是构建NLP系统的基础,但在许多实际应用场景中,我们需要将整个句子或文档表示为向量。例如,在语义相似度计算、文本分类、文档检索、聚类等任务中,输入单元是句子或文档,而非单个词。如何将词级别的Embedding聚合为句子或文档级别的Embedding,成为一个重要的研究方向。
最简单的方法是对句子中所有词的Embedding取平均(Average Pooling)或取最大值(Max Pooling)。这种方法虽然简单高效,但存在明显缺陷:它忽略了词序信息和词的重要性差异,且当句子长度变化时,平均操作会导致向量长度不一致的问题(虽然可以通过除以词数来归一化)。尽管如此,在一些基准数据集上,简单的平均池化配合高质量的词嵌入(如Word2Vec或GloVe)仍然能够取得不错的效果,这被称为’句向量(Sentence Vector)的朴素方法’。
2015年,Google的Quoc Le和Tomas Mikolov提出了Paragraph Vector(又称Doc2Vec),将Word2Vec的思想扩展到了段落级别。Doc2Vec有两个不同的模型架构:Distributed Memory(DM)和Distributed Bag of Words(DBOW)。DM模型在训练时,将段落向量与上下文词向量一起作为输入,来预测中心词;DBOW模型则利用段落向量来预测段落中的随机词。训练完成后,每个段落都有一个固定的向量表示。Doc2Vec的优点是可以处理变长文本,且不需要依赖外部标注数据;缺点是在推理阶段(推断新文档的向量)需要额外的梯度下降训练,效率较低。
随着BERT等预训练语言模型的兴起,基于Transformer的句子Embedding方法成为了主流。Sentence-BERT(SBERT)通过对BERT进行微调,使用孪生网络(Siamese Network)或三重网络(Triplet Network)结构,使得语义相似的句子在向量空间中彼此靠近。具体来说,SBERT将句子对分别输入BERT,提取CLS标记的隐藏状态或对所有词向量的平均作为句子表示,然后计算两个句子表示之间的余弦相似度,并使用对比损失(Contrastive Loss)或三元组损失(Triplet Loss)来训练模型。实验表明,SBERT在语义文本相似度(STS)任务上的表现远超直接使用BERT的CLS向量。
除了SBERT,还有一些其他重要的句子Embedding方法。Universal Sentence Encoder(USE)由Google提出,采用了Transformer架构和自注意力机制,通过多任务学习(包括自然语言推理、翻译任务等)来训练句子编码器。SimCSE(Simple Contrastive Learning of Sentence Embeddings)则提出了一种极其简单但有效的对比学习方法:对同一句子进行两次不同的Dropout掩码操作,构造正样本对,然后训练模型使得这些正样本对在向量空间中靠近。这种方法不需要任何标注数据,仅利用Dropout的随机性就可以实现有效的句子Embedding学习。
文档级别的Embedding面临更多的挑战:文档通常很长(可能有数千词),直接输入BERT等模型会受到最大序列长度(通常为512个token)的限制。解决这个问题的方法主要有以下几种:第一种是将文档切分为多个段落,分别对每个段落进行Embedding,然后对段落Embedding进行聚合(如取平均、加权平均、或训练一个小型神经网络来进行聚合);第二种是使用能够处理的更长序列的模型,如Longformer、BigBird等;第三种是利用层次化的方法,先得到句子Embedding,再通过注意力机制或递归神经网络来得到文档Embedding。近年来,随着大语言模型(LLM)的发展,利用GPT等生成式模型来得到文档的向量表示也成为一个重要的研究方向。
六、多模态Embedding:跨越文本、图像与音频的统一向量空间
多模态Embedding是近年来人工智能领域最激动人心的研究方向之一。其核心目标是将不同模态的数据(文本、图像、音频、视频等)映射到同一个向量空间中,使得不同模态之间可以进行直接的相似度计算和语义对齐。这一技术在跨模态检索(如用文本搜索图像、用图像搜索文本)、视觉问答(Visual Question Answering)、图像描述生成(Image Captioning)、多模态生成等任务中发挥着关键作用。
CLIP(Contrastive Language-Image Pre-training)是OpenAI于2021年提出的多模态Embedding模型,在多模态学习领域引起了巨大反响。CLIP的架构包含两个编码器:一个文本编码器(基于Transformer)和一个图像编码器(基于ResNet或ViT)。训练时,CLIP从互联网上收集了4亿个(图像,文本)对,对于每个批次(batch)中的N个(图像,文本)对,CLIP计算所有图像Embedding和所有文本Embedding之间的余弦相似度,形成一个N×N的相似度矩阵。这个矩阵的对角线元素对应于正确的(图像,文本)对,非对角线元素对应于不匹配的对。CLIP通过对比损失函数,最大化对角线元素的相似度,同时最小化非对角线元素的相似度,从而学习到统一的文本-图像向量空间。
CLIP的一个重要特性是零样本迁移能力(zero-shot transfer)。由于在预训练阶段见过了大量的(图像,文本)对,CLIP能够将图像分类问题转化为文本-图像检索问题:对于给定的图像,计算它与所有类别名称的文本Embedding的相似度,然后将图像分类为相似度最高的类别。实验表明,CLIP在ImageNet等30多个计算机视觉基准数据集上取得了与完全监督模型相媲美或更好的零样本分类性能,这证明了多模态预训练的强大泛化能力。
除了CLIP,还有其他一些重要的多模态Embedding模型。ALIGN(Google)使用了更大的噪声(图像,文本)对数据集(18亿对),证明了简单的对比学习方法在大规模弱监督数据上同样能够学习到高质量的多模态Embedding。FLAVA(Facebook)则采用了更加精细的架构设计,包含图像编码器、文本编码器和多模态编码器三个部分,通过掩码预测等多任务学习目标来训练。BLIP则在CLIP的基础上引入了生成式目标,使得模型不仅能够进行跨模态检索,还能够生成图像描述。
在音频-文本多模态Embedding方面,CLAP(Contrastive Language-Audio Pre-training)将CLIP的思想应用到了音频领域,通过对比学习将音频片段和文本描述映射到同一个向量空间。在视频-文本多模态Embedding方面,VideoCLIP将CLIP扩展到了视频领域,通过处理视频帧序列和文本描述来学习视频-文本对齐。这些方法共同推动了多模态Embedding技术的发展,使得AI系统能够同时理解和处理多种类型的数据。
多模态Embedding技术在实际应用中面临着若干重要挑战。首先是模态之间的差异性问题:文本是离散的符号序列,图像是连续的像素矩阵,音频是时域信号,如何设计一个统一的架构来有效处理这些不同性质的数据是一个开放问题。其次是语义对齐的模糊性问题:同一段文本可能对应多幅不同的图像(如’一只猫’可以对应无数张猫的图片),同一幅图像也可以用多种不同的文本来描述,这种一对多的对应关系使得训练目标的设计变得复杂。第三是数据质量问题:多模态数据通常需要从互联网上自动收集,不可避免地包含噪声和不准确的对齐,如何在噪声数据上训练出鲁棒的Embedding模型是一个重要的研究方向。尽管存在这些挑战,多模态Embedding技术已经在搜索引擎(如Google Lens)、内容推荐(如短视频平台的推荐算法)、辅助驾驶(多传感器融合)等实际系统中得到了广泛应用。
七、Embedding在RAG系统中的应用:检索增强生成的核心
Retrieval-Augmented Generation(RAG,检索增强生成)是当前大语言模型应用最重要的架构范式之一。RAG的核心思想是在生成回答之前,先从外部知识库中检索相关的信息,然后将这些信息作为上下文提供给语言模型,从而生成更准确、更及时的回答。在这一架构中,Embedding技术扮演着至关重要的角色:它负责将用户查询和知识库文档都映射到向量空间中,使得语义相关的查询和文档能够被准确匹配。
一个典型的RAG系统包含以下组件:向量数据库(Vector Database)、Embedding模型、检索模块、大语言模型和生成模块。当用户提出查询时,系统首先使用Embedding模型将查询转换为向量表示,然后在向量数据库中搜索与该查询向量最相似的文档向量(通常使用余弦相似度或欧氏距离),检索出Top-K个最相关的文档,最后将这些文档与原始查询一起拼接成提示词(prompt),输入到大语言模型中来生成最终回答。在这个流程中,Embedding模型的质量直接决定了检索的准确性,而检索的准确性又直接影响了最终生成回答的质量。
向量数据库是RAG系统的基础设施,专门用于存储和检索高维向量。目前主流的向量数据库包括Pinecone、Weaviate、Qdrant、Milvus、Chroma、FAISS等。这些数据库都支持高效的近似最近邻搜索(Approximate Nearest Neighbor Search, ANNS),能够在毫秒级别从数百万甚至数十亿个向量中检索出最相似的向量。ANNS算法主要包括基于图的算法(如HNSW,Hierarchical Navigable Small World)、基于量化的算法(如PQ,Product Quantization)、基于树的算法(如ANNOY)和基于哈希的算法(如LSH,Locality-Sensitive Hashing)。这些算法在检索速度和检索精度之间提供了不同的权衡,用户可以根据具体应用场景进行选择。
在RAG系统中,Embedding模型的选择是一个关键决策。目前常用的Embedding模型包括OpenAI的text-embedding-ada-002、Cohere的Embedding模型、Sentence-BERT系列模型(如all-MiniLM-L6-v2)、以及专门针对中文优化的模型(如m3e-base、bge-large-zh等)。这些模型在不同的语言和任务上表现各异。例如,在中文语义检索任务上,bge-large-zh(由BAAI开发)是目前性能最好的开源Embedding模型之一,其在C-MTEB基准上的综合得分超过了多数商业模型。在选择Embedding模型时,需要考虑的因素包括:语言覆盖、向量维度、推理速度、内存占用、以及在目标领域上的检索精度。
RAG系统中的一个重要技术是分块(Chunking):由于大语言模型的上下文窗口限制(即使是GPT-4也只有128K token的上下文窗口),以及向量检索的精度要求,需要将长文档切分为适当大小的块(chunk),然后对每个块分别进行Embedding。常用的分块策略包括固定大小分块(如每512个token一个块,块间有重叠)、语义分块(根据语义边界如段落、章节进行分块)、递归分块(先按大粒度分块,再根据需要递归细分)等。分块大小的选择需要在检索精度和上下文完整性之间进行权衡:过大的块会引入噪声(块内包含与查询无关的信息),过小的块会丢失上下文(块内信息不完整)。
近年来,RAG技术还在不断演进。Hybrid RAG将向量检索与关键词检索(如BM25)相结合,利用向量检索捕捉语义相似性,利用关键词检索保证精确匹配,从而提升检索效果。Self-RAG引入了自我反思机制,让语言模型在生成过程中自主判断是否需要检索、以及检索结果是否相关。Corrective RAG则在检索到不相关结果时,能够自动进行网页搜索来获取更准确的信息。这些技术进步不断推动着RAG系统的性能边界,使得基于Embedding的语义检索成为连接大语言模型与外部知识的关键桥梁。随着多模态大模型的发展,多模态RAG(能够检索图像、音频、视频等)也逐渐成为新的研究热点。
八、向量检索与近似最近邻搜索算法详解
向量检索(Vector Retrieval)是指在高维向量空间中,给定查询向量q,从海量向量集合V中找出与q最相似的k个向量的过程。这一问题在理论上可以通过暴力搜索(Brute-force Search)来解决:计算q与V中每个向量的距离,然后排序取Top-k。但是,当向量维度d和向量数量n都很大时(如d=768, n=10亿),暴力搜索的计算复杂度O(n·d)是不可接受的。因此,近似最近邻搜索(Approximate Nearest Neighbor Search, ANNS)算法应运而生,通过牺牲一定的检索精度来大幅提升检索速度。
局部敏感哈希(Locality-Sensitive Hashing, LSH)是最早的ANNS算法之一。LSH的核心思想是设计一组哈希函数,使得在原始向量空间中相近的向量在经过哈希映射后,以高概率落入同一个哈希桶中;而不相近的向量则以高概率落入不同的哈希桶中。这样,在检索时只需要计算查询向量与同一个哈希桶中的向量的距离,而不需要与所有向量进行计算。LSH的关键在于哈希函数的设计:对于余弦相似度,可以使用随机超平面哈希(Random Hyperplane Hashing);对于欧氏距离,可以使用p稳定分布哈希(p-stable Distribution Hashing)。LSH的优点是理论保证较强,缺点是实际检索精度不够高,且需要仔细调节哈希函数的数量和数据结构。
乘积量化(Product Quantization, PQ)是另一种重要的ANNS算法,由Herve Jegou等人在2011年提出。PQ的基本思想是将高维向量空间分解为多个低维子空间,然后对每个子空间独立进行向量量化(Vector Quantization)。具体来说,对于一个d维向量,PQ将其划分为m个d/m维的子向量,然后对每个子空间训练一个码书(codebook),码书中包含256个聚类中心(每个子空间用8位来表示)。这样,每个子向量可以用其所属聚类中心的索引(一个字节)来表示,从而将d维浮点向量压缩为m个字节的紧凑表示。在检索时,通过查表(precomputed distance table)来快速计算查询向量与压缩向量之间的近似距离。PQ的优点是压缩率高、检索速度快;缺点是由于量化误差,距离计算不够精确。
分层可导航小世界(Hierarchical Navigable Small World, HNSW)是目前综合性能最好的ANNS算法之一,由Yury Malkov和Dmitry Yashunin在2018年提出。HNSW基于小世界理论(Small World Theory),该理论指出,在一个网络中,如果节点之间既有局部紧密连接(类似规则网络),又有少量长距离连接(类似随机网络),那么任意两个节点之间都存在很短的路径。HNSW通过构建一个多层图来实现高效的ANNS:底层包含所有的向量节点,每往上一层,节点的数量逐渐减少(类似于跳表Skip List的结构)。在检索时,从最顶层开始,找到该层中距离查询最近的节点,然后进入下一层,在该节点附近继续搜索,直到最底层。由于每一层的图都具有小世界性质,HNSW能够实现对数级别的检索复杂度,同时保持很高的检索精度。
倒排文件索引(Inverted File Index, IVF)是向量检索中常用的一种辅助结构。IVF首先对所有向量进行聚类(通常使用k-means算法),得到m个聚类中心;然后为每个聚类中心维护一个倒排列表,记录属于该聚类的所有向量。在检索时,先找到距离查询向量最近的若干个聚类中心,然后只在这些聚类中心的倒排列表中进行精确搜索。这样,大部分不相关的向量就被过滤掉了,从而大幅减少了距离计算的次数。IVF通常与PQ结合使用(称为IVF-PQ或IVFADC),在聚类的基础上进一步对向量进行乘积量化压缩,从而在保持较高检索速度的同时减少内存占用。
近年来,随着深度学习的发展,基于神经网络的ANNS算法也取得了重要进展。神经哈希(Neural Hashing)通过训练神经网络来学习数据依赖的哈希函数,使得哈希编码能够更好地保留原始向量的相似性结构。图神经网络(GNN)也被用于ANNS,通过在学习的图上进行智能的导航。此外,随着专用硬件(如GPU、TPU、FPGA)的发展,利用硬件加速来进行向量检索也成为一个重要的研究方向。Faiss(Facebook AI Similarity Search)是目前最流行的向量检索库,它实现了上述多种ANNS算法,并针对CPU和GPU进行了高度优化,能够支持十亿级别的向量检索。Milvus、Qdrant等向量数据库则在Faiss等底层库的基础上,提供了分布式部署、实时更新、混合检索等企业级功能。
九、Embedding技术的评估方法与基准数据集
如何科学、全面地评估Embedding模型的质量,是Embedding技术研究中的一个重要问题。一个好的Embedding模型应该在多个维度上表现良好:语义相似性判断能力、词义消歧能力、跨领域泛化能力、计算效率等。为了全面评估这些能力,研究者们构建了大量的基准数据集和评估方法。
词级别Embedding的评估方法主要分为两类:内部任务评估(Intrinsic Evaluation)和外部任务评估(Extrinsic Evaluation)。内部任务评估直接评估词向量的语义质量,不依赖于下游任务。最经典的内部评估方法是词义类比推理(Word Analogy Reasoning)任务,如前面提到的’king – man + woman ≈ queen’。Google提供了约14000个这样的类比推理问题,涵盖了语义类比(如国家-首都)和句法类比(如形容词比较级)。另一个重要的内部评估数据集是WordSim-353,它包含了353对词,每对词都由人类标注了相似度分数(1-10),评估时计算词向量余弦相似度与人工标注分数之间的Spearman相关系数。其他重要的词相似度数据集还包括SimLex-999、MEN、RW等。
外部任务评估则将词Embedding应用于具体的下游任务(如命名实体识别、情感分析、词性标注等),通过下游任务的性能来间接评估词Embedding的质量。这种评估方法更能反映Embedding模型在实际应用中的价值,但缺点是计算成本高,且下游任务的性能可能受到其他因素的影响(如模型架构、超参数等)。在实践中,通常将内部评估和外部评估结合使用,以获得更全面的评估结果。
句子和文档级别Embedding的评估主要依赖于语义文本相似度(Semantic Textual Similarity, STS)任务。STS任务的目标是判断两个句子在语义上的相似程度,通常使用1-5的评分标准(1表示完全不相关,5表示语义等价)。SemEval研讨会从2012年到2017年连续举办了STS比赛,产生了大量的标注数据。这些数据集被整合为STS Benchmark,成为评估句子Embedding模型的权威基准。此外,SentEval工具包提供了一个统一的评估框架,包含了17种不同的评估任务(包括二元分类、多类分类、回归、排序等),可以全面评估句子Embedding的各种能力。
近年来,随着Embedding技术在信息检索领域的广泛应用,专门针对检索任务的评估基准也应运而生。BEIR(Benchmark on Efficient Information Retrieval)是一个综合性的信息检索评估基准,包含了18个不同领域的数据集,涵盖了生物医学、金融、新闻、问答等多个领域。MTEB(Massive Text Embedding Benchmark)则是一个更大规模的评估基准,包含了8个嵌入任务(检索、聚类、分类、重排序等)和58个数据集,能够对文本Embedding模型进行全面而严格的评估。在MTEB排行榜上,可以看到各种Embedding模型的综合性能排名,这为模型选择提供了重要参考。
多模态Embedding的评估则更加复杂,需要同时考虑不同模态之间的对齐质量和每个模态内部的表示质量。对于图像-文本Embedding,常用的评估指标包括检索准确率(Recall at K,即正确结果出现在Top-K检索结果中的比例)、中位数排名(Median Rank)等。Flickr30K和MS-COCO是两个最常用的图像-文本检索数据集。对于视频-文本Embedding,YouCook2、MSR-VTT等数据集被广泛使用。除了检索任务,一些研究还提出了基于探针(Probing)的评估方法:训练一个简单的分类器,利用Embedding来预测各种语言学或视觉属性,从而评估Embedding中编码了哪些类型的信息。这种探针评估方法有助于理解Embedding模型的内在工作机制,为改进模型设计提供指导。
十、Embedding技术的未来发展趋势
Embedding技术作为人工智能的基础设施,正在以前所未有的速度发展。展望未来,我们可以预见以下几个重要的发展趋势:首先是向量维度的持续增长。早期的Word2Vec使用300维向量,BERT使用768维向量,GPT-3使用12288维向量,而最新的大语言模型(如GPT-4、Claude 3)使用的Embedding维度可能更高。更高的维度意味着更强的表示能力,但也带来了计算和存储开销的增加。如何在表示能力和计算效率之间取得更好的平衡,是一个重要的研究方向。
第二个趋势是稀疏Embedding(Sparse Embedding)的复兴。传统的Embedding是稠密的(每个维度都有非零值),但近年来,以SPLADE、COIL为代表的方法重新引入了稀疏性。稀疏Embedding中只有少数维度是非零的,这使得它可以与传统的倒排索引相结合,实现高效的混合检索。更重要的是,稀疏Embedding具有更好的可解释性:每个非零维度可以对应到一个具体的词或短语,从而让用户能够理解为什么某个文档被检索出来。这一特性在需要透明性和可解释性的应用场景(如法律、医疗)中尤为重要。
第三个趋势是个性化Embedding。传统的Embedding模型对所有用户使用相同的向量空间,但在推荐系统、个性化搜索等应用中,不同用户的语义空间可能存在差异。个性化Embedding通过引入用户特定的参数,使得同一个词或文档对不同用户有不同的向量表示。这一方向的研究还处于早期阶段,但已经显示出了令人期待的结果。例如,在个性化推荐中,通过学习用户特定的Embedding变换矩阵,可以显著提升推荐的相关性和多样性。
第四个趋势是持续学习和增量更新。现实世界是不断变化的,新词、新概念、新事件不断出现(如’新冠’、’元宇宙’等),而重新训练整个Embedding模型的计算成本非常高昂。持续学习(Continual Learning)和增量更新技术旨在解决这个问题:在不需要重新训练整个模型的情况下,高效地更新Embedding以适应新的数据分布。这一方向的研究包括弹性权重固化(Elastic Weight Consolidation)、梯度episodic记忆(GEM)等方法,以及针对Embedding模型的专用增量更新算法。
第五个趋势是与大语言模型的深度融合。随着大语言模型(LLM)的兴起,Embedding技术正在与LLM进行深度融合。一方面,LLM可以用来生成更高质量的Embedding:通过让LLM对文本进行改写、摘要、问答等处理,可以得到信息更丰富、噪声更少的Embedding。另一方面,Embedding技术也可以增强LLM的能力:通过检索增强生成(RAG),可以让LLM访问外部知识库;通过向量数据库,可以让LLM具有长期记忆。这种双向融合将进一步推动人工智能系统的发展,使其具备更强的知识获取、推理和生成能力。展望未来,Embedding技术将继续作为连接符号世界和连续向量世界的桥梁,在人工智能的道路上发挥不可替代的作用。








