1. Milvus 是什么
Milvus 是一款开源的 Embeddings 相似度搜索引擎,支持针对 TB 级 Embeddings 的增删改和近实时搜索,具有高度灵活、稳定可靠以及高速搜索等特点。Milvus 集成了 Faiss、NMSLIB、Annoy 等广泛应用的向量索引库,提供了一整套简单直观的 API,让你可以针对不同场景选择不同的索引类型。
Milvus 服务器采用主从式架构 (Client-server model)。
- 在服务端,Milvus 由 Milvus Core 和 Meta Store 两部分组成:
- Milvus Core 存储与管理 Embeddings 和标量数据。
- Meta Store 存储与管理 SQLite 和 MySQL 中的元数据,分别用于测试和生产。
- 在客户端,Milvus 还提供了基于 Python、Java、Go、C++ 的 SDK 和 RESTful API。
Milvus 的源代码被托管于 Github。
2. Milvus整体架构
3. Milvus应用场景
Milvus 在全球范围内已被数百家组织和机构所采用,广泛应用于以下场景:
- 图像、视频、音频等音视频搜索领域
- 文本搜索、推荐和交互式问答系统等文本搜索领域
- 新药搜索、基因筛选等生物医药领域
处理图片、视频、语音、文本等非结构化数据的需求正在随着智慧城市,短视频,商品个性化推荐,视觉商品搜索等新兴应用领域的出现而持续的增长。而处理这些非结构化数据最主流的方法就是通过人工智能技术(深度学习算法)提取这些非结构化数据的特征,并用特征向量来表示,然后通过对这些特征向量的计算和检索来实现对非结构化数据的分析与检索。
Milvus就是为了方便用户能够方便的对特征向量进行计算和检索而设计,支持丰富的特征向量索引算法和异构计算资源的调度,具有完备的用户接口、数据管理组件和图形化管理工具,云原生的设计理念可以让 Milvus 基于K8S轻松实现水平拓展和高可用。
图像视频检索
- 图片搜索
- 图片去重
- 视频去重
- 以商品搜商品
智能问答机器人
- 语义提取
- 个性化推荐
- 语料分析和推荐
赋能传统向量计算
- 分子结构相似性分析
- 分子药理分析
- 药物分子虚拟筛选
4.Milvus 的核心要素
特征 | 说明 |
---|---|
异构计算 | 优化了基于 GPU 搜索向量和建立索引的性能。 可以在单台通用服务器上完成对 TB 级数据的毫秒级搜索。 动态数据管理。 |
支持主流的索引库、距离计算方式和向量索引工具 | 集成了 Faiss、NMSLIB、Annoy 等向量索引库。 支持基于量化的索引、基于图的索引和基于树的索引。 相似度计算方式包括欧氏距离 (L2)、内积 (IP)、汉明距离、杰卡德距离等。 Prometheus 作为监控和性能指标存储方案,Grafana 作为可视化组件进行数据展示 |
近实时搜索 | 插入 Milvus 的数据默认在 1 秒后即可被搜索到。 |
标量字段过滤 | 支持 Embeddings 和标量数据。 可以对标量数据进行过滤,增强搜索的灵活性。 |
5.Why Milvus
相比Faiss 和 SPTAG 这样的算子库,Milvus的优势在部署上。
- 对流行的索引算法进行了不同程度地集成,封装的高层API对只关注应用的用户更方便
- 对数据库的存储管理和拓展更适合生产
- docker部署方便,基于K8S轻松实现水平拓展和异构计算
6.一些问题
- milvus库相对一些轻量级的应用还是有些负担,对应这些轻量级的应用往往只需要使用milvus中的一些模块。
- milvus的分布式还是做的有所欠缺,蚂蚁也有一套ZSearch,可以相互借鉴一下