Zilliz(刘力):Milvus:百亿级向量数据库的探索.docxVIP

  • 9
  • 0
  • 约4千字
  • 约 44页
  • 2025-05-09 发布于北京
  • 举报

Zilliz(刘力):Milvus:百亿级向量数据库的探索.docx

Milvus:百亿级向量数据库的探索

演讲人:刘力

目录

CONTENTS

?

什么是向量数据库 从向量检索到Milvus不仅仅是ANN搜索 ZillizCloud及更多

什么是向量数据库

向量检索是非结构化数据处理的范式,解决传统数据库无法做到基于语义查询,跨模态查询的问题

向量数据库是一种专为存储和查询高维度向量数据而优化的数据库系统。

向量数据的场景

RetrievalAugmentedGeneration(RAG)

通过语义检索提高生成式模型的可用性

?提高准确性和相关性

?提供私有/特定领域的知识

?提升知识的实时性

?消除幻觉

Milvus:全球第一款向量数据库

目录

CONTENTS

?

什么是向量数据库 从向量检索到Milvus不仅仅是ANN搜索 ZillizCloud及更多

向量数据库的基石:向量索引

IVF,SCANN,…基于桶的ANN算法ANNS:

IVF,SCANN,…基于桶的ANN算法

HNSW,DiskANN,…基于图的ANN算法

利用预先插入的数据获取数据分布

利用Graph,聚类,Hash等方式快速筛选并接近目标位置

利用SQ,PQ量化和SIMD降低单次距离的成本

为什么需要向量数据库

Milvus的目的:更多,更快

功能上:

?增删改查

?复杂查询:多向量、标向量混合等

?查询一致性?多租户

?监控

?RBAC

可用性上:

?规模、性能的可扩展性

?故障恢复能力

?数据的备份,迁移与导入

?微服务环境下的快速部署

更多:分布式架构支持百亿数据

设计理念:

?存算分离

提供更好的可扩展性,资源管理能力和隔离性

?微服务化+K8s自动化部署,扩展

?消息队列作为数据骨架:日志即数据

解耦不同组件,并且提供简单快捷的故障恢复机制

更多:分布式架构支持百亿数据

存算分离:

?可扩展性:储存和计算节点可以按需独立扩展

?资源利用:根据不同类型节点定制化的资源让系统能力更强

?隔离性:某个组件的升级、故障或者热点任务不会影响其他组件

?池化:IndexNode、和DataNode可以池化以提高资源利用率

更多:分布式架构支持百亿数据

流批一体:

?批量导入:数据跳过复杂的流式系统,直接插入到对象储存

?向量ETL:数据可以在Spark中进行预处理(数据清洗、向量提取等)再批量导入到Milvus

?全局优化:数据可以从Milvus全量导出到Spark进行基于全局数据分布的优化再导回Milvus提供更高效的服务

更快:多种索引算法助推性能起飞

?可插拔向量索引引擎,集成多种业界常用索引,支持不同的场景。

?支持x86、ARM各种架构,并针对新老机型进行了SIMD调优。

?和英伟达合作,支持使用GPU获得超高性能

?对复杂搜索场景进行算法调优,比如过滤搜索

更快:GPU支持获得性能巅峰

BatchSize=1

BatchSize=10

BatchSize=100

CPU:m6id.2xlargeT4:g4dn.2xlargeA10G:g5.2xlargeTop100Recall:98%Dataset::/zilliztech/VectorDBBench

更快:不只是简单得快

?Shard

加速数据插入

?Segment

Milvus的基本数据单元

?GrowingSegment

直接从消息队列里拿取数据以提供快速检索,使用构建较快的索引

?SealedSegment

使用Immutable的索引以保证查询速度

除了新增数据的查询,还有大K,删除,过滤,异常分布,等

目录

CONTENTS

?

什么是向量数据库 从向量检索到Milvus不仅仅是ANN搜索 ZillizCloud及更多

RangeSearch:更丰富的搜索语义

现实场景中很多查询没有相近的匹配项,而有的查询却有很多。用户希望找到足够相近的,而不是足够多的结果

?避免搜索出毫不相

文档评论(0)

1亿VIP精品文档

相关文档