这个问题与这个问题相关。
我使用milvus来研究大约一百万张图像的数据集中的图像相似性。
当我插入一张图像时,Milvus会返回一个id,这个id是该图像在milvus数据库(mysql)中的id。当Milvus进行研究时,它会返回最相似图像的id。
现在我需要跟踪“id -> 图像名称”的关系,以便在研究完成后能够展示正确的图像。
在提供的示例中,通常是将这种关系存储在本地字典中(或使用像diskcache这样的包)。
当训练和研究在同一台机器上进行时,这种方法运作良好。
我想在一台机器上进行训练,而在另一台机器上进行推理。
我的第一个想法是将“id->名称”关系存储在与milvus其余部分相同的mysql中的一个单独表中。
这是个好主意吗?这将在研究后增加一个mysql请求。
我可以对milvus的“id->向量”表和我的“名称->id”表进行mysql连接吗?这样milvus就可以在返回图像id的同时返回我的图像名称?
回答:
将“id->名称”关系存储在mysql上是个好主意。
但我不建议使用mysql来存储“id->向量”关系,因为向量数据通常较大,占用更多空间。
顺便提一下,使用像diskcache这样的包来存储“id->名称”关系也是一个不错的选择。因为它非常方便。