挖掘非结构化数据潜能 —— 向量数据库的探索之路

IDC 预测,到 2025 年,中国的数据量将增长到 48.6ZB,80% 是非结构化数据,并且将成为全球最大的数据圈。在我们的日常生活中,非结构化数据的查询使用场景也越来越多见,比如以图搜图、视频搜索等等。

随着非结构化数据应用的增加,此类数据的处理分析需求也在随之增加,而现有的数据库产品绝大多数都是面向结构化数据的处理,非结构化数据处理工具寥寥。基于此现状,Zilliz 在 2019 年开源了向量数据库 Miivus,专注非结构化数据的处理。

9 月 15 日,Zilliz 合伙人和技术总监、LF AI&DATA 基金会技术咨询委员会成员栾小凡以“挖掘非结构化数据潜能——向量数据库的探索之路”为主题,全面介绍了非结构化数据处理与向量数据库技术发展概况,以及 Zilliz 在数据库技术云服务上的探索。

此外,9 月 24 日 Zilliz 还将举办“2022 非结构化数据大会”,深度解读非结构化数据处理技术。

以下正文部分为“挖掘非结构化数据潜能——向量数据库的探索之路”主题直播回顾。

栾小凡

栾小凡是 Zilliz 合伙人和技术总监,同时是 LF AI & Data 基金会技术咨询委员会成员。在加入 Zilliz 前,他在阿里云担任研发经理,负责 NoSQL 数据库 Lindorm 的研发工作。此前,他曾先后在美国甲骨文公司和软件定义存储公司 Hedvig 担任软件工程师。栾小凡拥有康奈尔大学计算机工程硕士学位。

非结构化数据与向量数据库

OSCHINA:非结构化数据的格式和标准非常多样,而且在技术上它会比结构化信息更难以标准化和理解,目前非结构化数据的技术发展情况大概是怎样的?

栾小凡:

我是做传统数据库出身的,非结构化数据对我来说,也是一个非常新的一个领域。

传统的数据库,无论是 OLTP、OLAP 数据库,还是 NoSQL 数据库,主要面向的是一些结构化的数据,比如说像 string、int 等数值类型的。非架构化数据会更加多样化,比如生活中常见的图片、视频,或者是推荐系统中的用户信息、商品信息,都被归到非结构化数据范畴中。其实非结构化数据的体量在整个业界的规模是更大的,而且增长数独也很快。

据调查报告显示,到 2025 年,80% 以上的数据都会是非结构化数据。但传统的数据库没办法很好地去处理这种非结构化数据。所以其实我们在做大数据转型的过程中,发现很多非结构化数据的价值被浪费了。因此我们现在的核心在于关注这个领域怎么能利用 AI 和数据库的技术,去赋能非结构化数据处理,帮助大家更好地去挖掘各种各样的非结构化数据的核心价值。

那么现在比较主流的非结构化数据处理方式,基本上都是通过一些深度学习的模型实现。因为非结构化数据本身的种类非常多,可能没有办法很容易地通过某一种规则去处理。传统的结构化数据,通过排序或者聚合可以去做一些比较好的处理,它的算子方式相对来讲比较统一。但非结构化数据由于种类很多,所以我们希望先把它统一成一种机器能够理解、能够处理的结构。那么目前比较主流的方式,其实是通过一些深度学习的模型,把数据生成向量 embedding,然后再去做一些近邻的匹配,那么在高纬空间底下,如果这个向量的距离是相似的,我们就认为它代表非结构化数据的一些相似性。

举个简单的例子,我想做图片搜索或者以图搜图,就可以把图片经过深度学习模型转化成一个向量。然后在高纬的向量空间里,找到一些近似的向量。那么这些近似的向量背后代表的那些图片,可能就跟原始的想要查询的图片比较相似。

至于怎么定义这个事情,很大程度上取决于你的深度学习模型,包括训练的时候带有哪些特征等等。比如在做人脸识别的时候,可能会在训练的时候特意给出一组相似的人脸样本,和一组不相似的人脸样本;或者在做物体识别的时候,给到的图片分类里还包括其他生物的图,通过这种方式,把这个问题转换成模型问题。

OSCHINA:向量数据库作为挖掘非结构化数据的有效方法,在实践中突破了哪些关键技术,遇到了哪些难点,目前发展的现状大概是怎样的?

栾小凡:

刚才的回答里也提到,我们定义非结构化数据,最终需要把各种类型的数据转换成机器更容易理解的一个形态,这个形态就是我们所说的向量。

向量数据库其实就像传统数据去处理一些关系型数据、结构化数据一样,承担的是非结构化数据的低成本存储和高性能计算两大核心能力。

就向量数据库来讲,我们认为它要具备三个特性:第一个就是它需要具备高维度的数据处理能力,这和传统的数据库有很大的区别,传统数据库去处理一些 string 或者字符、数值类型的时候,它的数据的维度往往是一维的。

近年来也出现了一些类似于时空数据库,开始去处理二维或者三维的数据。但总的来讲,传统数据库的数据的维度都比较低,在数据维度比较低的情况下,使用的一些索引,比如常见的像这个 B 数的索引、L S M 数的这些索引,可能在一个更高维度的数据上做相同索引,是不能达到效果的。所以对于向量数据库来说,第一要找到适合处理高维数据的索引类型,这是第一个难点。

第二个难点,向量数据库既然作为一个数据库,那么它本身应该是有一个比较好的数据管理能力的,因为大家都知道数据库就是用来管理和检索数据的,向量数据库也不例外。那么我们希望这个向量数据库能够给到用户过往使用数据库产品的一些相同体验和抽象概念。

比如向量数据库里有表的概念,也有日志的概念,然后我们帮用户解决了怎么去做持久化,怎么做分布式、做扩展、做高效查询等等,怎么把一些固定的查询语句转化成最终的执行结果。所有这些事情都是向量数据库需要去解决的。

最后一点,回到向量数据库本身的特性上来,向量数据库有一个很重要的特点:对计算量的要求特别大。这种计算量主要是体现在:比如传统数据库处理一行数据可能是对一个 float 类型去做大小的比较,那么对于这种高维度向量数据的操作来说,去计算欧式距离,简单来讲就是对一些数字做加减乘除、再平方、再开方,而且这个数据的维度又特别高,因此它对算力的要求是相对来讲比较高的。

因此,在向量数据库里,我们也在利用一些定制的硬件,包括 C P U 并行计算,向量化计算来去加速查询执行,这个可能也是向量数据库本身面临的一个比较大的挑战。

Zilliz:坚持开源,服务上云

OSCHINA:向量数据库其实是Zilliz提出的一个新物种,聚焦到Zilliz本身,简单给大家介绍下你们正在做的事情?

栾小凡:

我们是从 2018 年左右开始关注到非结构化数据这个领域的。

顺着这个思路,我们第一时间就找到向量数据库的突破点。当时正好在 AI 领域的高维数据检索取得了一定的突破,Facebook 也提出了向量检索的工具 faiss。

在这个基础上,面向用户需求,我们做的第一件事情就是做了一个向量数据库,然后在已有的向量检索的基础上完善了整个向量数据的使用机制,包括用户的使用习惯。并且我们当时做了世界上第一个开源的向量数据库,也就是 Milvus。

接下来,我们做了两件大事,一是开源 Towhee,Towhee 项目的核心就是把非结构化数据转换成向量的过程,我们也将其称为非结构化数据的 ETL。那么在这里面,我们也是大量使用了开源模型,然后根据用户需求,提取用户数据中的关键信息和向量。

除了做开源的产品,我们公司还有另一个这个比较大的一个标签,其实是做云。我们面向公有云提出的 SaaS 的服务,这个服务里也包含了我们的开源产品。那么在未来的话,像 Towhee,包括围绕着整个 Milvus 生态的一些其他开源项目,比如我们向量检索的内核引擎 Knowhere,然后比如说我们的可视化的工具 Attu、还有 Feder,这些工具也都会在云上上线。

OSCHINA:你是在什么时候加入Zilliz的,选择加入的原因是什么?

栾小凡:

我是在 2020 年年初加入 Zilliz 的,其实也是机缘巧合。我个人之前一直在云数据库厂商,做数据库相关的工作,之前更多的是做闭源的商业产品。

我加入 Zilliz 的原因:第一个,向量数据库是一个相对来讲非常新的赛道,相较其他数据库赛道,其他数据库赛道基本都有一个领先的王者,比如关系型数据库大家会想到 MySQL,会想到 PostgreSQL,搜索领域会想到 Elasticseartch。

而在向量数据库领域,目前 Zilliz 是最早去做的一家,并且做到也算不错,所以这对我来说是一个很好的机会,能够去参与做一个世界领先的数据库,对我也是一个比较大的挑战。我本人也是从美国回到国内,所以其实蛮有信心,觉得今天中国的工程师是有能力做出一个可以让全世界工程师一起去使用的产品。

第二个动力,其实 Zilliz 本身是一家做开源,也是一家做云的公司,从我自己的背景来说,我过去对公有云和专有云都有一定的了解,我也一直都是个开源爱好者,也曾经参与过 Apache Hbase 的开发,也希望能有机会深度参与到一个开源社区里面,去主导一个开源社区的发展。所以,Zilliz 也是一个能施展我自身才华的舞台,加入 Zilliz 之后也交到了许多志同道合的朋友,这也是我来 Zilliz 一个很大的收获。

OSCHINA:你在这家开源商业化公司身负多重角色,包括Zilliz技术总监/ Milvus项目maintainer /产品架构师。你是如何平衡这些不同角色的?现在你一天的工作内容和节奏大概是什么样的?

栾小凡:

如果大家有机会在开源领域工作的话,你的头上永远戴着两顶帽子,一边是在商业公司工作,另一边同时又是在一个开源社区工作,并且这个开源社区不属于这家商业公司,此时就需要去平衡好其中的工作时间分配,找到两件事情间的契合点。

其实在 Zilliz,我觉得比较幸运的一个点就是我们的 CEO 星爵本身是一个有技术情怀的人,给了我们很大的空间,允许我们的工程师团队花时间精力在开源社区里面。当然 Milvus 本身就是我们捐赠给基金会的,这个项目就像是我们的亲生儿子一样,所以我们也会自发的话很多时间在这个项目上。

另一个我觉得很好的契合点就是,我们公司本身也确实在基于开源项目做商业化工作,所以项目本身的成功对我们自己做商业化成功也是非常有帮助的。那么我们在日常工作中,工作重心也是随着整个产品和项目的发展,一直在去做平衡和调整。可能在某个阶段,比如社区发版的关键时刻,我会花更多精力在社区上面,和其他社区成员做更多沟通,帮助他们去找到一些解决问题的方法,与此同时我也会从公司的利益角度出发,去寻找一些公司和社区同时需要的东西去作为我们对社区的一种贡献。

(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )