首页 > 解决方案 > 如何在 cassandra 中存储 Bert 嵌入

问题描述

我想使用 Cassandra 作为特征存储来存储预先计算的 Bert 嵌入,每一行将包含大约 800 个整数(例如-0.18294132)我应该将所有 800 个整数存储在一个大字符串列还是 800 个单独的列中?

简单的读取模式,在读取时我们希望读取一行中的每个值。不确定哪个对序列化速度更好。

标签: cassandraembeddingbert-language-model

解决方案


将所有内容作为单独的列将非常低效 - 每个值都有自己的元数据(例如写入时间),这将增加大量开销(每个值至少 8 个字节)。将数据存储为字符串也不是很有效,并且会增加应用程序端的复杂性。

我建议根据您的要求将数据存储为整数/长整数或双精度/浮点数的Fronzen 列表。就像是:

create table ks.bert(
  rowid int primary key,
  data frozen<list<int>>
);

在这种情况下,整个列表将被有效地序列化为二进制 blob,仅占用一个单元格。


推荐阅读