type
status
date
slug
summary
tags
category
icon
password
😀
最近在做关于RAG和知识整理及模型化的客户项目,设计到向量数据库这块,进行整理的对比,并详细记录下来,方便对向量数据库有一个大概的认识。
 

📝 主流的向量数据库简介

Milvus

Milvus 是一个高度灵活、可靠且速度极快的云原生开源向量数据库。它为 embedding 相似性搜索和 AI 应用程序提供支持,并努力使每个组织都可以访问向量数据库。 Milvus 可以存储、索引和管理由深度神经网络和其他机器学习(ML)模型生成的十亿级别以上的 embedding 向量。

Weaviate

Weaviate 是一款低延迟的向量搜索引擎,支持不同媒体类型(文本、图像等)。它提供语义搜索、问答提取、分类、可定制模型(PyTorch/TensorFlow/Keras)等功能。Weaviate 从头开始使用 Go构建,存储对象和向量,允许将矢量搜索与结构化过滤和云原生数据库的容错性相结合。它可以通过 GraphQL、REST和各种客户端编程语言进行访问。

🤗 各维度对比

一,可扩展性

notion image
Milvus的可扩展性 关于可扩展性,Milvus 为每种操作类型使用工作节点(处理连接的组件、处理摄取的数据节点、索引的索引节点和搜索的查询节点)。每个节点都有自己分配的CPU和内存资源。Milvus可以动态分配新节点到一个操作组,加快操作速度或减少节点数量,从而为其他操作腾出资源。动态分配节点使扩展和资源规划更容易,并保证了延迟和吞吐量。
Weaviate可扩展性 使用静态分片时,如果数据增长超出了服务器的容量,就需要向集群中添加更多机器,并重新分片所有数据。这可能是一个耗时且复杂的过程。此外,不平衡的分片会造成瓶颈,降低系统效率。
 
二,功能
随着存储在矢量数据库中的非结构化数据元素数量增长到数亿或数十亿,性能成为矢量数据库面临的最大挑战,跨多个节点的水平扩展变得至关重要。
此外,不同的插入率、查询率和底层硬件可能会导致不同的应用需求,因此整体系统可调性是矢量数据库必须具备的功能。
notion image
Milvus 功能 Milvus 支持多个内存索引和表级分区,可实现实时信息检索系统所需的高性能。 支持 RBAC 是企业级应用的要求。 关于分区,通过将搜索限制在数据库的一个或多个子集上,分区可以提供一种比静态分区更有效的数据过滤方式,静态分区可能会带来瓶颈,当数据增长超出服务器容量时需要重新分区。分区是一种管理数据的好方法,它可以根据类别或时间范围将数据分组为子集。这可以帮助您轻松过滤和搜索大量数据,而不必每次都搜索整个数据库。 没有一种索引类型适合所有的使用案例,因为每种使用案例都有不同的折衷方法 随着支持的索引类型越来越多,您可以更灵活地在准确性、性能和成本之间找到平衡。 Weaviate 功能 Weaviate 使用两种类型的索引为数据库提供动力。一种是倒排索引,可将数据对象的属性映射到其在数据库中的位置;另一种是矢量索引,可支持高性能查询。此外,他们的混合搜索方法使用密集矢量来理解查询的上下文,并将其与稀疏矢量相结合进行关键词匹配。
 
三,目标构建
矢量数据库有什么用? 矢量数据库是一种完全可管理的解决方案,用于在海量非结构化数据集上存储、索引和搜索,并利用机器学习模型的嵌入功能。矢量数据库应具备以下功能:
可扩展性和可调性 多租户和数据隔离 一套完整的应用程序接口 直观的用户界面/管理控制台
notion image
Milvus 与 Weaviate:什么适合我? Milvus Milvus 是一个完全开源的独立项目,由多家公司和个人共同维护,其中一些还提供商业服务和支持。毕业于 LF AI Data。 许可证: Apache-2.0 许可证
Weaviate Weaviate 由一家提供云版 Weaviate 的商业公司维护。 原始碼授權類型:BSD-3-Clause license
 

综合比较

这个主要是 Milvus的运营公司zilliz的比较文章,整体给我的感觉是,都在强调Milvus复杂的功能和扩展性,我可能更喜欢Weaviate用go重写后,在主要的核心领域的性能改善。 主要功能上和检索效率上简单高效的设计,现在都是基于微服务部署,不要太复杂的东西,在大量数据放到一个db上的时候,这块迁移也有很大的问题。
 
 

📎 参考文章

  • 引用文章
 
💡
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
RAG与检索AI23年看书以及一些总结