万物皆可向量化。
近日,在 QCon 全球软件开发大会北京站的现场,Zilliz 合伙人、技术总监栾小凡进行了名为《万物皆可向量化—— Milvus 的现状与未来》的主题演讲。
栾小凡从向量数据库的基本知识、Milvus 2.0 的特性及功能、向量数据库云原生实践、向量数据库的未来这四个方面,带领现场听众体验一场向量数据库与云交织的未来之旅。其中,Milvus 的用户场景、向量数据库云原生实践与向量数据库的未来部分引发现场的关注与讨论。
以下是这三部分的精彩集锦:
Milvus & ChatGPT
在开源领域,Milvus 已得到全球上千家企业级用户的信赖,包括 eBay、Shopee、Walmart、快手、宜家等,最大部署规模超过 10 亿向量。
同时,在很多应用场景下,Milvus 的 QPS 超过 10K。典型的应用场景包括:在长文本领域,可以进行翻译、问答、语义检索、情感分析,语义检索和问答可以与 ChatGPT 配合使用,提升其回答的准确度;在图片领域可以进行去重、目标检测、图片检索、多模态的图文互搜;在视频领域进行推荐、合规检测、分类等。
当然,也有很多新兴的应用场景,包括在生物制药领域把生物分子式转化成向量,判断生物小分子与蛋白质能否紧密结合;在音频领域进行去重、情感分析;在风控领域识别潜在的风险;在自动驾驶领域可以通过向量检索帮助自动驾驶找出实时判断过程中没有分析出来的物体。
以问答机器人为例,在实际应用过程中它是如何通过 Milvus 来实现的?
简单来说,数据分成了两部分,一部分是 Question Dataset,另一部分是 Ask Question。然后通过 Text embedding 的方式生成 Vector,并将其写入 Milvus。在实际查询的过程中,把用户的查询通过相同的算子将其生成一个向量,再通过向量查询 Vector database,最终拿到一组相似的 ID,这些 ID 通过反查得到更多的信息。随后可以运行一个精排模型,比如利用 ChatGPT + prompt 的方式进行查询结果的归纳/总结。
具体教程可参考:Towhee
云上的心得与思考 Milvus 对于云的心得和思考其实可以从四个方面概括,即:微服务化设计、接口即服务、调度、跨云。
首先是微服务化设计。Milvus 的架构设计是一个非常复杂的分布式系统,因此采用了微服务化和存储计算分离的设计。Milvus 提供一系列接口抽象,支持三种不同种类的存储,即元信息存储、流存储和批存储。而不同的存储接口又囊括多种实现方式,例如,对象存储包括了开源的 Minio 和云 S3;元信息存储支持开源的 Etcd 和云的 RDS。
其次,接口即服务。这是 Milvus 非常关键的设计,每一个微服务都是由不同的接口定义的,其背后包括多种不同的实现,有嵌入式引擎、分布式集群,也有 Severless 服务。这样做的优点是可以将资源池化、统一开源与云、实现与接口分离。
再者,调度,不仅仅是任务。在过去的大数据领域,调度通常会和任务调度结合,而在一个云原生的环境下,调度的复杂度大大提升,不仅调度任务本身,它还在调度 resource、数据。云上有一种说法,即在线下环境中完成一项任务,也许需要用一个 CPU 跑 100 分钟,在云上则可以用 100 个 CPU 跑 1 分钟来完成。Milvus 团队将其称为“云的资源交换律”。当然,资源交换律并不是在任何情况下都成立的。为实现这个定律,Milvus 进行存储计算分离以降低调度 Resources 的成本;尽可能动态调度计算资源以满足当前的算力要求;调度数据本身,借助 caching、冗余、locality 等策略降低计算调度成本。
最后,跨云。多云/混合云的优势很多,包括安全合规、有更高的议价空间、可用性更高以及 No Vendor Lock in。
当然,多云本身也带来了很多额外的复杂度,对此,Milvus 有自己的四大哲学:
一是基于开源或云标准接口(S3,SQL)构建服务;二是利用抽象能力解耦 - Terraform、 Crossplane;三是区分管控面与数据面,实现统一的管理能力;四是基于多云实现 CI/CD。
向量数据库的挑战与未来
向量数据库的大趋势是什么?当前行业面临怎样的挑战?Milvus 对此有哪些应对方式?
对于这些问题,栾小凡将六大挑战作为切入点进行了回应:
其一,可运维性。如何在 AI 领域部署及运维向量数据库是整个行业面临的一大挑战。为此,团队在 Milvus 上做了一系列的工作。从云原生的角度来看,尽可能地复用基础设施;从开源用户的角度来看,尽可能降低系统对外部组件的依赖,使部署和运维向量数据库变得更加简单。
其二,性能成本。目前,我们看到了 GPU 加速向量检索的可能,也看到了在很多的数据集底下 GPU 能够提供 5-10 倍以上的 CPU 的性能。所以,在下一个大的 Roadmap 里面 Milvus 也会去支持 GPU。此外,过去在做向量检索时,必须要把数据加到内存里面,这限制了整个向量检索的数据量。目前,Milvus 已经实现支持基于磁盘内存混合的索引,正在通过 MMap 实现内存和磁盘换进换出的查询能力,能够进一步降低向量检索的内存使用。
其三,离在线一体化。这包括解决当前元信息的存储瓶颈、百亿规模超大规模的向量召回,都对整个系统的负载均衡能力、资源使用能力提出了较高的要求。Milvus 希望能够变成一个离在线一体化系统。
其四,智能化。很多人都在高呼“AI for DB”,但真正将其应用在 Relational database 的概率却比较低。由于向量数据库的一些特性,我们较早地进行了尝试,进行动态参数调整、引入模型处理精排。例如,做一些动态的剪枝算法,根据用户的数据模型动态选择是否帮他们做 FP16 或者 BF16 以及 SQ/PQ 等各种量化的优化。
其五,易用性。Milvus 计划在下半年将增加支持 SQL,成为全球第一个支持 SQL 的向量数据库。同时,团队也将对接一些大模型生态如 Hugging face、OpenAI、Spark 等。此外,Milvus 与 Paddle 社区也有非常紧密的合作。
其六,标量数据处理能力。标量和向量的混合查询是未来几年的趋势,这一点毋庸置疑。为此,团队也做了很多准备,包括新一代标量的执行引擎的研发、对 Json,list/set 等更多复杂数据类型提供支持。
最后,我们通过 Zilliz Cloud 提供全托管的 SaaS 服务,这也将大大降低大家使用向量检索的成本与门槛。如果想要体验 Zilliz Cloud 的更多功能,欢迎访问https://zilliz.com/cloud 。
点击链接即可了解更多现场细节:【QCon】万物皆可向量化:Milvus 的现状与未来 - Zilliz 合伙人 栾小凡_哔哩哔哩_bilibili