Перейти к содержанию

Постоянные индексы ANN

Для кого: Пользователи с большой проанализированной библиотекой и частыми векторными запросами. Задача: Создать, проверить, измерить, использовать и очистить необязательные вспомогательные индексы. Тип: Руководство

Постоянные индексы ANN — создаваемые вспомогательные файлы для сохранённых эмбеддингов. Они необязательны: точный поиск продолжает работать без них.

Что хранится

По умолчанию индексы находятся рядом с выбранной базой SQLite:

text
.dj-track-similarity-indexes/

Они содержат созданные файлы векторного индекса и манифесты для одного семейства моделей: maest, mert, muq или clap. Аудиофайлы не копируются, новые строки SQLite не создаются.

Установите необязательный движок

Дополнительный набор ann устанавливает hnswlib:

powershell
python -m pip install -e ".[ann,dev]"

Постоянный движок CLI — hnswlib.

Создайте и проверьте

powershell
dj-sim index build --model clap --db .\data\library.sqlite
powershell
dj-sim index verify --model clap --db .\data\library.sqlite

Активное семейство эмбеддингов выбирается обязательным параметром --model.

Необязательные параметры сборки:

powershell
dj-sim index build --model clap --backend hnswlib --ef-construction 200 --m 16 --ef-search 100 --db .\data\library.sqlite

Измерьте полноту

powershell
dj-sim index benchmark --model clap --recall-k 50 --seed-count 20 --db .\data\library.sqlite

Сравнительный тест сопоставляет индекс с точным поиском и сообщает, пройден ли выбранный порог.

Используйте в текстовом поиске CLAP

В CLI индекс включается явно:

powershell
dj-sim text-search "warm dub techno pads" --use-ann-index --db .\data\library.sqlite

Если вспомогательный файл отсутствует, устарел или не поддерживается, команда предупреждает и возвращается к точному поиску.

Пересобирайте после изменения эмбеддингов

Пересоберите индекс после изменения анализа выбранной модели, сброса эмбеддингов, замены базы или перемещения каталога индекса.

Очистите созданные файлы

Одно семейство моделей:

powershell
dj-sim index clear --model clap --db .\data\library.sqlite

Все вспомогательные индексы в разрешённом каталоге:

powershell
dj-sim index clear --db .\data\library.sqlite

Эти индексы — создаваемое локальное состояние, которое не следует добавлять в Git.

Документация локального инструмента анализа музыкальной библиотеки.