我想使用FAISS对C++中的100 k人脸嵌入进行相似性搜索。对于距离计算器,我想使用余弦相似。为此,我根据需要的文档选择faiss::IndexFlatIP
.But,以便在将向量添加到索引之前对其进行规范化。在python中,文档建议使用以下代码:
index = faiss.IndexFlatIP(dimensions)
faiss.normalize_L2(embeddings)
但是,由于我想在C++中实现相同的东西,我注意到在C++中找不到类似于pythonfaiss.normalize_L2()
中的任何函数。有人能帮忙吗?谢谢已经提前了。
发布于 2022-01-31 11:15:22
您可以构建和使用Faiss
库的Faiss
接口(参见这)。
如果只希望在L2中对C++中的向量进行规范化:
std::vector<float> data;
float sum = 0;
for (auto item : data) sum += item * item;
float norm = std::sqrt(sum);
for (auto &item : data) item /= norm;
https://stackoverflow.com/questions/70924232
复制相似问题