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.
  • Бенчмарк на репрезентативной нагрузке запросов.