C++中类似于Python的faiss.normalize_L2()的等价函数是什么?

3

我希望使用C++和FAISS对10万个面部嵌入进行相似度搜索。为了进行余弦相似度计算,我选择使用faiss::IndexFlatIP。但是根据文档,我们需要在将向量添加到索引之前对其进行归一化。文档建议在Python中使用以下代码:

index = faiss.IndexFlatIP(dimensions)
faiss.normalize_L2(embeddings)

但是,当我想在C++中实现相同的功能时,我发现找不到与Python中faiss.normalize_L2()类似的函数。有人能帮忙吗?感谢您提前。

1个回答

3
你可以构建和使用Faiss库的C++接口(请参见this)。
如果你只想在C++中进行向量的L2归一化:
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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接