2

我想使用 FAISS 对 C++ 中的 100k 面部嵌入执行相似性搜索。对于距离计算器,我想使用余弦相似度。为此,我选择 faiss::IndexFlatIP. 但是根据文档,我们需要在将向量添加到索引之前对其进行规范化。文档在 python 中建议了以下代码:

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

但是因为我想在 C++ 中实现同样的东西,我注意到我在 C++ 中找不到任何与 python 中的函数相似的函数faiss.normalize_L2()。任何人都可以帮忙吗?提前致谢。

4

1 回答 1

2

您可以构建和使用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;
于 2022-01-31T11:15:22.563 回答