数据集创建
IVFast index的聚类部分是一个自监督的AI聚类模型。由于AI聚类模型的训练需要GPU设备(如V100或T4)且只能出厂训练一次,为保障更好的泛化性,建议使用较大的数据集,如10m(256维,fp32)的特征作为训练集。同时可创建一套或多套不同的数据集作为验证集,包含base(25m个256维fp32的特征),query(N个256维fp32的特征)及GT,数据目录参见如下。
data_path |--- learn10m.npy //"learn10m" 为训练集的名称 |--- data_name1 //验证集1名称 |--- base.npy |--- query.npy |--- gt.npy |--- data_name2 //验证集2名称 |--- base.npy |--- query.npy |--- gt.npy

所有数据在保存之前要做归一化,参考Faiss的归一化方式normalize_L2(learn),确保所有向量的norm=1,配合IP距离计算方式。
术语 |
描述 |
---|---|
learn10m |
用于训练AI模型的数据,大小建议为10000000*256,数据类型为float32。 |
base |
用于底库构建,大小为25000000*256,数据类型为float32。 |
query |
待检索的查询特征,大小为10000*256,数据类型为float32。 |
gt |
查询特征在256维底库中,属于同一目标的底库offset,大小为N*100,数据类型为int64。 |
当前读取数据的接口为np.load,因此,上述四个部分的数据需保存为npy格式,特征保存示例:
from faiss import normalize_L2 normalize_L2(learn10m) normalize_L2(base) normalize_L2(query) np.save("learn10m.npy", learn.astype("float32")) np.save("base.npy", base.astype("float32")) np.save("query.npy", query.astype("float32")) np.save("gt.npy", gt.astype("int64"))
父主题: IVFast训练接口