M365Con 2027 – бесплатная онлайн-конференция · 11–22 Jan 2027 · 120 sessions→ m365con.net

Блог · Mirko Peters

Решение проблемы миллиарда векторов в Azure AI Search

By ·

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

Automatically translated with AI from the original post. Read the English original

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

Проблема миллиарда векторов в Azure AI Search

Сложности поиска по векторам в масштабе миллиардов

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

При работе с наборами данных масштаба миллиардов вы сталкиваетесь с несколькими ограничениями:

  • Высокая размерность увеличивает вычислительные затраты и может замедлять поиск.
  • Семантический разрыв между векторными представлениями и реальным смыслом может приводить к неточностям.
  • Сборка мусора становится сложной, и удалить устаревшие данные из индексов трудно.
  • Качество векторов зависит от выбранной модели эмбеддингов, что влияет на точность поиска.
  • Масштабируемость увеличивает требования к памяти и может увеличивать время поиска.
  • Проблема холодного старта затрудняет поиск новых элементов без качественных векторных представлений.
  • Интерпретируемость низкая, поэтому понять, почему тот или иной результат появился в поиске, бывает непросто.

Эти сложности делают проблему миллиарда векторов одной из самых трудных в современном ИИ.

Почему важен выбор алгоритма

Выбор алгоритма напрямую влияет на то, как вы решаете проблему миллиарда векторов. Если выбрать алгоритм вроде HNSW, вы получите быстрый доступ и эффективный поиск по большим наборам данных. Однако он требует много оперативной памяти, что может увеличить затраты. Другие алгоритмы, например исчерпывающий KNN, обеспечивают высокую точность, но требуют гораздо больше вычислений, поэтому лучше подходят для небольших наборов данных. Правильный алгоритм помогает сбалансировать скорость, точность и использование ресурсов. Сопоставив алгоритм с вашими потребностями, вы можете оптимизировать производительность для конкретного приложения. Это решение определяет, насколько эффективно вы работаете с огромными наборами данных и сколько тратите на оборудование.

Обзор Azure AI Search

Azure AI Search даёт мощную платформу для решения проблемы миллиарда векторов. Вы можете предварительно обработать данные с помощью продвинутых инструментов очистки и обогащения, что повышает качество векторов перед индексированием. Платформа упорядочивает информацию в векторную базу данных, предназначенную для задач извлечения и современных потребностей поиска. Вы получаете надёжные функции поиска и извлечения, включая обработку естественного языка для семантического понимания. Безопасность обеспечена на высоком уровне: шифрование и управление доступом защищают ваши данные.

Azure AI Search легко интегрируется с другими сервисами Microsoft Azure и сторонними платформами. Можно использовать гибридный поиск, который объединяет поиск по ключевым словам и векторный поиск для лучших результатов. Ранжирование и настройка релевантности позволяют регулировать отображение результатов поиска, делая их более полезными для пользователей. Платформа также предлагает интеллектуальные сценарии поиска, например автодополнение и предлагаемые результаты. Построенный на глобальной инфраструктуре Azure, Azure AI Search обеспечивает масштаб и надёжность, которые нужны для огромных наборов данных и крупномасштабных проектов.

Индекс на основе графа: HNSW и DiskANN

Graph-Based Index: HNSW and DiskANN

Что такое HNSW

Вам могло встречаться название HNSW, которое расшифровывается как hierarchical navigable small world. Этот графовый алгоритм индексации помогает быстро находить похожие векторы в больших наборах данных. HNSW строит многослойную структуру графа, которая связывает точки данных так, чтобы поиск был быстрым и точным. Плотность каждого слоя графа различна: в верхних слоях узлов меньше, в нижних — больше. Такая конструкция позволяет начинать поиск сверху и двигаться вниз, сужая результаты по мере продвижения. HNSW оптимизирован для поиска векторов в памяти, поэтому он держит весь граф в RAM. Такой подход даёт результаты с низкой задержкой, но при росте набора данных требует много памяти.

Что такое DiskANN

DiskANN — это ответ Microsoft на задачи поиска векторов масштаба миллиардов. Этот графовый индекс использует гибридный подход, который сочетает память и хранилище на SSD. DiskANN позволяет хранить большую часть индекса на SSD, которые намного дешевле RAM. В памяти остаются только самые важные навигационные данные. Такая конструкция помогает управлять огромными наборами данных без высоких затрат на оборудование. DiskANN использует алгоритм графа Vamana, чтобы направлять поиск по данным. Он также применяет особый метод отсечения, который поддерживает разнообразие и эффективность графа. Библиотека diskann от Microsoft лежит в основе Azure AI Search и других сервисов, что делает её ключевой инновацией для корпоративного ИИ.

ИнновацияОписание
Высокоскоростной поиск ANNАрхитектура DiskANN позволяет эффективно выполнять поиск ANN на SSD, что помогает снизить затраты на оборудование.
Гибридная система памятиDiskANN использует сочетание DRAM и SSD, чтобы управлять миллиардами точек на одной машине.
Экономичное хранениеDiskANN хранит индекс ANN на диске, что обеспечивает бюджетное решение для обработки многомерных данных.

Как работает HNSW

Построение графа

HNSW строит свой графовый индекс, создавая иерархию поисковых графов. Вы начинаете с пустой структуры. Первый добавленный вектор становится единственным узлом верхнего слоя. Для каждого нового вектора HNSW случайным образом определяет, в скольких слоях он должен участвовать. Новый вектор соединяется с ближайшими соседями в каждом слое до назначенного максимума. Верхний слой содержит меньше всего узлов, поэтому он служит удобной отправной точкой для поиска. Нижние слои содержат больше узлов, что позволяет выполнять детальный поиск. HNSW может обновлять граф без полного перестроения, поэтому вы можете добавлять новые данные по мере роста потребностей.

Процесс поиска

When you search with hnsw, you begin at the top layer of the graph. Когда вы ищете с помощью HNSW, вы начинаете с верхнего слоя графа. Вы используете длиннодистанционные связи, чтобы быстро приблизиться к области, где может находиться искомый вектор. По мере спуска на каждый слой связи становятся плотнее. Это помогает уточнить поиск и приблизиться к наилучшему совпадению. На самом нижнем слое HNSW использует поиск лучом (beam search), чтобы найти ближайших соседей. Такой процесс даёт быстрые и точные результаты, особенно когда весь граф помещается в памяти.

  • Принципы проектирования HNSW:
    • Оптимизирован для операций в памяти, обеспечивает низкую задержку и высокий recall.
    • Использует многослойную структуру графа, основанную на сетях малого мира.
    • Применяет стратегию отсечения для удаления избыточных рёбер и повышения разнообразия.
    • Поиск заключается в спуске по слоям: сначала разреженные длиннодистанционные связи, а в завершение — поиск лучом на базовом слое.

Как видно, и HNSW, и DiskANN используют графовый индекс, но их конструкции подходят для разных задач. HNSW лучше всего работает, когда всё можно держать в памяти. DiskANN позволяет масштабироваться до миллиардов векторов за счёт SSD, что делает его идеальным выбором для корпоративных нагрузок в Azure AI Search.

Как работает DiskANN

Гибридная архитектура памяти и SSD

Подход DiskANN к поиску по миллиардам векторов необычен. DiskANN сочетает память и хранилище на SSD, создавая гибридную архитектуру. Такая конструкция позволяет хранить большую часть векторного индекса на SSD, которые стоят дешевле RAM. В памяти остаются только необходимые навигационные данные. Этот метод позволяет масштабировать поиск до миллиардов векторов без дорогостоящего оборудования.

DiskANN использует два основных метода для оптимизации хранения и скорости:

  • Граф Vamana: эта структура обеспечивает эффективную навигацию по индексу.
  • Квантование произведением (PQ): векторы сжимаются в памяти, что снижает потребление RAM.

Вы получаете преимущество от двухфазного процесса выполнения запроса. На первой фазе DiskANN использует векторы, сжатые методом PQ и хранящиеся в RAM, чтобы быстро определить набор кандидатов. На этом шаге чтение с диска не требуется. На второй фазе DiskANN извлекает векторы полной точности с SSD для набора кандидатов. Затем вычисляются точные расстояния, чтобы найти наилучшие совпадения. Такой процесс обеспечивает высокую полноту результатов и низкую задержку при небольших требованиях к памяти.

Совет: гибридная архитектура DiskANN, сочетающая память и SSD, позволяет выполнять поиск в масштабах веб-сервиса на стандартном оборудовании. Векторные индексы можно хранить на SSD вместо RAM, что делает крупномасштабные приложения более доступными по стоимости.

Процесс поиска

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

Для каждого кандидата DiskANN извлекает векторы полной точности с SSD. Затем вычисляются точные расстояния между вашим запросом и этими кандидатами. Такой двухфазный процесс обеспечивает точные результаты без замедления поиска. Высокая полнота достигается за счёт того, что DiskANN детально проверяет лучших кандидатов. Низкая задержка также сохраняется, поскольку основная часть работы выполняется в памяти.

Процесс поиска в DiskANN хорошо подходит для огромных наборов данных. Вы можете обрабатывать миллиарды векторов без необходимости в большом объёме RAM. Результаты остаются быстрыми и надёжными даже по мере роста данных. Это делает DiskANN сильным выбором для корпоративных нагрузок ИИ в Azure AI Search.

ЭтапЧто вы делаетеПреимущество
Фаза 1: навигацияИспользуйте векторы, сжатые методом PQ и хранящиеся в RAM, чтобы найти кандидатовБыстрый поиск, без чтения с диска
Фаза 2: уточнениеИзвлеките векторы полной точности с SSD и вычислите расстоянияВысокая полнота, низкая задержка

Вы видите, что гибридная архитектура DiskANN и процесс поиска помогают эффективно решать задачу миллиардов векторов. Вы можете масштабировать поиск, снижать затраты и сохранять производительность по мере роста данных.

Преимущества и недостатки

Плюсы и минусы HNSW

Вы часто выбираете hnsw для векторного поиска, потому что он обеспечивает скорость поиска на уровне современных решений и высокую полноту. При правильной настройке hnsw вы получаете быстрые результаты и точные совпадения. Он хорошо работает с многомерными векторными данными, что важно для современных нагрузок ИИ. Также вы выигрываете от инкрементального добавления: индекс можно обновлять без полной перестройки.

ПреимуществаНедостатки
Скорость поиска на уровне современных решений и высокая полнота при правильной настройке.Высокое потребление памяти из-за хранения графовых связей для каждого вектора.
Хорошо работает с многомерными данными.Длительное построение индекса при высококачественных параметрах построения.
Эффективно поддерживает инкрементальное добавление.Сложное удаление элементов может со временем снижать производительность.

Масштабирование hnsw эффективно, поскольку построение индекса требует O(N log N). Параллельное построение позволяет использовать многоядерные процессоры, что ускоряет процесс. Потребление памяти растёт линейно с размером набора данных, поэтому требования к хранилищу легко прогнозировать. Однако весь граф необходимо держать в RAM, что ограничивает масштабируемость для наборов из миллиардов векторов.

Плюсы и минусы DiskANN

Обращайтесь к diskann, когда нужно масштабировать векторный поиск за пределы возможностей RAM. Diskann оптимизирован для использования SSD, что снижает затраты на оборудование и позволяет управлять огромными наборами данных. Вы получаете высокую точность и низкую задержку, сочетая поиск в памяти с пакетным чтением с SSD. Diskann поддерживает обновления в реальном времени и гибридный поиск, поэтому вы можете эффективно фильтровать и извлекать векторы.

Обратите внимание на следующие особенности diskann:

  • Экономичное масштабирование за счёт использования SSD вместо RAM.
  • Высокая точность и низкая задержка при масштабировании благодаря поиску в памяти и чтению с SSD.
  • Обновления в реальном времени и гибридное извлечение векторов с фильтрацией.
  • Медленное построение индекса, потому что построение графа Vamana требует больших вычислительных ресурсов.
  • Производительность зависит от пропускной способности и задержки SSD.
  • Обновления обходятся дороже, чем в структурах, работающих в памяти, например в hnsw.
  • Внедрение и настройка требуют тщательной оптимизации.

Вы получаете выгоду от способности diskann работать с квантованными векторами: это сжимает данные и повышает эффективность поиска с использованием памяти. Вы можете использовать diskann для рабочих нагрузок с миллиардами векторов, не беспокоясь об ограничениях оперативной памяти.

Эффективность использования памяти и хранилища

Эффективность памяти и хранилища нужно учитывать при выборе между hnsw и diskann для поиска векторов. Hnsw хорошо работает с наборами данных, которые помещаются в оперативную память сервера. Вы получаете быстрый доступ и высокую производительность, но не можете масштабироваться за пределы объёма памяти. Diskann позволяет увеличить размер набора данных до объёма диска, жертвуя частью скорости ради объёма хранилища. Большую часть индекса вы храните на SSD, что делает diskann идеальным решением для огромных наборов векторных данных.

ХарактеристикаHNSWDiskANN
Эффективность использования памятиОчень эффективен для наборов данных, которые помещаются в кэш сервера (RAM).Предназначен для наборов данных, слишком больших для оперативной памяти.
Эффективность храненияОграничен объёмом доступной оперативной памяти.Расширяет размер набора данных до объёма диска, жертвуя частью скорости ради объёма хранилища.
Оптимизация производительностиИспользует быстрый доступ к памяти для повышения скорости.Минимизирует потери производительности, связанные с более медленным дисковым хранилищем.
Пригодность набора данныхПодходит для наборов данных, помещающихся в оперативную память.Подходит для огромных наборов данных, превышающих объём оперативной памяти.

И hnsw, и diskann используют квантованные векторы, чтобы снизить потребность в хранилище и ускорить поиск. Гибридная архитектура diskann позволяет масштабировать векторный поиск, сохраняя затраты низкими. Вы получаете эффективный по памяти поиск для задач извлечения данных большого масштаба, особенно при работе с квантованными векторами и хранилищем на SSD.

Сравнение алгоритмов векторного поиска

Vector Search Algorithm Comparison

Производительность при масштабировании

Нужно измерять, как алгоритм векторного поиска работает по мере роста набора данных. HNSW и DiskANN оба стремятся обеспечить высокую полноту выдачи и скорость, но их стратегии различаются. HNSW опирается на графы в памяти, поэтому поиск ближайших соседей выполняется быстро, пока векторы помещаются в оперативную память. DiskANN использует гибридный подход с памятью и SSD, поэтому вы можете масштабировать производительность поиска, не беспокоясь об ограничениях памяти.

При поиске ближайших соседей среди миллионов векторов HNSW обеспечивает высокоскоростное извлечение и низкую задержку. Вы можете настраивать параметры полноты и скорости. DiskANN сохраняет высокую полноту и скорость даже при росте набора данных. Большую часть индекса вы храните на SSD, что позволяет работать с миллиардами векторов. Для баланса скорости и точности используется двухэтапный поиск: на первом этапе кандидаты находятся в памяти, а на втором результаты уточняются с помощью SSD.

Оба алгоритма обеспечивают высокую полноту и скорость, но DiskANN позволяет масштабировать производительность поиска за пределы оперативной памяти.

Масштабируемость для миллиардов векторов

Вы сталкиваетесь с новыми задачами, когда набор данных растёт от миллионов до миллиардов векторов. HNSW хорошо работает примерно до 50 миллионов векторов. Вы используете HNSW как алгоритм векторного поиска по умолчанию и настраиваете параметры полноты выдачи. Когда количество векторов достигает 50–500 миллионов, внедряйте шардирование и скалярное квантование. Для повышения эффективности можно использовать двухфазное извлечение. Для наборов данных более 500 миллионов векторов нужны иерархическое извлечение и многоуровневые архитектуры. Для холодных данных используйте агрессивное квантование.

Диапазон количества векторовСтратегия HNSW
1–50 млнИспользуйте HNSW как алгоритм по умолчанию, убедитесь, что векторы помещаются в оперативную память, и настраивайте параметры полноты выдачи.
50–500 млнВнедрите шардирование, включите скалярное квантование и рассмотрите двухфазное извлечение для повышения эффективности.
500 млн+Используйте иерархическое извлечение, многоуровневые архитектуры и агрессивное квантование для холодных данных.

DiskANN меняет правила игры для векторного поиска в масштабе миллиардов. Большую часть индекса вы храните на SSD, поэтому не нужно беспокоиться об ограничениях оперативной памяти. Для сжатия векторов используется product quantization, а данные навигации хранятся в памяти. Вы масштабируете поиск ближайших соседей до миллиардов векторов без потери производительности поиска. DiskANN поддерживает приближённый поиск на основе кластеризации и гибридное извлечение, что помогает управлять огромными наборами данных.

DiskANN позволяет масштабировать алгоритм векторного поиска до миллиардов векторов, что делает его идеальным выбором для корпоративных нагрузок.

Задержка запросов и пропускная способность

Задержка запросов и пропускная способность важны, когда вы выполняете векторный поиск в большом масштабе. HNSW обеспечивает низкую задержку поиска ближайших соседей, поскольку хранит весь граф в памяти. Вы получаете быстрые ответы на запросы и высокую пропускную способность для наборов данных, которые помещаются в RAM. Когда набор данных растёт, задержка увеличивается, и приходится использовать шардирование или многоуровневые архитектуры.

DiskANN использует двухэтапный процесс поиска. Сначала вы выполняете поиск по сжатым векторам в памяти, что позволяет быстро отобрать кандидатов. Затем уточняете запрос, загружая векторы полной точности с SSD. Такой подход сохраняет низкую задержку и высокую пропускную способность даже для наборов данных масштаба миллиардов. Извлечение можно оптимизировать, объединяя чтение с SSD в пакеты и используя эффективные структуры навигации.

С DiskANN вы добиваетесь высокой полноты (recall) и скорости, даже когда объём запросов растёт. Вам не нужно беспокоиться о лимитах памяти, поэтому производительность поиска можно масштабировать для корпоративных приложений.

DiskANN обеспечивает стабильную задержку запросов и пропускную способность, что делает его надёжным выбором для поиска ближайших соседей в больших масштабах.

Стоимость и влияние на ресурсы

При выборе алгоритма векторного поиска для Azure AI Search необходимо учитывать стоимость и влияние на ресурсы. То, как каждый алгоритм использует память и хранилище, влияет на ваш бюджет и на возможности масштабирования.

DiskANN выделяется на нагрузках с миллиардами векторов. Большую часть индекса можно хранить на SSD, которые стоят дешевле RAM. Такая архитектура позволяет масштабироваться от тысяч до миллиардов векторов без существенного роста затрат на память. DiskANN хорошо подходит для производственных AI-нагрузок, поскольку эффективно использует SSD и держит в памяти только самые важные данные.

HNSW лучше всего работает с наборами данных среднего размера. Весь индекс нужно держать в RAM, и это требование ограничивает масштабирование. Если набор данных становится слишком большим, эксплуатационные расходы могут заметно вырасти. Кроме того, HNSW ограничен 2 000 измерениями, что может сузить сценарии использования.

Тип индексаПодходит для нагрузок с миллиардами векторовТребования к памятиЭксплуатационные расходы
DiskANNДа, разработан для производительности на SSDМасштабируется от тысяч до миллиардов векторовРекомендуется для производственных AI-нагрузок
HNSWНет, подходит для наборов среднего размераТребует, чтобы индекс помещался в RAMОграничение: 2 000 измерений

Совет: если вы хотите контролировать затраты и масштабировать поиск до миллиардов векторов, DiskANN даёт явное преимущество. Можно использовать недорогие SSD и держать потребности в памяти на низком уровне.

Примеры использования на практике

Ценность этих алгоритмов хорошо видна в реальных приложениях. Многие организации используют DiskANN и HNSW для разных задач векторного поиска.

  • Для приближённого поиска ближайших соседей можно использовать экономичный гибридный метод. Он сочетает хранение на SSD с графовыми структурами в памяти.
  • DiskANN можно развернуть для статических наборов данных, например научных корпусов, где данные меняются нечасто.
  • DiskANN можно выбрать для развёртываний, чувствительных к затратам. Он хорошо работает в приложениях масштаба миллиардов, где нужно контролировать расходы.
  • DiskANN подходит для запросов, которые допускают задержку менее 10 миллисекунд. Этой скорости достаточно для многих корпоративных задач поиска.
  • Для гибридного поиска можно комбинировать HNSW с инвертированными файлами на диске (HNSW-IF). Этот метод обеспечивает высокую полноту и низкую задержку.
Сценарий использованияОписание
Статические наборы данныхИдеально для научных корпусов, где данные меняются нечасто.
Развёртывания, чувствительные к затратамПодходит для приложений масштаба миллиардов, где важна стоимость.
Запросы, допускающие задержкуХорошо работает для запросов, которые допускают задержку менее 10 мс.

Примечание: многие организации достигают полноты 90% при задержке 10 мс, используя гибридные методы. Такой уровень производительности отвечает потребностям большинства корпоративных AI-приложений поиска.

Выбирайте алгоритм под свою нагрузку. Если нужно масштабировать поиск, контролировать затраты и поддерживать низкую задержку, DiskANN даёт необходимую гибкость и эффективность.

Когда использовать HNSW или DiskANN

Выбор правильного алгоритма для рабочей нагрузки Azure AI Search может существенно повлиять на скорость, стоимость и точность. Нужно учитывать данные, оборудование и то, как часто они меняются. Разберём основные критерии выбора, чтобы вы смогли подобрать подходящий инструмент для векторного поиска.

Критерии выбора

Размер набора данных

Начинать всегда стоит с размера набора данных. Если вы работаете с миллионами векторов, hnsw обеспечивает быстрый и точный поиск. Он лучше всего работает, когда данные помещаются в память. Когда набор данных вырастает до миллиардов векторов, более подходящим вариантом становится diskann. Он использует SSD для хранения большей части индекса, поэтому вам не нужно беспокоиться о нехватке оперативной памяти.

КритерийHNSWDiskANN
Размер набора данныхПодходит для миллионов векторовОптимален для миллиардов векторов

Видно, что hnsw подходит для небольших нагрузок, а diskann справляется с огромными наборами данных без потери производительности.

Оборудование и стоимость

Оборудование и бюджет тоже играют большую роль. Hnsw требует много оперативной памяти, поскольку хранит весь граф в памяти. По мере роста векторной базы данных это может стать дорогим. Diskann помогает экономить, храня большую часть индекса на SSD, которые стоят дешевле оперативной памяти. Вам нужно только достаточно памяти для навигационной части индекса.

КритерийHNSWDiskANN
ИнфраструктураТребования к оперативной памятиСнижает затраты на память

Если вы хотите держать расходы низкими и при этом искать среди миллиардов векторов, diskann даёт явное преимущество.

Требования к задержке

Подумайте о том, насколько быстро вам нужны результаты поиска. Hnsw обеспечивает очень низкую задержку, так как ищет в памяти. Результаты можно получить буквально за несколько миллисекунд, если данные помещаются в оперативную память. Diskann балансирует между скоростью и масштабом. Он использует двухэтапный процесс поиска, поэтому даже на огромных наборах данных результаты остаются быстрыми. Для большинства корпоративных приложений diskann удерживает время выполнения запросов в пределах 10 миллисекунд.

  • Hnsw лучше всего подходит для нагрузок, где важна каждая миллисекунда.
  • Diskann хорошо работает, когда нужно быстро искать в больших наборах данных и вы можете принять небольшое увеличение задержки.

Частота обновлений

От того, как часто меняются данные, тоже зависит выбор. Hnsw хорошо работает со статичными или медленно меняющимися данными. Если вы часто обновляете векторы, может понадобиться перестроение индекса, а это занимает время. Diskann лучше адаптируется к частым обновлениям. Он сохраняет точность и полноту выборки даже при частом добавлении или изменении векторов.

ХарактеристикаHNSWDiskANN
Задержка обновленияТребует полного перестроения индексаЭффективно адаптируется к изменениям
Полнота выборки (recall)Высокая, но снижается при измененияхСтабильная точность при частых изменениях

Если вашему приложению нужно обрабатывать большое количество обновлений, diskann даёт больше гибкости.

Примеры сценариев

Чтобы решить, какой алгоритм подходит именно вам, можно опираться на реальные сценарии.

МетрикаHNSWDiskANN
Средняя полнота выборки (recall)0.60.7
Сквозная точность0.9720.933
Robustness-0.2@100.9980.984
Robustness-0.90.840.81
  • Hnsw обеспечивает высокую полноту выборки и быструю пропускную способность запросов. На наборах данных вроде SIFT1M можно добиться примерно 95% recall@10 всего за 1–2 миллисекунды на запрос на CPU.
  • Diskann показывает более высокую среднюю полноту выборки, то есть находит больше действительных совпадений в больших наборах данных. Точность остаётся высокой даже при росте объёма данных.
  • Hnsw лучше всего работает для систем рекомендаций или поисковых движков, где нужны максимальная точность и скорость.
  • Diskann подходит для масштабного поиска, например по миллиардам изображений товаров или документов, где нужно сбалансировать скорость, стоимость и масштаб.

Hnsw выделяется в нагрузках, которым нужен максимально быстрый поиск на небольших наборах данных. Diskann раскрывается, когда нужно искать по огромным объёмам данных, не выходя за рамки бюджета.

Миграция и гибридные подходы

Выбирать один алгоритм для всех ситуаций необязательно. Многие организации начинают с hnsw для небольших наборов данных. По мере роста векторной базы данных они переходят на diskann, чтобы обрабатывать больше данных и сохранять низкие расходы. Можно также использовать гибридный подход. Например, самые популярные или свежие векторы можно хранить в памяти с hnsw, а более старые или редко используемые — на SSD с diskann.

  • Начинайте с hnsw для быстрого прототипирования и небольших нагрузок.
  • Переходите на diskann, когда набор данных начинает выходить за пределы возможностей памяти.
  • Комбинируйте оба метода для наилучшего сочетания скорости и масштаба.

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

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

Лучшие практики векторного поиска в Azure

Советы по конфигурации индекса

Высокой производительности в Azure AI Search можно добиться, соблюдая несколько важных рекомендаций по конфигурации. Начните с того, чтобы размер индекса укладывался в одну единицу векторного поиска. Это помогает сохранить скорость и надежность поиска. Старайтесь минимизировать размер эмбеддингов. Более компактные эмбеддинги ускоряют выполнение запросов и увеличивают количество запросов в секунду. Используйте запросы Approximate Nearest Neighbor: они ускоряют поиск без существенной потери точности.

Держите количество результатов на запрос в диапазоне от 10 до 100. Такой диапазон снижает задержку и поддерживает отзывчивость поиска. Не используйте конечные точки моделей, которые масштабируются до нуля, в продуктивной среде. Холодный старт может замедлить поиск и расстроить пользователей. Планируйте пиковые нагрузки, чтобы система могла справляться с внезапным ростом трафика поиска. Используйте служебные участники с токенами OAuth для безопасной и эффективной аутентификации. Всегда применяйте последнюю версию Python SDK, чтобы получить преимущества в производительности. Если нужна более высокая пропускная способность, масштабируйте конечную точку или распределите нагрузку между несколькими конечными точками.

Совет: правильно настроенный индекс — основа оптимизированного векторного поиска в Azure.

Мониторинг и оптимизация

Чтобы сохранять высокую производительность, особенно при нагрузках на миллиарды векторов, необходимо отслеживать и оптимизировать систему поиска. В таблице ниже приведены некоторые эффективные методы:

МетодОписание
Многоуровневые индексыИспользуйте быстрые индексы для часто запрашиваемых данных и сжимайте холодные данные, чтобы экономить место.
Управление fan-outУправляйте взаимодействием шардов и кластеров, чтобы сократить количество сетевых переходов.
КвантованиеУменьшайте размер векторов такими методами, как IVF-PQ, чтобы уложиться в ограничения памяти.
Настройка центроидовИзменяйте количество центроидов, чтобы сбалансировать полноту результатов и накладные расходы.
Асимметричное вычисление расстоянийУскоряйте поиск, сравнивая запросы полной точности со сжатыми векторами.
Целенаправленная маршрутизация запросовИспользуйте метаданные и кластеризацию, чтобы избежать ненужных широковещательных рассылок при поиске.
Минимизация объема передаваемых данныхПередавайте между узлами только идентификаторы и оценки, а не полные векторы.
Иерархическая агрегацияАгрегируйте результаты локально, чтобы снизить объем координации и стабилизировать задержку.
Приоритет памятиУбедитесь, что векторы помещаются в память, для лучшей производительности поиска.
Выборочное использование GPUИспользуйте GPU для индексации при необходимости, но проверяйте, повышают ли они пропускную способность поиска.
Качество сетиОтслеживайте состояние сети, так как оно влияет на задержку поиска.

Примечание: регулярный мониторинг помогает вовремя замечать проблемы и поддерживать бесперебойную работу поиска.

Распространенные ошибки

При настройке или масштабировании системы поиска в Azure можно столкнуться с типичными ошибками. Одна из них — позволить индексу вырасти слишком большим для одной единицы поиска. Это может замедлить запросы и снизить надежность поиска. Использование больших эмбеддингов также может ухудшить производительность. Всегда делайте эмбеддинги как можно меньше для вашего сценария.

Другая ошибка — игнорирование пиковых нагрузок. Если не планировать внезапный рост трафика поиска, система может не справиться под нагрузкой. Использование конечных точек, которые масштабируются до нуля, может вызвать задержки холодного старта и замедлить поиск. Отказ от обновления SDK или неиспользование токенов OAuth может привести к рискам безопасности и упущенной выгоде в производительности.

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

Следуя этим лучшим практикам, вы сможете построить надежный и эффективный поиск в Azure. Вы легко справитесь с большими наборами данных и будете выдавать пользователям быстрые и точные результаты.


Вы решаете задачу миллиарда векторов в Azure AI Search, выбирая алгоритм, подходящий вашим задачам. DiskANN обеспечивает экономичное масштабирование для огромных наборов данных, а HNSW быстро отвечает на запросы при меньших нагрузках. Алгоритм нужно подбирать под нагрузку, масштаб и бюджет. Таблица ниже поможет выбрать лучшую конечную точку:

Тип SKUСценарий использования и описание
Стандартные конечные точкиЛучший выбор, когда критична задержка, а индексы содержат до 320 млн векторов.
Конечные точки, оптимизированные под хранениеИдеально подходят для 10 млн+ векторов, когда допустима некоторая задержка и важна экономическая эффективность.
  • Оцените потребности в хранилище, протестировав несколько документов.
  • Учитывайте обновления и общий объём контента.

Azure AI Search даёт вам гибкость и поддерживает инновации Microsoft для корпоративного ИИ.

Часто задаваемые вопросы

В чём главное различие между HNSW и DiskANN?

HNSW используется для векторного поиска в оперативной памяти. DiskANN позволяет хранить большую часть индекса на SSD. Поэтому DiskANN лучше подходит для работы с миллиардами векторов без высоких затрат на память.

Можно ли использовать DiskANN для приложений реального времени?

Да. DiskANN обеспечивает поиск с низкой задержкой, часто менее 10 миллисекунд. Его можно использовать для задач ИИ-поиска в реальном времени, даже на очень больших наборах данных.

Как выбрать алгоритм для Azure AI Search?

Для небольших наборов данных, которые помещаются в ОЗУ, выбирайте HNSW. Для огромных наборов данных, где нужно экономичное масштабирование, выбирайте DiskANN. Учитывайте размер данных, оборудование и требования к задержке.

Требует ли DiskANN специального оборудования?

Нет. DiskANN можно запускать на обычных серверах с SSD. Дорогие машины с большим объёмом памяти не нужны. Так масштабирование становится проще и дешевле.

Как Azure AI Search защищает ваши данные?

Azure AI Search использует шифрование и контроль доступа. Вы сами определяете, кто может получить доступ к вашим данным. Функции безопасности Microsoft помогают защитить конфиденциальную информацию.

Можно ли обновлять векторный индекс без простоя?

Да, вы можете обновлять индексы как HNSW, так и DiskANN. DiskANN эффективно поддерживает обновления больших наборов данных. Результаты поиска остаются актуальными, а система продолжает работать.

Каковы рекомендации по оптимизации производительности векторного поиска?

Используйте более компактные эмбеддинги, держите индекс в пределах одной единицы поиска и отслеживайте задержку запросов. Всегда обновляйте SDK и закладывайте запас на пиковые нагрузки, чтобы сохранять высокую производительность.


🎧 Послушайте этот эпизод

Хотите практичное объяснение темы HNSW vs DiskANN for Vector Search in Azure AI Search? В этом эпизоде тема раскрыта понятным языком и показано, почему она важна для Microsoft 365, Azure, Power Platform, безопасности, ИИ и современной работы.

Послушайте этот эпизод, если вы хотите:

  • Понять ключевые концепции HNSW vs DiskANN for Vector Search in Azure AI Search
  • Увидеть, как эта тема вписывается в более широкую экосистему технологий Microsoft
  • Узнать, где она может принести практическую пользу вашей организации

Вам также могут понравиться связанные эпизоды M365 FM:

Больше практичных обсуждений Microsoft на M365 FM.

Последнее обновление: июль 2026 г.

Кому стоит послушать

Этот эпизод предназначен для администраторов Microsoft, архитекторов, разработчиков, специалистов по безопасности и бизнес-руководителей, которым нужна практическая основа перед решениями о внедрении, эксплуатации или управлении.

🎧 Вам также стоит послушать

  • Azure Resource Manager — Сильно связанный следующий шаг для углубления этой темы.
  • Infrastructure as Code — Сильно связанный следующий шаг для углубления этой темы.
  • Azure Policy — Сильно связанный следующий шаг для углубления этой темы.

Entities in this article

DiskANN Azure AI Search Vector search Hybrid search Microsoft Azure Cold start Embeddings Semantic model

Related articles

RSS