# eval/ — тяжёлый экстра: эмбеддинг-бенч памяти. Ставится ПОВЕРХ requirements.txt:
#   .venv/bin/pip install -r requirements-embed.txt
#
# Вынесено отдельно по одной причине — это ~2.5 ГБ ради ОДНОГО скрипта. Единственный
# потребитель — retrieval_bench.py, и все три импорта у него ФУНКЦИОНАЛЬНЫЕ, а не
# модульные, поэтому без этого файла падает ровно он и ровно на входе в эти функции:
#   retrieval_bench.py:93   from sklearn.metrics import roc_auc_score   (в threshold_analysis)
#   retrieval_bench.py:153  from sentence_transformers import ...       (в run_embed_model)
#   retrieval_bench.py:223  from rank_bm25 import BM25Okapi             (в run_bm25)
# Модульный там только `import numpy` (:34) — он уже в базовом наборе.
#
# torch НИГДЕ не импортируется напрямую (проверено обходом AST по всем 158 файлам) —
# приходит транзитивно через sentence-transformers, поэтому в базовом файле ему не место.
#
# ⚠ ВЕРСИИ НЕ ПРОСТАВЛЕНЫ НАМЕРЕННО: этих пакетов в стенде нет
# (import sklearn / sentence_transformers / rank_bm25 / torch → ModuleNotFoundError),
# а версия из памяти — выдумка. Пины проставить с ПЕРВОЙ реальной установки.
#
# ⚠ CPU-сборка torch ставится с --extra-index-url https://download.pytorch.org/whl/cpu
# — решать при первом реальном прогоне, не заранее.
#
# Под CPython 3.14 колёса есть у всех (сверено на PyPI 02.08.2026: torch
# cp314-manylinux_2_28_x86_64, scikit-learn cp314, sentence-transformers и rank_bm25 —
# чистый Python), так что 3.14 сам по себе не блокер.

sentence-transformers
torch
scikit-learn
rank_bm25
