我有5GB的字典,其中键是单词,值是300d数字矢量,但我只有1GB RAM(减去200MB服务器)和50GB ssd。我的目标是针对输入句子中的每个单词,相对快速地(1-3秒)检索向量。
哪种存储系统最适合这种任务?像Mongo这样的非SQL数据库是一个不错的选择吗?
如果是这样,是否有一种方法可以计算出mongo所需的最小缓存内存,并且这种解决方案在给定的硬件上是否可行?
谢谢。
答案 0 :(得分:0)
假设每个具有32
位和32
位word
键的单精度浮点数,5GB
大约总计多达4.1
个向量。
您可以在<word, word>
中存储4.1
词典,其中包含这RAM
百万个条目。字典的值部分指向文件和文件存储在SSD
上的偏移量的组合。如果您的假设不同,则计算应保持相似。
将整个向量存储在单个文件中可能不切实际。只要表空间位于SSD上,将向量存储在数据库中就足够了。
示例:您可能有32
个文件,每个文件有130.000
个向量。然后,单词值的最高5
位表示文件,最低27
位是文件内的偏移量或向量数。