两个极端。因此,可调谐的一致性是云原生向量数据库的一个
关键属性。
较高的硬件成本需要具有细粒度的弹性。一些向量数据库操作(
例如,向量搜索和索引构建)是计算密集型的,而硬件加速器
(e。g.gpu或fpga)和/或一个大的工作内存需要良好的性能。
但是,根据应用程序类型的不同,数据库功能之间的工作负载
会有所不同。因此,如果向量数据库没有细粒度的弹性,那么
资源可能会被浪费或分配不当。这就需要仔细地将功能层和硬
件层解耦;系统级别的解耦,如读写逻辑的分离是不够的,弹
性和资源隔离应该在功能级别而不是系统级别进行管理。
总之,现代向量数据库应该具有可调谐的一致性、功能级的解
耦和每个组件的可伸缩性。遵循传统关系数据库的设计原则使得
实现这些设计目标变得非常困难,如果不是不可能的话。实现这
些设计目标的一个关键机会在于放松交易复杂性的可能性。
Manu遵循“以日志作为数据”的范式。具体来说,Manu将整个
系统构建为一组日志发布/订阅微服务。预写日志(WAL)和组件
间的消息以“日志”的形式发布,即可以订阅的持久数据流。读
取端组件,如搜索和分析引擎,都是作为日志订阅者构建的。该
体系结构提供了一种简单而有效的方法来解耦系统功能;它支持
读与写、无状态与有状态、存储与计算的解耦。每个日志条目都
被分配了一个全局唯一的时间戳,并且被称为时间标记的特殊日
志条目(类似于ApacheFlicelink[25]中的水印)被定期插入到每
个日志通道中,为日志订阅者发送事件时间的进展。时间戳和时
间标记构成了可调谐的一致性机制和多版本一致性控制(MVCC)
的基础。为了控制一致性级别,用户可以指定查询的时间戳和订
阅者使用的最新时间标记之间的一个可容忍的时间延迟。
此外,我们还广泛地优化了Manu的性能和可用性。Manu支持向
量搜索的各种索引,包括向量量化[21,33,36,82]、反向索引[23]
和接近图[32]。特别是,我们定制了实现,以更好地利用现代
cpu和gpu的并行化能力,以及ssd比hdd改进的读/写速度。Manu
还集成了来自Milvus [80]的重构功能,如属性过滤和多向量搜
索。此外,构建一个可视化工具,允许用户实时跟踪Manu的性能
,并包括一个自动配置工具,推荐使用机器学习索引算法参数。
综上所述,本文的贡献如下:
我们总结了通过与他人交流而得到的经验教训
在三年内拥有1200名行业用户。我们阐明了向量数据库的典型
应用需求,并展示了它们与传统关系数据库的不同。然后,我
们概述了矢量数据库应该满足的关键设计目标。
我们将Manu的关键架构设计作为云原生向量数据库,围绕放松事
务复杂性的核心设计理念,以换取可调的一致性和细粒度弹性
。
我们提出了重要的可用性和与性能相关的增强,e。g., 高级API
、GUI工具、自动参数配置和SSD支持。
本文的其余部分组织如下。第2节提供了关于载体数据库的需
求和设计目标的背景知识。第三节深入探讨了马努的设计。第4
节强调了可用性和性能的关键特性。第5节讨论了Manu的代表性
用例。第六节审查相关工作。第7节总结了论文,并概述了未来
的工作。
2背景和动机
将视频推荐视为向量数据库的一个典型用例。其目标是帮助用户
根据个人偏好和以前的浏览历史发现新的视频。使用机器学习模
型(特别是深度神经网络),用户和视频的特征,如搜索历史、
观看历史、年龄、性别、视频语言和标签被转换为嵌入向量。这
些模型经过精心设计和训练,以将用户和视频向量之间的相似性
编码到一个共同的向量空间。推荐是通过对指定用户向量的相似
度评分从视频向量集合中检索候选视频来进行的。当新视频更新
、删除部分视频、改变嵌入模型时,系统还需要处理向量的更新
。
载体数据库的视频推荐和其他应用可以涉及数千亿次的载体,
每天以数亿次的规模增长,并为每秒提供数百万次规模的查询(
QPS)。现有的dbms(例如,关系数据库[9,11]、NoSQL [75,85]
、NewSQL [39,73])没有构建来管理该规模的向量数据。此外,
它们的应用程序的底层数据管理需求与矢量数据库应用程序有很
大的不同。 首先,与关系数据库相比,向量数据库的体系结构
和理论还远未成熟。这样做的一个关键原因是,AIand数据驱动
的应用程序仍然处于不断发展的状态,因此也需要继续对向量数
据库进行架构和功能更改。
其次,矢量数据库不需要进行复杂的事务。在上面的示例中,
推荐系统将用户和视频的所有任务特征编码为独立的向量,而不是
在关系数据库中的多行或多列实体字段。因此,行级ACID就足够了
;多表选择(如连接)是不必要的。
第三,矢量数据库应用程序需要一个灵活的性能、经济一致性
的权衡。虽然有些应用程序采用了强的或最终的一致性模型,但
也有一些应用程序介于这两个极端之间。用户可能希望放松一致
性约束,以换取更好的系统吞吐量。在视频推荐示例中,在几秒
钟后观察新上传的视频是可以接受的,但让用户等待推荐会损害
用户体验。因此,该应用程序可以配置
评论