本文简要总结了当今市场上正在积极开发的7个向量数据库,Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant 的详细比较。
我们已经接近在搜索引擎体验的基础层面上涉及机器学习:在多维多模态空间中编码对象。这与传统的关键字查找不同(即使通过同义词/语义进行了增强)——在许多有趣的方面:
同时,关键字可以以互补的方式与相似度搜索相结合,尤其是当您面临长尾零命中问题(可能相当大,例如在电子商务领域)的情况下。
这篇博文总结了 7 个向量数据库之间的共性和差异,每个都提供商业云支持。7 人中有 5 人将他们的代码作为开源代码提供给您自己的主机。这篇文章不包括神经搜索框架(如Jina.AI、FAISS或 deepset 的Haystack),这些框架应该有自己的博客文章。此外,它并不专注于大型云供应商垂直搜索引擎,例如 Bing 或 Google 的向量搜索引擎。算法基准测试超出了范围,因为您始终可以求助于https://github.com/erikbern/ann-benchmarks查找有关单个算法性能和权衡的详细信息。
我冒昧地从以下五个角度考虑了每个搜索引擎:
每个搜索引擎都附有元数据:
链接到描述该技术的主页
类型:自托管和/或托管
代码链接到可用的源代码
链接:https ://milvus.io/
类型:自托管向量数据库
代码:开源
Milvus 实现了四层:接入层、协调服务、工作节点和存储。这些层是独立的,以实现更好的可扩展性和灾难恢复
3.算法:允许多个基于 ANN 算法的索引:FAISS、ANNOY、HNSW、RNSG。
链接:https ://www.pinecone.io/
类型:托管向量数据库
代码:封闭源代码
Pinecone 是一个托管向量数据库,使用 Kafka 进行流处理,使用 Kubernetes 集群实现高可用性以及Blob 存储(向量和元数据的真实来源,用于容错和高可用性)
3.算法:由 FAISS 提供支持的 Exact KNN;ANN 由专有算法提供支持。支持所有主要距离度量:余弦(默认)、点积和欧几里得。
链接:https ://vespa.ai/
类型:托管/自托管向量数据库
代码:开源
Vespa 架构图
3.算法:HNSW(针对实时CRUD和元数据过滤进行了修改);一套重新排序和密集检索方法。
链接:https ://www.semi.technology/developers/weaviate/current/
类型:托管/自托管向量数据库
代码:开源
这是Weaviate的系统级架构图。它显示了索引组合:您可以存储向量、对象和倒排索引数据,以混合和匹配适合您用例的搜索功能。支持用于不同任务的模块,例如问答。
系统级概览
使用虚拟分片将分片分布到节点上(受Cassandra 分片启发)
3.算法:自定义实现的 HNSW,调整到规模,并支持完整的 CRUD。只要能做CRUD ,系统就支持插件ANN算法。
链接:https ://vald.vdaas.org/
类型:自托管向量搜索引擎
代码:开源
Vald 在 Kubernetes 集群之上运行以利用其 HPA 和分布式功能
3.算法:基于最快算法:NGT,比很多强算法,如Scann和HNSW都要快。
链接:https ://www.gsitechnology.com/APU
类型: Elasticsearch / OpenSearch的向量搜索硬件后端
代码:封闭源代码
GSI APU 驱动的 Elasticsearch 架构的架构(GSI Technology提供的屏幕截图)
APU板特点
3.算法:保持神经散列的汉明空间局部性。
链接:https ://qdrant.tech/
类型:托管/自托管向量搜索引擎和数据库
代码:开源
集合级架构
3.算法: Rust 中的自定义HNSW 实现。
原文标题:Not All Vector Databases Are Made Equal
原文作者:Dmitry Kan
原文链接:https://towardsdatascience.com/milvus-pinecone-vespa-weaviate-vald-gsi-what-unites-these-buzz-words-and-what-makes-each-9c65a3bd0696