在AI理解世界的过程中,向量模型扮演着一个至关重要的角色,甚至可以说它是AI大模型用以构建和理解复杂数据的基础,也是对不同形态数据的一种标准化的“浓缩”。它能够将语言、图像、声音等多样化的信息,转化为一种通用的、数学化的表达形式,为AI开启一扇通往对世界智能理解与创造的大门。向量模型擅长将抽象的概念和具体的事物转化为一系列数值,这些数值在多维空间中按照特定的模式排列,形成了向量。
向量模型之所以重要,不仅因为它们为机器学习算法提供了一种高效的数据处理方式,更因为它们是实现可重用性、泛化性和灵活性的关键。在端到端的模型和我们之前提到过的Retrieval-Augmented Generation(RAG)模型中,向量模型的应用更是达到了前所未有的高度,极大地提升了AI的智能水平和应用范围。
今天这篇文章就来大白话给大家科普下这个AI和真实世界连通的桥梁-Embedding!
Embedding、词嵌入和向量模型的关系
“Embedding”、"词嵌入"和"向量模型"这些术语在自然语言处理(NLP)和机器学习中紧密相关,它们之间的关系如下:
Embedding(嵌入):
这是一个通用术语,指的是将数据(可以是词、句子、图像等)转换成数值向量形式的过程。这些向量捕捉了数据的某些特征或属性,使得机器学习算法能够处理。
词嵌入(Word Embedding):
词嵌入是特定于文本数据的嵌入形式,它将单词或短语转换成向量。这些向量能够表示单词的语义和语法特征,使得语义上相似的单词在向量空间中彼此接近。
向量模型(Vector Model):
向量模型通常指的是使用向量表示来处理数据的模型。在NLP中,这通常意味着使用词嵌入作为输入特征的模型。向量模型可以是用于分类、聚类、相似性度量等任务的任何机器学习或深度学习模型。
关系:
嵌入(Embedding) 可以应用于多种类型的数据,不仅限于文本,还可以是图像、声音等,而词嵌入特指文本中的单词或短语的嵌入。
词嵌入(Word Embedding) 是嵌入技术在文本处理领域的应用。词嵌入生成的向量成为向量模型的输入,向量模型利用这些向量来进行各种下游任务。
*向量模型(Vector Model) 是一个更广泛的概念,它不仅包括使用词嵌入的模型,还可以包括使用其他类型嵌入的模型。
一句话总结,词嵌入是嵌入技术在语言处理领域的具体实例,而向量模型则是利用这些嵌入向量进行任务处理的模型。在NLP中,词嵌入向量作为特征输入,使得向量模型能够理解和处理人类语言。
Embedding是什么
在AI的世界,万物皆可 Embedding。在推荐系统、自然语言处理和计算机视觉等领域,Embedding 是一个非常重要的概念。本质上是一种数据降维和特征提取的技术,大多数数据,特别是文本数据,都是高维且稀疏的,这对于大模型是很难理解和高效处理的,而Embedding通过将复杂的数据转换为更简单且容易被大模型理解的向量,来提高数据处理的效率和效果。
Embedding,通常称为嵌入,在机器学习和深度学习中,是一种将离散的或高维稀疏的数据转换为连续的、低维稠密的向量表示的技术。这种向量化表示有助于捕获原始数据的语义或上下文信息,并且通常用于各种下游任务,如分类、聚类、相似性度量等。
高维稀疏数据(High-Dimensional Sparse Data)
高维:指的是数据的维度高,即数据集可以按照很多不同的特征来描述。例如,在文本分析中,每个文本文档可以按照词汇表中的每个单词出现的次数来描述,如果词汇表很大,那么数据的维度就很高。
稀疏:指的是在所有可能的值中,只有少数几个是实际存在的,其余的都是零或缺失值。例如,在文本数据中,一个文档可能只使用了词汇表中的一小部分单词,其余的单词在该文档中没有出现,因此对应的值为零。
低维稠密向量(Low-Dimensional Dense Vectors)
低维:低维意味着数据的维度较少,这通常通过某种形式的降维技术实现,比如主成分分析(PCA)或t-SNE。
稠密:指的是向量中的大多数分量都是非零的。在这种情况下,数据点之间的差异主要通过非零值来体现,而不是通过零值的分布。
向量:在数学和计算机科学中广泛使用,指的是一个有序的数值列表,可以表示为一维数组。在机器学习中,向量常用于表示数据点的特征。
Embedding的魔力就在于,它能把各种形式以及不规则的数据,变成一个个有序的、容易被大模型理解和计算的数值向量,使得在这个连续的向量空间中,大模型能清楚地看到不同事物之间的相似之处和不同之处,以捕捉语义、特征或关系,来提高数据处理的效率和效果。
这样的方式不仅简化了数据结构,还保留了数据的重要特征和模式。在文本处理领域,word embedding(词嵌入)技术经过训练后,能够使语义上相似的单词在向量空间中彼此靠近,而语义差异较大的单词则相隔较远。
图解Embedding的原理
举个例子来看,假设每个单词都可以用𝑛*n个特征进行表示,如下图所示,我们使用图中的这5个特征来刻画”狗”、”蜈蚣”、”君子兰”和”填空”这几个词。
显然,有了这些特征去构建词向量,我们能够根据这些特征比较容易地去划分单词的类别,比如”狗”和”蜈蚣”均是动物,在这个角度上说是一类的,他们之间的距离应该要比”狗”和”君子兰”近。
再看个例子,可以依据猫的长短、体型特征,将猫映射到一个二维坐标系中来可视化猫猫之间的差异
以此类推,我们可以不断增加特征维度,比如眼睛大小,毛发颜色,甚至更加抽象的黏人性等等,我们使用的维度越多,对猫的区分性也就越强,同时坐标点所在的空间维度也就越高。我们在回到词向量上来,按照同样的想法,可以使用这𝑛n个特征来刻画每个单词,并且这𝑛n个特征是浮点类型的,这样可以拓宽表示范围。当我们将视角切换到𝑛n维空间,那么每个词向量其实就相当于是该𝑛n维空间的一个点,相当于是将该单词嵌入到该空间中。
当然我们通常是无法穷举具体的特征类别的,所以在NLP领域一般直接将模型表示为长度为𝑛*n的向量让模型去训练,只是每个向量维度具体代表什么含义是不好去解释的,上面的表格列名是我们举的例子方便大家理解,真实在大模型训练时是不可解释的。如下图左边部分。
右图展示了关于词向量的一些例子,当我们将词向量训练好之后,我们可以看到France, England, Italy等国家之间比较近,并形成一个小簇;dog, dogs,cat,cats形成一个小簇。簇内的单词语义相近,距离一般会比较近,不同簇的单词表示含义香茶较大,距离也就会比较远。
除了文字,图片也可以进行向量的处理
总结来捉,Embedding 是文本的固定长度数值表示,这使得计算机能够轻松地测量文本之间的语义相关性。它们是一些重要自然语言处理(NLP)任务的核心,比如文本相似性、语义搜索、信息检索和重新排序、聚类、下游任务的特征提取等。举几个真实场景的例子大家感受一下:
内容审核: 通过比较社交媒体上的消息与已知的滥用或不当言论案例的相似度,帮助识别和过滤不当内容。
意图分析: 在对话系统或聊天机器人中,通过匹配用户输入的消息与预设的意图类别,确定用户的真实需求或目的。
情感分析: 通过分析文本与已知情感标签的相似度,自动判断文本的情感倾向,如积极、消极或中性。
推荐系统: 通过计算用户偏好与物品特征之间的相似度,为用户推荐可能感兴趣的内容或产品。
稍微扩展一点,将文本转换为词嵌入矢量的算法有很多,例如Word2Vec,GloVe,WordRank,fastText等。所有这些算法都提供了多种单词矢量表示形式,但可以将它们直接输入到NLP模型中。这些算法的用法取决于我们要执行的任务的类型,例如,如果我们要执行单词相似性任务,并且要输出可互换的单词,则应使用Word2Vec,否则,如果我们要输出相关的属性到一个特定的单词,那么我们应该选择WordRank。
Embedding技术的应用不仅限于文本数据。在图像、音频和其他类型的数据中,类似的技术也被用来捕捉和表达数据的内在结构和关系。例如,在图像识别中,通过将图像转换为向量,可以更有效地进行图像检索和分类。
总结来说,Embedding 是文本的固定长度数值表示,这使得计算机能够轻松地测量文本之间的语义相关性。它们是一些重要自然语言处理任务的核心,比如文本相似性、语义搜索、信息检索和重新排序、聚类、下游任务的特征提取等。
Embedding在 RAG 系统中的作用
检索增强生成(RAG)之前已经和大家分享过很多次了,作为一种优化大型语言模型(LLM)输出的方法,使模型能够在生成和响应来自之前引用训练数据之外的知识库,提高了AI大模型响应结果的实时性和准确性。
再次快速回顾一下RAG。LLM 使用海量数据进行训练,拥有数十亿个参数,能够执行诸如回答问题、翻译语言和完成句子等任务。RAG 在 LLM基础上,通过访问特定领域或组织的内部知识库,做到了无需重新训练模型,却可以进一步提升了其输出的相关性、准确性和实用性的效果。经济、高效还百搭各种场景。
而Embedding 对 RAG 来说也是至关重要的基础。我们来看看是为什么。
我们知道RAG 包含的三个主要过程:检索、增强和生成。
检索是根据用户的查询内容,从外部知识库获取相关信息。具体而言,将用户的查询通过Embedding嵌入模型转换为向量,以便与向量数据库中存储的相关知识进行比对。通过相似性搜索,找出与查询最匹配的前 K 个数据。
增强是将用户的查询内容和检索到的相关知识一起嵌入到一个预设的提示词模板中。
生成则是将经过检索增强的提示词内容输入到大型语言模型中,以生成所需的输出。
结合下面这张图来看,上面这条线就是检索,而不论是对用户意图的转化,还是对知识库的知识比对,都需要依赖Embedding的技术
最下面这条线的生成,大模型基于增强后的内容进行输出时,对于输入内容和LLM的知识库的相似度匹配,也是基于Embedding的技术
这样我们就可以理解了为什么Embedding 对 RAG 来说是至关重要的基础,
统一整理一下,Embedding在RAG中主要有以下几个方面的作用:
统一整理一下,Embedding在RAG中主要有以下几个方面的作用:
1. 对用户意图和私域知识进行向量化表示
在 RAG 系统中,用户的请求和知识库中的文档需要被Embedding处理为向量。Embedding向量模型不仅支持文本、也支持图像和视频等多模态数据。转化后的向量捕捉了文本中的语义信息,使得相似的 query 和分块文本在向量空间中彼此接近,如果 Embedding进行向量化表示的过程中表现不佳,那么即使 RAG 系统在其他方面设计得当,最终效果也难以达到预期水平 。
2. 动态更新知识库
在 RAG 系统中,随着新数据的不断加入,知识库需要动态更新。新加入的文档会被实时Embedding转换为向量并添加到向量数据库中,这保证了知识库的实时性和扩展性。Embedding可以高效完成这一过程,不会对系统性能造成明显的影响。
3. 数据隐私和安全
Embedding通过将私域知识转换为向量表示,一定程度上实现了数据的匿名化。原始文本经过Embedding向量化处理后,其具体内容难以直接还原,从而保护了敏感信息。即使攻击者获得了向量表示,也难以重建原始信息。比如在金融领域,向量模型将敏感的金融交易记录转化为向量表示,RAG 系统可以在保护客户隐私的同时,进行高效的信息检索和生成,从而支持金融决策和客户服务。
历史赫赫有名的Embedding模型
词嵌入(Word Embedding)发展历史的时间线图表:
下面我们列举几个在AI发展过程中比较有名的几个Embedding框架,以及它们各自适合的使用场景,大家看个眼熟:
Word2Vec:
Google在2013年开发。Word2Vec作为经典的词嵌入模型,能够为每个词生成静态的向量表示,捕捉局部上下文信息。它在生成词的语义和语法向量方面表现出色,但可能不足以处理长距离依赖关系。Word2Vec是开源的,易于集成和部署,适合于基础的文本分析任务。
GloVe (Global Vectors for Word Representation):
由斯坦福大学和Google在2014年提出,结合了矩阵分解和Word2Vec的特点。GloVe模型通过结合全局统计信息和矩阵分解技术,为词嵌入提供了一种有效的解决方案。它在捕捉词与词之间的语义和语法关系方面表现出色,适用于词义消歧和词向量的质量分析。GloVe开源,易于使用,且计算效率高。
是一种预测模型,它考虑了词语的上下文。与Word2Vec和GloVe不同,ELMo为每个词语生成不同的嵌入,这取决于词语的上下文。例如,"bank"在"he deposited money in the bank"和"he sat on the bank of the river"中的含义是不同的,因此它的嵌入也应该不同。
BERT (Bidirectional Encoder Representations from Transformers):
BERT模型由Google在2018年提出,以其革命性的双向Transformer架构,为自然语言处理任务带来了前所未有的语义理解能力。尽管BERT在处理长文本方面存在一定限制,但它在诸如文本分类、问答和命名实体识别等任务上表现出色。BERT是开源的,可以自由使用,但部署和运行可能需要较高的计算资源。
FastText:
由Facebook在2016年开发,支持n-gram特征和子词信息。FastText模型以其支持子词级别的信息而著称,使得模型能够更好地处理多语言和罕见词汇。在词嵌入任务中,FastText能够生成考虑词形变化的向量表示,适用于多语言环境和语言模型。FastText开源,易于集成,且计算效率高。
t-SNE(t-distributed Stochastic Neighbor Embedding):
由Laurens van der Maaten在2008年提出。t-SNE是一种强大的数据可视化工具,能够将复杂的高维数据集映射到二维或三维空间,同时保持数据点的局部结构。它在展示数据分布和模式识别方面表现出色,但计算成本相对较高。t-SNE是开源的,适用于需要直观展示数据结构的场合。
UMAP (Uniform Manifold Approximation and Projection):
由Leland McInnes在2018年提出。UMAP作为t-SNE的替代品,提供了更快的计算速度和更好的可扩展性。它在大规模数据集的可视化和降维方面表现出色,适用于需要处理大量数据点的场景。UMAP是开源的,易于集成,且计算效率高。
Sentence-Transformers:
由艾伦图灵研究所和德国萨尔布吕肯大学开发。Sentence-Transformers专注于生成高质量的句子嵌入,特别适用于计算句子间的相似度和语义搜索。它在句子级别的NLP任务中表现出色,如文本相似性比较和语义匹配。开源的,易于使用,且支持多种预训练模型。
HuggingFace Transformers:
HuggingFace提供了一个广泛的预训练模型集合,支持多种NLP任务,如文本生成、翻译、摘要等。它在模型的微调和自定义模型的创建方面表现出色。开源,易于集成,且社区活跃,提供了丰富的资源。
OpenAI Embeddings:
OpenAI的Embedding模型,如text-embedding-ada-002,以其出色的性能在长文本搜索、文本相似性和代码搜索等任务上受到认可。它支持高达8K tokens的输入长度,但使用这些模型会根据token数量产生费用。
MTEB-多语言文本嵌入基准测试&热门模型
这么多向量模型,我们要如何衡量一个Embedding模型的有效性呢?
Hugging Face 推出了 MTEB(Massive Text Embedding Benchmark 大规模文本嵌入基准)测试框架,旨在评估文本 Embedding 模型在多种任务上的性能。
它覆盖了 8 类任务和 58 个数据集,涉及 112 种语言,是目前最全面的文本嵌入评估基准之一。MTEB 提供了一个公开的排行榜,用于展示各个模型在不同任务上的表现。
我们发现没有特定的文本嵌入方法在所有任务中都占主导地位。这表明该领域尚未集中在一个通用的文本嵌入方法上,并将其扩展到足以在所有嵌入任务上提供最先进的结果
MTEB排行榜地址:
https://huggingface.co/spaces/mteb/leaderboard
github地址:
https://github.com/embeddings-benchmark/mteb#leaderboard
如图所示,是 MTEB 的测试框架
再来看几个在MTEB上表现出色的热门词嵌入模型:
acge_text_embedding :
由上海合合信息科技股份有限公司发布的文本向量化模型,在中文文本向量化领域取得了重大突破,并荣获MTEB中文榜单(C-MTEB)第一名的成绩。
NV-Embed :
NVIDIA开发的文本嵌入模型,以69.32的分数创下了嵌入准确率的新纪录,覆盖了56项嵌入任务。适用于需要处理大规模数据集和多语言文本的场合,如跨语言信息检索、多语言文本相似性度量等。
E5-mistral-7b-instruct :
微软发布的text embedding模型,在MTEB数据集上取得了优异的成绩,利用合成数据训练,适用于需要处理近100种语言的文本嵌入任务,特别是在多语言环境下的语言模型预训练和微调。
Qwen :
采用了GTE统一文本表示,基于预训练的文本表示模型,通过双塔结构(Dual Encoder)训练。适用于需要快速检索和文本匹配的场景,如搜索引擎的查询扩展、推荐系统的项目匹配等。
BGE-M3 :
智源发布的BGE-M3模型支持超过100种语言,具备领先的多语言、跨语言检索能力,在多个评测基准中达到最优水平。特别适用于多语言和跨语言的检索任务,以及需要高度定制化的企业级应用。
BCEmbedding :
网易有道开源的BCEmbedding模型,具备中英双语和跨语种能力,覆盖多领域。适用于跨语言文本处理任务,如双语文本匹配、多领域文本分类等。
Cohere :
Cohere提供的闭源embedding服务,通过API收费的方式提供服务。适用于需要高度定制化Embedding解决方案的商业应用,如聊天机器人、内容推荐等。
Jina :
同样通过API收费,适用于构建基于向量搜索的应用,如大规模图像或文本检索系统。
GritLM-7B :
GritLM是一种生成表示指令调整语言模型,将文本表示(嵌入)和文本生成统一到一个模型中,适用于需要同时进行文本生成和嵌入表示的任务,如自动文摘、文本续写等。
这些模型在MTEB上的评估结果展示了它们在不同任务和语言上的强大性能。它们各自具有独特的优势和应用场景,无论是学术研究还是商业应用,都提供了强大的支持。
如何选择Embedding向量模型
选择适合企业业务系统的向量模型时,MTEB可以作为一个有益的参考指标,但排名靠前的模型并不一定是最佳选择。实际上,挑选恰当的Embedding模型是一个复杂且精细的决策过程,受多种因素的综合影响,比如:
语言支持和性能
另外,某些模型在主要语言(如中文)中的表现较好,但在处理较少使用的语言时可能会表现不佳。因此,需要评估模型在所有必需语言中的准确性,以确保一致的性能。
处理长文本的能力
切分的文本片段后续需要通过 Embedding 模型进行向量化,所以必须考虑向量模型对输入文本块的 tokens 长度限制,超出这个限制则会导致模型对文本进行截断,从而丢失信息,影响下游任务的性能。
不同的 Embedding 模型对文本块长度的支持能力不同。比如,BERT 及其变体通常支持最多 512 个tokens,处理长文本时则需要将文本分成更小的块,意味着需要更加精细化的分块策略。而 Jina AI 的 Embedding 模型和 bge-m3 模型则支持 8K 的 tokens 输入,适合处理长文本块。
模型在特定领域的表现
通用 Embedding 模型在特定垂直领域(如医学、法律和金融等)可能不如专用模型有效。这些领域通常需要专门训练 Embedding 模型来捕捉特定的专业术语和语境。为特定业务需求优化的 Embedding 模型能够显著提升检索和生成的质量。例如,通过结合向量检索和重排序(reranking)技术,可以进一步优化结果。
存储和内存等资源需求
高维向量需要更多的存储空间,这可能会带来长期成本。例如,较高维度的模型如 text-embedding-ada-002 需要更多的存储资源。另外,较大的模型可能会占用更多内存,因此不适合内存有限的设备。
模型响应时间
Embedding 模型的处理速度在实时应用中尤为关键。例如,intfloat/e5-base-v2 模型在处理速度上表现优异,但需要在 GPU上 运行以达到最佳性能。在选择模型时,需要评估其在嵌入和检索过程中的延迟。例如,OpenAI 的 Embedding 模型在许多基准测试中显示出较高的性能和较低的延迟。
因此,在真实生产环境选择Embedding模型时,需要综合考量语言特性、文本处理需求、领域特定性、模型精确度、硬件资源以及响应时间等多方面因素,以确保所选模型能够满足业务系统的实际需求。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓