Что делает HNSW

Индекс строит многослойный граф близких vectors и ищет путь к соседям без полного перебора. Он ускоряет запросы ценой памяти, времени построения и неполного recall.

Exact baseline обязателен

Для выборки запросов выполните exhaustive KNN и сохраните истинный top-k. ANN оценивается долей совпавших результатов, а не субъективным впечатлением от нескольких ответов.

M и ef_construction

M управляет числом связей и влияет на память и качество графа. ef_construction расширяет поиск соседей при построении: выше обычно лучше recall, но дольше build. Значения зависят от данных и реализации.

ef_search

Больший candidate list обычно повышает recall и latency. Делайте sweep по ef_search на одинаковом наборе, строя curve recall/p95. Выбирайте точку по SLO, а не максимальный recall любой ценой.

Фильтры меняют картину

Редкий metadata filter может оставить мало кандидатов после ANN. Проверяйте pre-filter, iterative scans и partitions. Нагрузочный тест обязан воспроизводить реальную селективность.

Память и обслуживание

Считайте vectors, links, payload, replicas и временную память build. Мониторьте рост индекса, tombstones и время vacuum/reindex. Массовую загрузку часто выгодно выполнить до построения индекса.

Benchmark и rollout

Фиксируйте dataset checksum, embedding version, hardware, параметры и concurrency. Сравните exact, текущий и candidate index; затем shadow queries и canary. Сохраняйте старый индекс до проверки.

С чего начать?
С ограниченного корпуса, реальных запросов и измеримого baseline. Зафиксируйте версии данных, retrieval и модели до эксперимента.
Какие метрики обязательны?
Retrieval quality, correctness ответа, p95 latency, стоимость и ошибки по отдельным сегментам запросов.
Можно ли копировать настройки из документации?
Только как baseline. Финальные параметры выбираются по вашему корпусу, фильтрам, языку и нагрузке.
Как выпускать изменение?
Собрать новую версию рядом, прогнать offline eval и shadow, затем canary с готовым rollback.
Что логировать?
Trace ID, версии pipeline и индекса, transformed queries, candidate IDs, filters и итоговые метрики без лишнего чувствительного payload.
Как избежать утечки данных?
Проверять identity и ACL до retrieval, изолировать кэши и повторно проверять права при показе citations.
← Все статьи блога