云计算

向量数据库的崛起:从矢量搜索到深度学习 (一)

本文主要是介绍向量数据库的崛起:从矢量搜索到深度学习 (一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

导读 #

据 IDC 预测,2018 年到 2025 年之间,全球产生的数据量将会从 33 ZB 增长到 175 ZB, 复合增长率达到 27%,其中超过 80% 的数据都会是处理难度较大的非结构化数据。尽管传统的结构化数据仅占总数据量的不到 20%,但现代数据处理技术已经拥有成熟的基础软件栈来处理这些数据,然而,面对超过 80% 的海量非结构化数据,现有的架构却不能很好地管理和应用。 管理非结构化数据是一项复杂而困难的任务,这主要体现在以下几个方面:

  1. 非结构化数据的容量比结构化数据更大;

  2. 产生的速度比结构化数据更快;

  3. 数据来源更具有多样性;

  4. 用户对这些数据在数据、内容、信息和知识层面有着多层次的需求。

为了解决这些问题,除了引入革新的底层数据架构,还需要将计算机视觉、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]

  1. 矩阵分解法

  2. 基于自然语言处理(NLP)的方法

  3. 基于图(Graph)的方法

矩阵分解法 #

矩阵分解法是一种常见的 Embedding 方法,它可以将高维的矩阵映射成两个低维矩阵的乘积,很好地解决了数据稀疏的问题,常见的实现包括:

  1. 奇异值分解(Singular Value Decomposition,SVD)

  2. 隐式语义分析(Latent Semantic Analysis,LSA)

矩阵分解法的优点包括[3]

  1. 能够挖掘更深层的用户和物品间的联系,预测精度较高;

  2. 编程实现相对容易,时间和空间复杂度较低;

  3. 具有较好的扩展性,可以方便地添加其它因素。

其缺点包括:

  1. 模型训练费时;

  2. 隐含特征无法使用现实生活中的概念来解释,推荐结果的解释性不好。

基于自然语言处理的方法 #

自然语言处理(NLP)是一种人工智能技术,它涉及计算机对人类语言的理解和生成。NLP 包括许多任务,如文本分类、情感分析、命名实体识别、机器翻译和自动摘要等。NLP 技术可以帮助计算机处理和分析大量的文本数据,从而使计算机能够更好地理解人类语言并作出更准确的预测和决策。而基于 NLP 的 Embedding 方法的主要思想是将每个单词或短语映射到一个低维向量空间中,使得在这个向量空间中,相似的单词或短语在距离上更加接近,以便于支持语义查找与分析工作。常见的方法包括:

  1. Word2vec

  2. GloVe(Global Vectors for Word Representation)

  3. FastText

基于自然语言处理的优点包括:

  1. 可以捕捉词语之间的语义关系,使得计算机可以更好地理解文本数据;

  2. 可以在不同的自然语言处理任务中共享相同的 Embedding 表示,从而提高模型的泛化能力;

  3. 可以通过对大量文本数据进行训练,获得更加准确的 Embedding 表示。

其缺点包括:

  1. 对于一些语义复杂的词语或者生僻词等,需要更复杂的模型才能准确地捕捉其语义关系;

  2. 在处理大规模文本数据时,需要消耗大量的计算资源和时间。

基于图的方法 #

上述方法都是针对序列文本而设计的,而对于诸如社交网络分析、推荐系统、知识图谱等领域中的问题,如下图[2]所示,数据对象之间更多呈现出图结构:

https://img4.sycdn.imooc.com/64acc7110001012f05120280.jpg

基于图的 Embedding 技术是一种将图数据(通常为高维稠密的矩阵)映射为低微稠密向量的过程,能够很好地解决图数据难以高效输入机器学习算法的问题。Graph Embedding 技术将图中的节点以低维稠密向量的形式进行表达,要求在原始图中相似 (不同的方法对相似的定义不同) 的节点其在低维表达空间也接近。常见的方法包括:

  1. DeepWalk

  2. Node2vec

  3. Metapath2vec

基于图的方法的优点包括:

  1. 可以将图中的节点表示为向量,从而方便进行各种图形分析任务,例如节点分类、链路预测和社区发现等;

  2. 可以处理大规模图形数据,因为它们通常使用随机游走等方法来生成节点序列,而不需要直接处理整个图形;

  3. 可以使用元路径来定义随机游走算法中的转移概率来处理异质性信息网络。

其缺点包括:

  1. 使用深度学习模型来学习节点嵌入需要大量的计算资源和时间;

  2. 由于它们通常是通过随机游走等方法来生成节点序列,而这些方法可能会忽略一些重要的节点和边,而受到会受到噪声节点和边缘效应的影响;

  3. 比较稀疏的图形数据会影响嵌入的质量和性能。

总结 #

本节简单介绍了向量数据库诞生的背景以及当前热门的 Embedding 技术,包括传统的基于矩阵分解的方法、基于自然语言处理的方法以及基于图数据的方法,作为向量数据库的上层接口,应当根据不同的数据类型采用不同的方法进行向量化以最大化满足业务需求。


这篇关于向量数据库的崛起:从矢量搜索到深度学习 (一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!