🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Концепции
  • Home
  • Docs
  • Концепции

  • Векторный индекс

  • Индекс на диске

Индекс на диске

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

Чтобы повысить производительность запросов, можно указать тип индекса для каждого векторного поля.

В настоящее время векторное поле поддерживает только один тип индекса. При переключении типа индекса Milvus автоматически удаляет старый индекс.

Необходимые условия

Чтобы использовать DiskANN, обратите внимание, что

  • По умолчанию DiskANN отключен. Если вы предпочитаете индексы в памяти, а не на диске, рекомендуется отключить эту функцию для повышения производительности.
    • Чтобы отключить ее, вы можете изменить queryNode.enableDisk на false в конфигурационном файле milvus.
    • Чтобы включить ее снова, вы можете установить queryNode.enableDisk на true.
  • Экземпляр Milvus работает на Ubuntu 18.04.6 или более поздней версии.
  • Для достижения полной производительности путь данных Milvus должен быть смонтирован на NVMe SSD:
    • Для автономного экземпляра Milvus путь к данным должен быть /var/lib/milvus/data в контейнере, в котором работает экземпляр.
    • Для экземпляра Milvus Cluster путь к данным должен быть /var/lib/milvus/data в контейнерах, где работают QueryNodes и IndexNodes.

Ограничения

Чтобы использовать DiskANN, убедитесь, что вы

  • Используйте в данных только векторы с плавающей точкой и размерностью не менее 1.
  • Для измерения расстояния между векторами используйте только евклидово расстояние (L2), внутреннее произведение (IP) или COSINE.

Настройки индекса и поиска

  • Параметры построения индекса

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

  • Параметры поиска

    ПараметрОписаниеДиапазонЗначение по умолчанию
    search_listРазмер списка кандидатов, больший размер обеспечивает более высокий процент запоминания с ухудшением производительности.[topk, int32_max].16

DiskANN можно настраивать. Вы можете изменить параметры, связанные с DiskANN, в ${MILVUS_ROOT_PATH}/configs/milvus.yaml, чтобы улучшить его производительность.

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBugetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
ПараметрОписаниеДиапазон значенийЗначение по умолчанию
MaxDegreeМаксимальная степень графа Vamana.
Большее значение обеспечивает более высокую скорость отзыва, но увеличивает размер и время построения индекса.
[1, 512]56
SearchListSizeРазмер списка кандидатов.
Большее значение увеличивает время, затрачиваемое на построение индекса, но обеспечивает более высокий процент отзыва.
Установите значение меньше, чем MaxDegree, если вам не нужно сокращать время построения индекса.
[1, int32_max]100
PQCodeBugetGBRatioОграничение на размер кода PQ.
Большее значение обеспечивает более высокую скорость запоминания, но увеличивает потребление памяти.
(0.0, 0.25]0.125
SearchCacheBudgetGBRatioОтношение кэшированных номеров узлов к исходным данным.
Большее значение повышает производительность построения индексов, но увеличивает расход памяти.
[0.0, 0.3)0.10
BeamWidthRatioСоотношение между максимальным количеством запросов ввода-вывода за итерацию поиска и количеством CPU.[1, max(128 / количество CPU, 16)]4.0

Устранение неполадок

  • Как справиться с ошибкой io_setup() failed; returned -11, errno=11:Resource temporarily unavailable?

    Ядро Linux предоставляет функцию асинхронного неблокирующего ввода/вывода (AIO), которая позволяет процессу инициировать несколько операций ввода/вывода одновременно, не дожидаясь завершения ни одной из них. Это помогает увеличить производительность приложений, которые могут совмещать обработку и ввод-вывод.

    Производительность можно настроить с помощью виртуального файла /proc/sys/fs/aio-max-nr в файловой системе proc. Параметр aio-max-nr определяет максимальное количество допустимых одновременных запросов.

    Параметр aio-max-nr по умолчанию равен 65535, вы можете установить его на 10485760.

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?