Zilliz 2024年12月05日
Milvus×OPPO:如何构建更懂你的大模型助手
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

随着AI业务的快速增长,传统关系型数据库已无法满足OPPO等企业的需求。OPPO在AI手机时代,面临着海量高维数据存储和快速检索的挑战。本文介绍了OPPO如何利用Embedding技术将非结构化数据转换为向量,并探索了从单机到分布式向量检索服务的演进过程。文章重点阐述了OPPO选择Milvus作为向量数据库的原因,以及在小布助手等应用场景中的实践经验,并展望了向量数据库与AI技术的未来发展趋势,强调了数据库在AI时代的重要角色。

🤔 **背景:传统数据库面临AI业务挑战**:AI业务快速增长导致传统关系型数据库在处理非结构化和高维数据时效率低下,难以满足实时数据写入、大规模并发查询以及快速相似性搜索等要求。

🚀 **Embedding技术统一数据表达**:通过Embedding技术将图像、文本、音频等非结构化数据转换为低维稠密向量,使得数据可以在向量空间中进行高效计算和处理,从而简化了数据存储和检索的复杂性。

🗄️ **分布式向量检索服务:Master和ShardServer架构**:OPPO构建了分布式向量检索服务,由Master负责元数据管理和调度,ShardServer负责具体的数据存储和检索,并利用RocksDB和Raft Group实现数据持久化和高可用。

💡 **选择Milvus的原因**:基于性能、容量、扩展性、运维难度和成本等方面的综合考虑,OPPO最终选择了Milvus作为向量数据库,因为它拥有优异的性能、强大的容量支持、丰富的扩展性以及较低的运维成本。

🤖 **Milvus实践:小布助手基础记忆**:在小布助手应用中,Milvus用于存储海量对话信息,并实现快速检索以支持「基础记忆」能力,目前已存储上亿条向量数据,内存空间达到TB级别。

原创 和你一起进步的 2024-12-02 18:32 上海

海量数据存储,快速向量检索

01.

背景

AI业务快速增长下传统关系型数据库无法满足需求。

2024年恰逢OPPO品牌20周年,OPPO也宣布正式进入AI手机的时代。超千万用户开始通过例如通话摘要、新小布助手、小布照相馆等搭载在OPPO手机上的应用体验AI能力。

与传统的应用不同的是,在AI驱动的应用中,数据库面临的数据处理需求已经发生了根本性的变化。高维数据(如图像、文本和音频)的快速积累和使用场景的多样性,要求数据库不仅需要存储海量数据,还需要可以高效地进行复杂的数据检索。然而,传统关系型数据库由于其设计初衷是为结构化数据服务,因此在处理非结构化和高维数据时,逐渐暴露出其局限性。这直接导致它们在应对现代AI业务需求方面显得捉襟见肘,难以满足实时数据写入、大规模并发查询以及快速相似性搜索等要求。

02.

万物皆可Embedding

非结构化数据的种类和使用场景复杂,几乎无法定义,让计算机程序理解都非常困难,更不用说数据库了。为了能够统一处理和表达非结构化数据,业界通用的方法是使用Embedding。Embedding 是一种将高维稀疏数据转换为低维稠密向量的技术,广泛应用于自然语言处理(NLP)、图像处理、推荐系统等领域。通过 Embedding,复杂的输入数据可以被编码成固定长度的向量,使得这些数据可以在向量空间中进行高效计算和处理。

在Embedding的基础上,由非结构化数据引入的挑战演变为了如何对向量数据进行存储和检索的问题。

03.

OPPO对向量检索的探索

在业务初期,由于数据量较小、使用场景较为简单,数据存储使用本地文件,数据检索就是把全量数据加载在内存中完成。配合上HNSW, Faiss等开源库,可以很好解决问题。

但是当业务开始快速增长,上面这一条玩法很快就出现了问题:

很自然的,向量检索开始从单机向分布式的方向进行演进,根据上面的问题提出的解决方法就是:

基于上述思想,OPPO提出并实践了一套分布式向量检索服务:

整个系统在简化后可以被分为Master和ShardServer两个部分:其中Master负责整个集群的元数据管理和调度管理,存放集群的数据分布信息和整体的路由结构信息等;ShardServer负责具体的向量数据存储和检索服务。

04.

Why Milvus?

上述的分布式向量检索实际上已经把向量检索这一功能服务化了,但是这个系统中还是存在一些不足,例如数据和节点绑定在了一起,虽然对数据做了分片但是对集群的扩展不是那么丝滑。另外,对于向量检索结果的合并、检索过程中的失败处理等都是非常棘手的问题,所以,OPPO决定引入更加稳定的开源解决方案 — Milvus。

在对向量数据库做选型的时候,我们考虑的主要的点是:

最后选择Milvus也是基于以上的考虑:

05.

Milvus实践 — 小布助手

OPPO的小布助手是一个非常典型的使用Milvus的应用。

如图所示,小布助手会记录多轮对话中的信息,并且在后续的聊天中使用。这就是小布助手的「基础记忆」能力。为了实现以上能力,小布助手需要存储海量的向量数据,而且为了保证小布助手的反馈效率,还需要保证向量检索的效率。

为了服务小布助手,我们搭建了一个包含上百个QueryNode节点的集群,通过划分资源组的方式,实现对不同优先级的表隔离管理。另外,在基础记忆的业务场景中数据都是和用户相关联的,根据用户ID进行分表,再根据数据写入时间区分Partition,来减少单次数据检索的范围。

截止目前,基础记忆相关业务已经在Milvus中存储了上亿条向量数据,内存空间到达TB级别。

06.

写在最后

向量数据库是一个DB For AI的场景,传统的数据库无法满足AI业务的需求从而诞生了向量数据库。但是我们在这个过程中也越来越看到AI For DB的可能性。

...

从RDBMS, NoSQL, NewSQL到现在的Unstructured Data,我们看到数据库在AI浪潮下扮演的重要角色,也看到了数据库更多的可能性。最后我想起参加完Zilliz的Meetup后的感想:从向量数据库到AI的每次接触都能感受到其潜力和魅力。谢谢!

作者介绍


推荐阅读


阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

向量检索 向量数据库 Milvus AI业务 OPPO
相关文章