导读 #
据 IDC 预测,2018 年到 2025 年之间,全球产生的数据量将会从 33 ZB 增长到 175 ZB, 复合增长率达到 27%,其中超过 80% 的数据都会是处理难度较大的非结构化数据。尽管传统的结构化数据仅占总数据量的不到 20%,但现代数据处理技术已经拥有成熟的基础软件栈来处理这些数据,然而,面对超过 80% 的海量非结构化数据,现有的架构却不能很好地管理和应用。 管理非结构化数据是一项复杂而困难的任务,这主要体现在以下几个方面:
为了解决这些问题,除了引入革新的底层数据架构,还需要将计算机视觉、NLP 等技术融入其中,并借助深度学习等人工智能技术实现数据治理,进而实现知识复用与智能搜索。幸运的是,我们现在同时经历“非结构化数据”与“人工智能”两场变革,各类人工智能技术为我们提供了理解非结构化数据的途径,也就是将文本、图像、音频等非结构化数据 Embedding 为向量表示,并存储在向量数据库中,以便进行快速的相似度搜索和数据分析。[1]
Embedding 技术 #
什么是 Embedding? #
An embedding is a mapping from discrete objects, such as words, to vectors of real numbers. — Tensorflow 社区
Embedding 是用一个低维稠密向量来表示一个对象,使得这个向量能够表达相应对象的某些特征,同时向量之间的距离能反应对象之间的相似性。 — 王喆《深度学习推荐系统》
将一个实例从复杂的空间投射到相对简单的空间,以便对原始实例进行理解,或者在相对简单的空间中进行后续操作。 — chrisyi《Network embedding 概述》
为了储存非结构化数据,我们需要对其进行编码为向量表示,但原始的向量通常高度稀疏,这对计算机的计算和处理不利,Embeding 的主要作用是就将高维的稀疏向量转化为稠密向量以方便对模型进一步处理。 具体而言,假设我们将如下字典通过 One-hot 编码:
极: 000001
限: 000010
科: 000100
技: 001000
公: 010000
司: 100000
那么我们就可以用如下矩阵来表示“极限科技”这个短语:
[ 0 0 0 0 0 1 ]
[ 0 0 0 0 1 0 ]
[ 0 0 0 1 0 0 ]
[ 0 0 1 0 0 0 ]
然后,我们使用最简单的词频向量(Count Vector)将下列短语分别表示为:
极限科技: [ 1 1 1 1 0 0 ]
科技公司: [ 0 0 1 1 1 1 ]
公司 : [ 0 0 0 0 1 1 ]
这样,我们就能将由上述字典所组成的短句 Embedding 成更低维度的稠密向量,并且每个向量都包含了一定的信息(这里是词频),以便于通过特定的算法对这些向量进行分析、筛查。
主流的 Embedding 技术 #
上述基于词频的 Embedding 是一种简单的确定性(deterministic)的方法,除此之外还有:
- TF-IDF Vector
- Co-Occurrence Vector
这两种方法相较于前者,增加了对单词所在上下文的考虑,从而能包含更丰富的信息。随着人工智能,特别是神经网络的发展逐渐涌现出许多基于预测模型的 Embedding 技术,通过此类模型能将单词、句子、文档等转换为携带丰富语义信息的向量,比如最近大火的 GPT 模型,它对自然语言已经具备相当高的理解能力,从而能支持非常复杂的语义分析、查找等操作。 主流的 Embedding 技术可以分为三大块[2]:
矩阵分解法 #
矩阵分解法是一种常见的 Embedding 方法,它可以将高维的矩阵映射成两个低维矩阵的乘积,很好地解决了数据稀疏的问题,常见的实现包括:
矩阵分解法的优点包括3:
其缺点包括:
基于自然语言处理的方法 #
自然语言处理(NLP)是一种人工智能技术,它涉及计算机对人类语言的理解和生成。NLP 包括许多任务,如文本分类、情感分析、命名实体识别、机器翻译和自动摘要等。NLP 技术可以帮助计算机处理和分析大量的文本数据,从而使计算机能够更好地理解人类语言并作出更准确的预测和决策。而基于 NLP 的 Embedding 方法的主要思想是将每个单词或短语映射到一个低维向量空间中,使得在这个向量空间中,相似的单词或短语在距离上更加接近,以便于支持语义查找与分析工作。常见的方法包括:
基于自然语言处理的优点包括:
其缺点包括:
基于图的方法 #
上述方法都是针对序列文本而设计的,而对于诸如社交网络分析、推荐系统、知识图谱等领域中的问题,如下图[2]所示,数据对象之间更多呈现出图结构:
基于图的 Embedding 技术是一种将图数据(通常为高维稠密的矩阵)映射为低微稠密向量的过程,能够很好地解决图数据难以高效输入机器学习算法的问题。Graph Embedding 技术将图中的节点以低维稠密向量的形式进行表达,要求在原始图中相似 (不同的方法对相似的定义不同) 的节点其在低维表达空间也接近。常见的方法包括:
基于图的方法的优点包括:
其缺点包括:
总结 #
本节简单介绍了向量数据库诞生的背景以及当前热门的 Embedding 技术,包括传统的基于矩阵分解的方法、基于自然语言处理的方法以及基于图数据的方法,作为向量数据库的上层接口,应当根据不同的数据类型采用不同的方法进行向量化以最大化满足业务需求。
参考资料 #
- [1]: 深入解读向量数据库,Zilliz 「三剑客」干货分享
- [2]: 万字长文经典-再论 Embedding 技术