Разработать сервис музыкальных рекомендаций, который принимает на вход ID песни и возвращает ID топ-K рекомендованных песен.
Запустить команду в основной директории репозитория:
docker compose -f docker/compose.fast.yaml up
(при сборке заранее созданный index и словари ids-uris скачаются с google drive)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements_for_index.txt
python3 create_index.py
, либо черезindex_creation.ipynb
(данные скачаются с google drive. index сохранится с именем index_spotify_d100.bin, также сохраняются словари ids-uris)
Запустить команду в основной директории репозитория:
docker compose -f docker/compose.yaml up
- По ссылке:
http://127.0.0.1:8000/recommend?id=spotify:track:3SuzCeGoNOWmbWOoDMou0B&k=3 - Через OpenAPI docs:
http://127.0.0.1:8000/docs#/
Примерspotify:track:1r0faljjM2b876iNoaDUh5
- Для построения векторных представлений выбран SVD, его конкретная реализация scipy.sparse.svds для разряженных матриц.
- Для построения ann индекса и поиска по нему выбрана библиотека faiss, исходя из последних коммитов, она больше поддерживается и чаще обновляется, чем аналоги в виде annoy, nmslib. По бенчмаркам nmslib быстре faiss, но faiss имеет возможность запускаться на GPU.