advanced
ANN indexes
Обменивайте exactness на latency через approximate nearest-neighbor structures вроде HNSW или IVF.
Точный поиск ближайших соседей по миллионам высокоразмерных векторов слишком медленный; ANN-индексы (approximate nearest neighbor) обменивают идеальный recall на сублинейное время запроса. Популярные структуры: HNSW (граф navigable small world), IVF (инвертированный файл с грубыми кластерами), product quantization для сжатых векторов.
| Индекс | Идея | Параметр | |--------|------|----------| | HNSW | Жадный обход графа | `efConstruction`, `M` | | IVF | Поиск только в топ-кластерах | `nlist`, `nprobe` | | PQ | Сжатие векторов | recall vs память |
Большие `ef` или `nprobe` улучшают recall ценой латентности. Индекс строится offline или инкрементально; обновления могут требовать rebuild или терпеть устаревшие рёбра графа.
На интервью: сформулируйте треугольник recall–latency–memory; почему brute force ломается на масштабе; время построения и семантику обновлений в выбранном движке.
Типовые ошибки: дефолтные ANN-параметры без бенчмарка; индекс на ненормализованных векторах; мгновенные обновления на огромном HNSW; сравнение движков при разном recall; нет периодического rebuild после массовых удалений.
Компромисс — скорость запроса и RAM против настраиваемой потери recall и операционной сложности обслуживания индекса.
Чеклист:
- Определите ANN vs exact k-NN.
- Назовите HNSW и IVF на высоком уровне.
- Объясните параметры настройки recall/latency.
- Опишите build, update и cadence rebuild.
- Бенчмарк на репрезентативной нагрузке запросов.