ММООЗЗГГ.ru

Словарь ИИ

Что такое приближенный поиск соседей

Коротко

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

Поиск и RAG · approximate nearest neighbor

Михаил МозгПроверено: 1 минута чтения

Ребенку

В большом городе ты ищешь друга, который живет ближе всех к школе. Можно обойти все дома и измерить расстояние до каждого, но это займет неделю. А можно сразу пойти в соседние со школой кварталы. Почти всегда друг найдется там, хотя изредка ты кого-то пропустишь. Приближенный поиск соседей работает так же: быстро и почти всегда верно.

Простыми словами

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

Для бизнеса

Почти каждая векторная база работает на таком поиске, и его настройки напрямую влияют на деньги и качество. Параметры индекса меняют баланс: выше полнота, значит больше памяти и медленнее ответ. Индексы на графах быстрые, но держат данные в оперативной памяти, и на десятках миллионов записей это заметная статья расходов на сервер. Сжатие векторов экономит память, но немного снижает точность. Перестроение индекса после массовой загрузки занимает время, его планируют заранее. На небольшой базе хватает точного перебора, а совсем маленькую можно загрузить в модель целиком через CAG. Расчет памяти под индекс входит в подбор сервера для ИИ.

Для специалиста

Задача приближенного поиска ближайших соседей (approximate nearest neighbor, ANN) ослабляет точный k-NN: алгоритм возвращает кандидатов, среди которых большая часть настоящих соседей, в обмен на сублинейное время запроса. Качество измеряют полнотой (recall@k) относительно точного перебора, скорость числом запросов в секунду. Семейства методов: графовые (NSW, HNSW), деревья, хеширование с учетом близости (LSH), инвертированные файлы с квантованием (IVF, PQ). HNSW (Malkov, Yashunin, 2016) строит вложенные слои графов близости, верхние слои разреженнее; поиск спускается сверху вниз, что дает логарифмический рост сложности, а эвристика выбора соседей помогает на сильно кластеризованных данных. ANN-Benchmarks (Aumüller, Bernhardsson, Faithfull, 2018) сравнивает реализации на стандартных наборах по кривой «полнота против запросов в секунду»; в той работе на наборе GloVe HNSW оказался быстрее остальных при всех значениях полноты. Авторы отмечают, что очень разные подходы дают сопоставимый баланс качества и скорости. На практике к этому добавляются фильтрация по метаданным и обновление индекса.

Пример

Маркетплейс хранит векторы описаний всех товаров. Когда покупатель открывает карточку, приближенный поиск за миллисекунды подбирает похожие позиции, и блок «похожие товары» загружается вместе со страницей.

Связанные термины

Вопросы и ответы

Насколько приближенный поиск менее точен?

Это настраивается. Параметры индекса позволяют находить почти всех настоящих соседей ценой памяти и скорости, и баланс выбирают по замеру полноты на своих данных.

Что такое HNSW?

Это распространенный алгоритм приближенного поиска, который строит многоуровневый граф связей между похожими векторами. Поиск спускается по уровням сверху вниз и быстро приходит к ближайшим записям.

Источники

Где это применяют в компании

Не уверены, нужно ли это вашей компании?

Карта ИИ-решений
Написать в Telegram