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

milvus-logo
LFAI
Главная
  • Руководство пользователя
  • Home
  • Docs
  • Руководство пользователя

  • Индексы

  • Скалярные индексы

  • Индексные скалярные поля

Скалярные поля индексов

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

Типы скалярного индексирования

Автоматическое индексирование

Чтобы использовать автоматическое индексирование, опустите параметр index_type в строке add_index()чтобы Milvus мог определить тип индекса на основе типа скалярного поля.

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

Чтобы использовать автоматическое индексирование, опустите параметр index_type в createIndex(), чтобы Milvus мог определить тип индекса на основе типа скалярного поля.

Сопоставления между скалярными типами данных и алгоритмами индексации по умолчанию см. в разделе Алгоритмы индексации скалярных полей.

# Auto indexing
client = MilvusClient(
    uri="http://localhost:19530"
)

index_params = MilvusClient.prepare_index_params() # Prepare an empty IndexParams object, without having to specify any index parameters

index_params.add_index(
    field_name="scalar_1", # Name of the scalar field to be indexed
    index_type="", # Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    index_name="default_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("default_index") // Name of the index to be created
    .indexType("") // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "default_index", // Name of the index to be created
    index_type: "" // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
})

Пользовательское индексирование

Чтобы использовать пользовательскую индексацию, укажите конкретный тип индекса с помощью параметра index_type в файле add_index().

Чтобы использовать пользовательскую индексацию, укажите конкретный тип индекса с помощью параметра indexType в IndexParam.

Чтобы использовать пользовательскую индексацию, укажите конкретный тип индекса с помощью параметра index_type в createIndex().

В примере ниже создается инвертированный индекс для скалярного поля scalar_2.

index_params = MilvusClient.prepare_index_params() #  Prepare an IndexParams object

index_params.add_index(
    field_name="scalar_2", # Name of the scalar field to be indexed
    index_type="INVERTED", # Type of index to be created
    index_name="inverted_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("inverted_index") // Name of the index to be created
    .indexType("INVERTED") // Type of index to be created
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "inverted_index", // Name of the index to be created
    index_type: "INVERTED" // Type of index to be created
})

Методы и параметры

  • prepare_index_params()

    Подготавливает объект IndexParams.

  • add_index()

    Добавляет конфигурации индекса в объект IndexParams.

    • имя_поля(строка)

      Имя скалярного поля для индексации.

    • index_type(строка):

      Тип создаваемого скалярного индекса. Для неявного индексирования оставьте его пустым или опустите этот параметр.

      Для пользовательского индексирования допустимыми значениями являются:

      • INVERTED: (Рекомендуется) Инвертированный индекс состоит из словаря терминов, содержащего все токенизированные слова, отсортированные в алфавитном порядке. Подробнее см. в разделе Скалярный индекс.

      • STL_SORT: Сортирует скалярные поля с помощью стандартного алгоритма сортировки библиотеки шаблонов. Поддерживаются только числовые поля (например, INT8, INT16, INT32, INT64, FLOAT, DOUBLE).

      • Trie: Древовидная структура данных для быстрого поиска и извлечения префиксов. Поддерживает поля VARCHAR.

    • имя_индекса(строка)

      Имя создаваемого скалярного индекса. Каждое скалярное поле поддерживает один индекс.

  • create_index()

    Создает индекс в указанной коллекции.

    • имя_коллекции(строка)

      Имя коллекции, для которой создается индекс.

    • index_params

      Объект IndexParams, содержащий конфигурации индекса.

Методы и параметры

  • IndexParamПодготавливает объект IndexParam.
    • fieldName(String) Имя скалярного поля для индексации.
    • indexName(String) Имя создаваемого скалярного индекса. Каждое скалярное поле поддерживает один индекс.
    • indexType(String) Тип создаваемого скалярного индекса. Для неявного индексирования оставьте его пустым или опустите этот параметр. Для пользовательского индексирования допустимыми значениями являются:
      • INVERTED: (Рекомендуется) Инвертированный индекс состоит из словаря терминов, содержащего все токенизированные слова, отсортированные в алфавитном порядке. Подробнее см. в разделе Скалярный индекс.
      • STL_SORT: Сортирует скалярные поля с помощью стандартного алгоритма сортировки библиотеки шаблонов. Поддерживает булевы и числовые поля (например, INT8, INT16, INT32, INT64, FLOAT, DOUBLE).
      • Trie: Древовидная структура данных для быстрого поиска и извлечения префиксов. Поддерживает поля VARCHAR.
  • CreateIndexReqСоздает индекс в указанной коллекции.
    • collectionName(String) Имя коллекции, для которой создается индекс.
    • indexParams(List) Список объектов IndexParam, содержащих конфигурации индекса.

Методы и параметры

  • createIndex

    Создает индекс в указанной коллекции.

    • Имя_коллекции(строка) Имя коллекции, для которой создается индекс.
    • имя_поля(строка) Имя скалярного поля для индексации.
    • index_name(string) Имя создаваемого скалярного индекса. Каждое скалярное поле поддерживает один индекс.
    • index_type(строка) Тип создаваемого скалярного индекса. Для неявного индексирования оставьте его пустым или опустите этот параметр. Для пользовательского индексирования допустимыми значениями являются:
      • INVERTED: (рекомендуется) Инвертированный индекс состоит из словаря терминов, содержащего все токенизированные слова, отсортированные в алфавитном порядке. Подробнее см. в разделе Скалярный индекс.
      • STL_SORT: Сортирует скалярные поля с помощью стандартного алгоритма сортировки библиотеки шаблонов. Поддерживаются булевы и числовые поля (например, INT8, INT16, INT32, INT64, FLOAT, DOUBLE).
      • Trie: Древовидная структура данных для быстрого поиска и извлечения префиксов. Поддерживает поля VARCHAR.

Проверка результата

Используйте метод list_indexes() для проверки создания скалярных индексов:

Используйте метод listIndexes() для проверки создания скалярных индексов:

Используйте метод listIndexes() для проверки создания скалярных индексов:

client.list_indexes(
    collection_name="test_scalar_index"  # Specify the collection name
)

# Output:
# ['default_index','inverted_index']
import java.util.List;
import io.milvus.v2.service.index.request.ListIndexesReq;

ListIndexesReq listIndexesReq = ListIndexesReq.builder()
    .collectionName("test_scalar_index")  // Specify the collection name
    .build();

List<String> indexNames = client.listIndexes(listIndexesReq);

System.out.println(indexNames);

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]
res = await client.listIndexes({
    collection_name: 'test_scalar_index'
})

console.log(res.indexes)

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]   

Ограничения

  • В настоящее время скалярная индексация поддерживает типы данных INT8, INT16, INT32, INT64, FLOAT, DOUBLE, BOOL, VARCHAR и ARRAY, но не тип данных JSON.

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

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

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

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