向量检索领域有着非常多优秀产品,不同的产品有着各自的特性,适用于不同的场景,接下来将对已了解的8款优秀向量检索产品进行简单的介绍。
这些产品的对比如下,优缺点此处进行简要介绍,详细介绍见各个产品详细介绍。
序号 | 产品名 | 来源 | 是否开源 | 开发者 | Github Star数 | 优点 | 缺点 |
---|---|---|---|---|---|---|---|
1 | Milvus | 外部 | 是 | Zilliz(上海) | 9.1k | 索引类型多,社区活跃 | 不支持数据分片,架构复杂 |
2 | Faiss | 外部 | 是 | 15.9k | 性能好,索引类型多,成熟 | 不支持服务化 | |
3 | HNSWlib | 外部 | 是 | nmslib | 1.8k | 性能好,召回率高 | 不支持服务化 |
4 | ScaNN | 外部 | 是 | 21.4k | 性能好,召回率高 | 不支持服务化 | |
5 | SPTAG | 外部 | 是 | Microsoft | 4.1k | 性能好 | 索引类型少 |
6 | Vearch | 外部 | 是 | 京东 | 1.3k | 性能好 | 不能实时更新 |
7 | Zsearch | 外部 | 否 | 蚂蚁金服 | / | 索引类型多 | 不开源 |
8 | Proxima | 外部 | 否 | 阿里达摩院 | / | 索引类型多 | 不开源 |
序号 | 产品 | 实时更新 | 过滤功能 | CPU和GPU | 集群模式 | 可服务化 | 开发语言 | SDK |
---|---|---|---|---|---|---|---|---|
1 | Milvus | 是 | 是 | 是 | 是 | 是 | Go/Python | Python/Go/Java/Node |
2 | Faiss | 是 | 否 | 是 | 否 | 否 | C++ | C++/Python |
3 | HNSWlib | 是 | 否 | 是 | 否 | 否 | C++ | C++/Python |
4 | ScaNN | 是 | 否 | 是 | 否 | 否 | C++/Python | C++/Python |
5 | SPTAG | 是 | 否 | 是 | 是 | 是 | C++ | Python/C# |
6 | Vearch | 否 | 否 | 是 | 是 | 是 | Go | Python |
ANN-Benchmark网站对现有流行的向量检索产品进行了性能测试,其测试结果在其官网上展示。
ANN-Benchmark官网:http://ann-benchmarks.com/
Github地址:https://github.com/erikbern/ann-benchmarks
部分性能测试结果如下,更多测试结果参考官网。测试结果中可以看出Google的ScaNN索引和基于HNSW的索引性能较优。
Milvus是国内的一家名为Zilliz公司开源的向量检索产品,Zilliz公司是上海赜睿信息科技有限公司于2017年创立的AI非结构化数据处理和分析品牌。
Zilliz官网:https://zilliz.com/
Milvus 于 2019 年开源,主要用于存储、索引和管理通过深度神经网络和机器学习模型产生的海量向量数据。参考资料如下:
Milvus最新2.0版本架构
优点
缺点
Faiss是Facebook开源的一款优秀的产品,支持的索引类型非常丰富,产品也非常成熟,Faiss主要是对各种基础算法进行组合形成不同场景下高性能的索引类型,其它很多优秀产品都是基于Faiss进行进一步优化。
Github地址:https://github.com/facebookresearch/faiss
文档:https://github.com/facebookresearch/faiss/wiki
支持的索引,常见的索引算法均能在Faiss中看到应用。
优点
缺点
HNSWlib(Hierarchical Navigating Small World lib)nmslib向量检索库中性能最好的一个库,对HNSW算法进行了优化,具有较快的检索速度和较高的召回率,也被大部分其它产品所引用和优化。
Github地址:https://github.com/nmslib/hnswlib
优点
缺点
ScaNN (Scalable Nearest Neighbors)是Google在2020年开源的一个优秀的向量检索库,是google-research下的一个子项目,有着非常好的一个检索性能。因开源时间不长,所能搜索到的资料非常少。
ScaNN索引的向量搜索主要分为如下三个阶段:
ScaNN使用了各向异性矢量量化技术提高了向量检索的精度。
Github地址:https://github.com/google-research/google-research/tree/master/scann
优点
缺点
SPATG (Space Partition Tree And Graph) 是由Microsoft Research (MSR) and Microsoft Bing共同发布的空间分区树和图索引,主要采用的是树和图的技术进行加速检索,可支持服务化和集群化部署。
SPTAG提供了两种索引,如下图
Github地址:https://github.com/microsoft/SPTAG
优点
缺点
Vearch 是京东开源的对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。
Github地址:https://github.com/vearch/vearch
文档:https://vearch.readthedocs.io/zh_CN/latest/overview.html
架构图
优点
缺点
Zsearch是蚂蚁金服基于ES做了更多扩展和性能优化,在 ES 上实现 LSH、IVSPQ、HNSW 插件,项目不开源。
架构图
优点
缺点
Proxima 是阿里内部达摩院开发的一个通用向量检索引擎框架,类似于Facebook开源的Faiss,支持多种索引类型。
架构图
优点
缺点
本文主要对向量检索领域相关的优秀产品进行了产品对比、技术对比和性能对比,以及对各个产品进行了简单的介绍,并阐述了其优缺点。由于个人接触的知识有限,有些优秀的产品没能了解到,或者文中某些数据有误,还请各位小伙伴指正。后续还将进一步分享向量检索的技术详细介绍、测试、应用和思考。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。