Pull to refresh

Comments 5

Хороший обзор!
P. P. S. Для себя мы выбрали HNSW.

Я так понимаю HNSW у вас используется где-то в продакшне? Если да, то у меня есть куча вопросов :)
А какая размерность вектора у вас используется?
Какой размер данных (штук векторов) обычно в индексе и какие параметры M / ef выбрали для генерации индекса, какой ef для поиска?
Данные изменяются? Если да, то как часто делаете перейстройку индекса и что делаете с теми данными, которые пока еще не попали в индекс, но по которым хочется искать?
Как решали проблему удаления из индекса, или такой задачи нет/подходит решение перестроением индекса?
Реализовали HNSW самостоятельно или взяли какую-то готовую реализацию?
Спасибо!
До прода еще не успели доехать. Размерность вектора — 128. В индексе сотни миллионов, к проду будет 500-1000M, что может повлиять на настройки, а пока они такие: M=32, efConstruction=800, ef=200. Действительно, готовая реализация в NMSLIB не поддерживает обновления графа, хоть сам алгоритм и позволяет как удалять так и добавлять объекты. В нашей задаче нет необходимости в онлайн обновлениях. Потому свою реализацию делать не стали и взяли NMSLIB.
Вероятно, ручная реализация диаграмм Воронова и триангуляции Делоне.

Очень классная статья, наглядно и понятно. Спасибо!

Sign up to leave a comment.