1) я не читал конкретно про эту сеть, но задача "построить пространство, подходящее для поиска похожих объектов" и "распознать класс объектов" — это разные задачи, требующие разных процессов обучения;
2) задача поиска по датасету — отдельная задача, требующая предварительного обучения сети для получения эмбеддингов;
3) если искать нужно по статическому датасету, то HNSW — отличный вариант, но индекс будет строиться пару недель; если же датасет динамический, то лучше faiss пока ничего не придумали, насколько мне известно.
При использовании faiss у меня получились вот такие результаты: индекс варится 5 часов, занимает 67 гигов, вот оценка качества поиска на модельных данных (BigANN, SIFT), тип индекса IVF262k_HNSW32,PQ64:
R@1 R@10 R@100 time (ms/query)
nprobe=16,efSearch=128,ht=246 0.6546 0.8006 0.8006 4.231
nprobe=32,efSearch=128,ht=246 0.7107 0.8818 0.8818 7.783
nprobe=64,efSearch=128,ht=246 0.7435 0.9343 0.9346 14.691
nprobe=128,efSearch=128,ht=246 0.7653 0.9687 0.9692 28.326
nprobe=256,efSearch=128,ht=246 0.7726 0.9829 0.9834 55.375
Метрика показывает долю истинных top-1 векторов, попадающих в top-k ближайших при запросах к индексу, при разных параметрах поиска, всего 10k запросов.