Milvus, Pinecone, Vespa, Weaviate, Vald, GSI和Qdrant的详细比较
在撰写这篇博文时,我有幸与所有搜索引擎的关键开发人员/领导层进行了交流:Bob van Luijt和Etienne Dilocker(Weaviate),Greg Kogan(Pinecone),Pat Lasserre,George Williams(GSI Technologies Inc),Filip Haltmayer(Milvus),Jo Kristian Bergum(Vespa),Kiichiro Yukawa(Vald)和Andre Zayarni(Qdrant)。
图片来源 潇湘晨报
我们已经接近在搜索引擎体验的基本层面上涉及机器学习:在多维多模态空间中对对象进行编码。这与传统的关键词查询不同(即使用同义词/语义来加强)--有很多有趣的方式:
同时,关键词可以与相似性搜索相结合,相互补充,特别是当你面临长尾零点击率的问题时(这可能是相当大的,比如在电子商务空间)。
这篇博文在强调7个矢量数据库的共同点和差异方面做了独立的尝试,每个数据库都提供商业云支持。7个中的5个提供了他们的代码作为开放源码供你自己托管。该文章不包括神经搜索框架(如 Jina.AI, FAISS或deepset的 Haystack),这些都值得他们自己的博文。另外,它并不关注大型云厂商的垂直搜索引擎,如Bing的或Google的矢量搜索引擎。算法基准超出了范围,因为你可以随时求助于 https://github.com/erikbern/ann-benchmarks来查找关于单个算法性能和权衡的细节。
我冒昧地从以下五个角度考虑每个搜索引擎:
每个搜索引擎都伴随着元数据:
链接到描述该技术的主要网页
类型:自我托管和/或管理
在有源代码的地方有代码链接
Milvus
链接: https://milvus.io/
类型:自我托管的矢量数据库
代码: 开放源代码
Milvus 四个层次:访问层、协调者服务、工作节点和存储。这些层是独立的,以获得更好的可扩展性和灾难恢复。
Pinecore
链接: https://www.pinecone.io/
类型:托管的向量数据库
代码: 闭源
Pinecone是一个管理的矢量数据库,采用Kafka进行流处理,采用Kubernetes集群实现高可用性,并采用blob存储
Vespa
链接: https://vespa.ai/
类型:管理/自我托管的矢量数据库
代码: 开放源代码
Vespa的鸟瞰图
Weaviate
链接: https://www.semi.technology/developers/weaviate/current/
类型:托管的/自我管理的矢量数据库
代码: 开放源代码
这里是Weaviate的系统级架构图。它显示了索引的构成:你可以存储矢量、对象和倒置的索引数据,以混合和匹配适合你使用情况的搜索功能。支持用于不同任务的模块,如问答。
系统层面概述
使用虚拟分片将分片分布到各节点上(灵感来自于 Cassandra分片)
Vdaas
链接: https://vald.vdaas.org/
类型:自我托管的矢量搜索引擎
代码: 开放源代码
Vald运行在Kubernetes集群之上,以利用其HPA和分布式能力。
用于Elasticsearch和OpenSearch的GSI APU
链接: https://www.gsitechnology.com/APU
类型:矢量搜索硬件后端,弹性搜索
代码: close source
GSI APU驱动的Elasticsearch架构(截图由 GSI技术)
APU板的特点
Qdrant
链接: https://qdrant.tech/
类型:管理/自我托管的矢量搜索引擎和数据库
代码: 开放源代码
收集级架构
这篇博文为你简明扼要地总结了目前市场上正在积极开发的7种矢量搜索引擎。随着我对这些系统的进一步研究,我将增加更深入的研究的链接。
本文由闻数起舞翻译自https://towardsdatascience.com/milvus-pinecone-vespa-weaviate-vald-gsi-what-unites-these-buzz-words-and-what-makes-each-9c65a3bd0696