Что делает 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. Сохраняйте старый индекс до проверки.