• О Милвусе
  • Начать
  • Концепции
  • Руководство пользователя
  • Импорт данных
  • Инструменты искусственного интеллекта
  • Руководство по администрированию
  • Инструменты
  • Интеграции
  • Учебники
  • Вопросы и ответы
  • API Reference

STL_SORT

Индекс STL_SORT - это тип индекса, специально разработанный для повышения производительности запросов к числовым полям (INT8, INT16 и т. д.), полям VARCHAR или TIMESTAMPTZ в Milvus путем организации данных в отсортированном порядке.

Используйте индекс STL_SORT, если вы часто выполняете запросы с:

  • Сравнительная фильтрация с помощью операторов ==, !=, >, <, >= и <=.

  • Фильтрация диапазонов с помощью операторов IN и LIKE.

Поддерживаемые типы данных

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

Milvus реализует STL_SORT в два этапа:

  1. Построение индекса

    • Во время индексации Milvus собирает все значения для индексируемого поля.

    • Значения сортируются в порядке возрастания с помощью std::sort из C++ STL.

    • Каждое значение сопоставляется с идентификатором сущности, и отсортированный массив сохраняется в качестве индекса.

  2. Ускорение запросов

    • Во время запроса Milvus использует бинарный поиск(std::lower_bound и std::upper_bound) в отсортированном массиве.

    • Для равенства Milvus быстро находит все совпадающие значения.

    • Для диапазонов Milvus находит начальную и конечную позиции и возвращает все значения между ними.

    • Идентификаторы совпадающих сущностей передаются исполнителю запроса для окончательной сборки результатов.

Это снижает сложность запроса с O(n) (полное сканирование) до O(log n + m), где m - количество совпадений.

Создание индекса STL_SORT

Вы можете создать индекс STL_SORT на числовом поле или поле TIMESTAMPTZ. Никаких дополнительных параметров не требуется.

В примере ниже показано, как создать индекс STL_SORT на поле TIMESTAMPTZ:

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530") # Replace with your server address

# Assume you have defined a TIMESTAMPTZ field named "tsz" in your collection schema

# Prepare index parameters
index_params = client.prepare_index_params()

# Add RTREE index on the "tsz" field
index_params.add_index(
    field_name="tsz",
    index_type="STL_SORT",   # Index for TIMESTAMPTZ
    index_name="tsz_index",  # Optional, name your index
    params={}                # No extra params needed
)

# Create the index on the collection
client.create_index(
    collection_name="tsz_demo",
    index_params=index_params
)

Удаление индекса

Используйте метод drop_index() для удаления существующего индекса из коллекции.

client.drop_index(
    collection_name="tsz_demo",   # Name of the collection
    index_name="tsz_index" # Name of the index to drop
)

Указания по использованию

  • Типы полей: Работает с числовыми полями и полями TIMESTAMPTZ. Дополнительные сведения о типах данных см. в разделах Булево и число и Поле TIMESTAMPTZ.

  • Параметры: Параметры индекса не требуются.

  • Mmap не поддерживается: Режим отображения в памяти недоступен для STL_SORT.

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

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

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

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