Что эквивалентно 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;
Другие вопросы по тегам