database - 数据库、RAM 和重组
问题描述
我有 5GB 字典,其中键是单词,值是 300d 数字向量,但我只有 1GB RAM(减去 200MB 服务器)和 50GB ssd。对于输入句子中的每个单词,我的目标是相对快速(1-3 秒)检索向量。
哪种存储系统最适合此类任务?像 Mongo 这样的非 SQL 数据库是一个不错的选择吗?
如果是这样,有没有办法计算 mongo 需要的最小缓存,这个解决方案对于给定的硬件是否可行?
谢谢你。
解决方案
32
假设每个位和32
位word
键的单精度浮点数,5GB
大致总结为4.1
百万个向量。
您可以将包含这百万个条目的<word, word>
字典存储在. 字典的值部分指向存储在文件中的文件和偏移量的组合。如果您的假设不同,则计算应保持相似。4.1
RAM
SSD
将整个向量存储在一个文件中可能是不切实际的。如果表空间位于 SSD 上,将向量存储在数据库中可能就足够了。
示例:您可以拥有每个32
带有130.000
矢量的文件。然后,5
字值的最高位表示文件,最低27
位是文件内的偏移量或向量号。
推荐阅读
- django - django 模板语句 if != Null 不起作用
- php - 如何在 HTML 网站 SQL SERVER 2017 上显示我的数据库数据
- python - 元组正在将浮点数转换为字符串
- php - 添加到缺货可用性文本,Woocommerce 单品中的可用日期
- javascript - 尝试从选择标记获取值时返回 URL
- javascript - Chatkit:创建新用户
- api - 创建 BIM360 文档的外部链接
- r - 具有多个字符串的字符串中每个元素的最佳匹配
- python - 使用 python 命令更改 jupyter 单元中的内核
- sql-server - SQL Server 将表值函数的输入和输出类型与表值参数匹配