Что эквивалентно faiss.normalize_L2() Python в C++?
Я хочу выполнить поиск по сходству с помощью FAISS для 100 тыс. лицевых вложений на С++. Для калькулятора расстояний я хотел бы использовать косинусное сходство. Для этой цели я выбираю
faiss::IndexFlatIP
.Но согласно документации нам нужно нормализовать вектор перед добавлением его в индекс. В документации предложен следующий код на питоне:
index = faiss.IndexFlatIP(dimensions)
faiss.normalize_L2(embeddings)
Но поскольку я хотел бы реализовать то же самое на C++, я заметил, что не могу найти в C++ функций, похожих на функции в python.
faiss.normalize_L2()
. Кто-нибудь может помочь? Заранее спасибо.
1 ответ
Вы можете создавать и использовать интерфейс C++ для
Faiss
библиотека (см. это ).
Если вы просто хотите нормализацию 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;