У меня есть огромный набор данных, в котором каждая точка данных содержит
- первичный идентификатор для точки данных
- вложение для точки данных измерения типа d.
- точки данных
Я хочу построить локально чувствительный га sh с этими данными, которые поддерживают запросы, такие как
- Ввод: id точки данных. Вывод: top n ближайших соседей.
- Вход: id точки данных; введите t, указав тип результата. Выходные данные: верхние n ближайших соседей типа t.
- Входные данные: вектор измерения d. Выходные данные: верхние n ближайших соседей.
- Входные данные: вектор измерения d; введите t, указав тип результата. Вывод: top n ближайших соседей типа t.
Я использую чувствительную к локальности библиотеку spotify ha sh - Annoy. Annoy поддерживает запросы типа 1 и типа 3 из коробки. Я борюсь с поддержкой запросов типа 2 и 4. Пожалуйста, предложите любые библиотеки, которые поддерживают запросы типа 2 и 4 из коробки. Я также открыт для любых обходных путей / предложений, которые вы имеете в виду.
Мои подходы к выполнению запросов типа 2 с Annoy:
- Использование запроса 1 с размером соседа m и применение фильтр типа как этап постобработки. Экспоненциально увеличивайте значение m, пока на этапе последующей обработки не будет получен набор размера n. Недостаток: множественные вызовы на запрос 1 api.
- Создание нескольких хеш-кодов для каждого типа. И используйте запрос 3. Недостаток: не будет работать, если существует большое количество типов данных, как в случае с моим набором данных.
Пожалуйста, сообщите!