向量数据库调研:四大主流数据库对比分析
向量数据库调研:四大主流数据库对比分析
随着AI技术的快速发展,向量数据库作为存储和检索嵌入式表示的重要工具,其重要性日益凸显。本文将深入探讨向量数据库的概念及其在AI应用中的作用,并对当前主流的四种向量数据库(Pinecone、Weaviate、Qdrant、Milvus)进行详细对比分析,帮助读者更好地理解这一前沿技术领域。
背景
随着行业内AI战略的铺开,知识的存储和表达也有了新的标准。对于向量数据产生了存储检索的需求。向量这个数学表达,在目前是人与AI交互的中间媒介。 所以我们有必要深入探讨向量数据库,并对当前主流的数据库做一些对比分析。
什么是向量数据库?
简单下个定义,因为喂给Transformer的知识首先需要做embedding,所以用于存储embedding之后数据的数据库即可称为向量数据库。
向量数据库需要解决什么问题?因为向量数据库是基于embedding之后的向量的存储与检索。所以首先需要提供存储能力,其次更重要的是检索。
即如何根据一个query快速找到相关的embedding内容。
关于检索,主要是计算两个向量之间的相似度。
推荐的计算两个向量之间距离推荐的算法为: 余弦相似度函数, 其表达式如下:
常见的向量数据库
向量检索是一个革命性的技术,使得开发者和工程师可以将知识或数据向量化之后实现更有效的存储、检索以及推荐。
通过对比这些向量两两之间的相似性,可以实现快速、直观、无缝的信息检索。
Pinecone: 一个全托管的矢量数据库
Pinecone是一个专门为工程师与开发者设计的向量数据库。 作为一个全托管的服务,它减轻了工程师以及运维人员的负担,使得客户可以聚焦于数据内在价值的抽取。
免费版可以支持500w的向量存储,其用法简单,价格低廉,可以快速支持向量检索业务的验证与尝试。
在特性上Pinecone也具有高速、准确以及可拓展等特性,此外也具备对单级元数据过滤和尖端稀疏-密集索引等高级功能。
架构:
Pinecone 是一个托管向量数据库,使用 Kafka 进行流处理,使用 Kubernetes 集群实现高可用性以及Blob 存储(向量和元数据的真实来源,用于容错和高可用性)
算法:由 FAISS 提供支持的 Exact KNN;ANN 由专有算法提供支持。支持所有主要距离度量:余弦(默认)、点积和欧几里得。
Weaviate: weaviate 是一个开源的矢量数据库,具有健壮、可拓展、云原生以及快速等特性
Weaviate 是一个开源的向量数据库,可以存储对象、向量,支持将矢量搜索与结构化过滤与云原生数据库容错和可拓展性等能力相结合。
支持GraphQL、REST和各种语言的客户端访问。 其github地址如下: 开源地址
类 Graphql接口支持的表达查询语法。这允许您对丰富的实体数据运行探索性数据科学查询。
架构:
该产品最重要的元素是向量搜索、对象存储和用于布尔关键字搜索的倒排索引的组合,以避免存储与对象/倒排索引分开的向量数据的不同数据库之间的数据漂移和延迟。
这是Weaviate的系统级架构图。它显示了索引组合:可以存储向量、对象和倒排索引数据,以混合和匹配适合您用例的搜索功能。
支持用于不同任务的模块,例如问答。
使用虚拟分片将分片分布到节点上(受Cassandra 分片启发)
算法:自定义实现的 HNSW,调整到规模,并支持完整的 CRUD。只要能做CRUD ,系统就支持插件ANN算法。
Qdrant: Qdrant 是面向下一代的生成式AI向量数据库,同时也具备云原生的特性。
具有扩展过滤支持的向量相似度引擎。Qdrant 完全用 Rust 语言开发,实现了动态查询计划和有效负载数据索引。
向量负载支持多种数据类型和查询条件,包括字符串匹配、数值范围、地理位置等。
有效负载过滤条件允许您构建几乎任何应该在相似性匹配之上工作的自定义业务逻辑。
架构:
集合级架构
算法: Rust 中的自定义HNSW 实现。
Milvus: 面向下一代的生成式AI向量数据库,支持云原生。
关注整个搜索引擎的可扩展性:如何高效地对向量数据进行索引和重新索引;如何缩放搜索部分。
独特的价值是能够使用多种 ANN 算法对数据进行索引,以比较它们在用例中的性能。
架构:
Milvus 实现了四层:接入层、协调服务、工作节点和存储。这些层是独立的,以实现更好的可扩展性和灾难恢复
算法:允许多个基于 ANN 算法的索引:FAISS、ANNOY、HNSW、RNSG。
综合对比选型
数据库名称 | 开源 | 社区 | 语言 | 算法 | 核心特性 |
---|---|---|---|---|---|
Pinecone | 否 | 未知 | Exact KNN、ANN | 向量存储与检索、全托管 | |
weaviate | 是 | 5.3k star | Go | 自定义HNSW | 同时支持向量与对象的存储、支持向量检索与结构化过滤、具备主流模式成熟的使用案例。高速、灵活,不仅仅具备向量检索,还会支持推荐、总结等能力 |
qdrant | 是 | 6.3k star | Rust | 自定义HNSW 实现 | 向量存储与检索、云原生、分布式、支持过滤、丰富的数据类型、WAL日志写入 |
milvus | 是 | 21.6k star | Go | FAISS、ANNOY、HNSW、RNSG | 极高的检索性能: 万亿矢量数据集的毫秒级搜索非结构化数据的极简管理丰富的API跨平台实时搜索和分析可靠:具有很高的容灾与故障转移能力高度可拓展与弹性支持混合检索统一的Lambda架构社区支持、行业认可 |