Вопрос с собеседования · AI и LLM

Как работает индекс HNSW и какие у него настройки?

MiddleЭмбеддинги и векторный поиск
Ещё спрашивают так:
  • Что такое HNSW?
  • Что такое ef_search и M?
Коротко

HNSW строит многоуровневый граф близости векторов: на верхних уровнях мало точек и длинные связи, на нижних — все точки и короткие связи. Поиск начинается сверху и жадно спускается к ближайшим соседям — это быстро, но приближённо: часть настоящих ближайших может быть пропущена. Настройки: M (число связей у вершины — больше точность и память), ef_construction (тщательность построения — дольше индексация), ef_search (ширина поиска — точнее, но медленнее запрос).

  • Компромисс: полнота (recall) против скорости и памяти
  • ef_search можно менять на лету, M и ef_construction — только при построении
  • Фильтрация по метаданным может резко снизить полноту — нужна поддержка фильтров в индексе

А ещё Полноту измеряют, сравнивая с точным перебором на выборке запросов

Подробно

Пример (pgvector):

CREATE INDEX ON chunks USING hnsw (embedding vector_cosine_ops)
  WITH (m = 16, ef_construction = 64);
SET hnsw.ef_search = 100;

Как подобрать:

  1. Взять выборку запросов, найти точных соседей перебором.
  2. Для разных ef_search измерить recall@10 и задержку.
  3. Выбрать минимальный ef_search с допустимой полнотой.

Альтернативы: IVF (кластеры, меньше памяти, нужна обучающая выборка), сжатие векторов (PQ) для очень больших объёмов.

Что хотят услышать

  • Многоуровневый граф и жадный спуск.
  • Параметры M, ef_construction, ef_search.
  • Компромисс полноты, скорости и памяти.
  • Измерение полноты против точного перебора.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Многоуровневый граф; ef_search — баланс полноты и скорости
  • ✗HNSW всегда находит точных ближайших соседей при любых настройках
  • ✗Плоский граф без уровней; ef_search задаётся только при построении
  • ✗Увеличение M уменьшает и память, и время поиска

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования