
Раннее завершение KNN-поиска в Manticore Search
ManticoreSearch 34 минуты назад Раннее завершение KNN-поиска в Manticore Search 9 мин 1.3K Поисковые технологии * Поисковая оптимизация * Базы данных * Машинное обучение * Open source * Современные поисковые системы уже...
Значимый прорыв формирует отрасль ИИ: ManticoreSearch 34 минуты назад Раннее завершение KNN-поиска в Manticore Search 9 мин 1. 3K Поисковые технологии * Поисковая оптимизация * Базы данных * Машинное обучение * Open source * Современные поисковые системы уже не просто сопоставляют ключевые слова. Когда вы ищете «уютный детектив, действие которого происходит в Париже», а получаете результаты вроде «атмосферный детективный роман во Франции», это векторный поиск в действии: документы и запросы превращаются в списки чисел — эмбеддинги, — а поисковый движок находит документы, чьи векторы ближе всего к вектору запроса.
Manticore Search поддерживает это из коробки. Внутри используется структура данных HNSW: граф, который соединяет близкие векторы и позволяет быстро находить ближайших соседей без сканирования каждого документа. Благодаря этому векторный поиск по миллионам документов выполняется за миллисекунды.
Технические детали
Но у HNSW есть источник лишней работы. В начале обхода почти каждое вычисление расстояния находит кандидата лучше тех, что уже есть в наборе результатов. По мере поиска такие улучшения встречаются всё реже, но алгоритм продолжает обходить узлы графа, пока не исчерпает лимит обхода.
К этому моменту результаты часто уже достаточно качественные, а оставшаяся работа почти ничего не улучшает. Раннее завершение позволяет определить момент сходимости и досрочно прекратить поиск. Эффект становится заметнее по мере роста k, где k — число ближайших соседей, которое Manticore должен вернуть по запросу.
Чтобы вернуть больше соседей, нужно глубже исследовать граф, и значительная часть этой дополнительной работы происходит уже после достижения приемлемого качества результатов. Поэтому раннее завершение становится полезнее: появляется больше избыточных вычислений, которые можно исключить. С векторным квантованием это выражено ещё сильнее.
Отраслевые последствия
Квантование сжимает хранимые векторы и экономит память, но слегка снижает точность поиска. Чтобы вернуть часть точности, Manticore использует оверсэмплинг: получает в 3 раза больше кандидатов, чем запрошено, а затем выполняет повторную оценку по исходным векторам полной точности. При стандартном 3-кратном оверсэмплинге HNSW исследует гораздо больше кандидатов на запрос.
Большие значения k часто появляются именно из-за такого расширения кандидатов: приложение может запросить у векторного индекса сотни или тысячи кандидатов, а затем переоценить, повторно ранжировать или отфильтровать результаты до гораздо меньшего итогового набора, чтобы повысить recall и precision. Это увеличивает время ответа, а раннее завершение помогает вернуть часть этого времени. Эффект экономии вычислений наглядно демонстрируют бенчмарки на датасете из 1 млн векторов: при k=60, то есть стандартном лимите результатов при дефолтном 3-кратном оверсэмплинге, раннее завершение сокращает число вычислений расстояний примерно до 65% от полного поиска.
При k=1000 число вычислений падает до 30%, а при k=10000 — до 20%.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





