什么是快速 write/read 数千万个 float32s 嵌入的最佳数据存储?

What would be the best data store for fast write/read of tens of millions of float32s embeddings?

我正在尝试为稀疏嵌入训练创建一个机器学习库。因此,它需要快速 read/write 数百万个维度从 128 到 768 不等的嵌入。每个维度都有一个 float32 值。

只有一个列,每个嵌入的每一行。我没有做任何嵌入相似性搜索或类似的事情,只需要索引 # 来查找嵌入。

训练中的每个更新步骤都会在数据存储中查找和写入值,因此我正在寻找适合我的情况的最快的数据库。将参数保存到磁盘已经会显着减少 ram 内存,因此 Ram 内存的使用对我来说不是问题。

从我有限的研究来看,最热门的候选人似乎是 parquet、hdf5 或某种 SQL。

如果需要推荐最佳数据存储的任何其他要求,请告诉我。

这是一个广泛的话题,但首先是如果速度很重要,大部分答案不一定在于数据库的选择,而是你写的频率,因为如果你把东西放在内存里大多数时候,每隔一段时间做一次批量更新,你会让它变得更快。一种 基本上是缓存和数据库的混合。

我个人会选择 redis because it can actually do both cache and also persist on disk. The configuration even allows you to choose between different types of persistence,其中一些比其他更有效率。 Redis 在设计上已经比大多数选项更快,但配置可以让您对其进行优化。它有几乎所有语言的驱动程序。

这似乎很明显,但如果可以的话,如果您想要获得更快的速度,那么将 cache/database 与您的应用程序放在同一台机器上会更快。