GPU_IVF_FLAT
Индекс GPU_IVF_FLAT - это ускоренная на GPU версия индекса IVF_FLAT, разработанная исключительно для сред GPU. Он разбивает векторные данные на кластеры nlist и вычисляет сходство, сначала сравнивая вектор целевого запроса с центром каждого кластера. Настраивая параметр nprobe, можно искать только наиболее перспективные кластеры, что сокращает время выполнения запроса, сохраняя баланс между точностью и скоростью. Дополнительные сведения об основополагающих концепциях см. в разделе IVF_FLAT.
Построение индекса
Чтобы построить индекс GPU_IVF_FLAT по векторному полю в Milvus, используйте метод add_index(), указав параметры index_type, metric_type и дополнительные параметры для индекса.
from pymilvus import MilvusClient
# Prepare index building params
index_params = MilvusClient.prepare_index_params()
index_params.add_index(
field_name="your_vector_field_name", # Name of the vector field to be indexed
index_type="GPU_IVF_FLAT", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="L2", # Metric type used to measure similarity
params={
"nlist": 1024, # Number of clusters for the index
} # Index building params
)
В данной конфигурации:
index_type: Тип индекса, который будет построен. В этом примере задайте значениеGPU_IVF_FLAT.metric_type: : Метод, используемый для вычисления расстояния между векторами. Подробнее см. в разделе Метрические типы.params: Дополнительные параметры конфигурации для построения индекса.nlist: Количество кластеров для разделения набора данных.
Чтобы узнать о параметрах построения, доступных для индекса
GPU_IVF_FLAT, обратитесь к разделу Параметры построения индекса.
После того как параметры индекса настроены, вы можете создать индекс, используя метод create_index() напрямую или передавая параметры индекса в метод create_collection. Подробности см. в разделе Создание коллекции.
Поиск по индексу
После того как индекс создан и сущности вставлены, можно выполнять поиск по сходству в индексе.
search_params = {
"params": {
"nprobe": 10, # Number of clusters to search
}
}
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field",
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params=search_params
)
В этой конфигурации:
params: Дополнительные параметры конфигурации для поиска по индексу.nprobe: Количество кластеров для поиска.
Чтобы узнать больше параметров поиска, доступных для индекса
GPU_IVF_FLAT, обратитесь к разделу Параметры поиска по индексу.
Параметры индекса
В этом разделе представлен обзор параметров, используемых для построения индекса и выполнения поиска по нему.
Параметры построения индекса
В следующей таблице перечислены параметры, которые могут быть настроены в params при построении индекса.
Параметр |
Описание |
Диапазон значений |
Предложение по настройке |
|---|---|---|---|
|
Количество кластеров, создаваемых с помощью алгоритма k-means при построении индекса. Каждый кластер, представленный центроидом, хранит список векторов. Увеличение этого параметра уменьшает количество векторов в каждом кластере, создавая меньшие, более целенаправленные разделы. |
Тип: Integer Диапазон: [1, 65536] Значение по умолчанию: |
Большие значения |
Параметры поиска, специфичные для индекса
В следующей таблице перечислены параметры, которые можно настроить в search_params.params при поиске по индексу.
Параметр |
Описание |
Диапазон значений |
Предложение по настройке |
|---|---|---|---|
|
Число кластеров для поиска кандидатов. Большие значения позволяют искать в большем числе кластеров, что улучшает запоминание за счет расширения области поиска, но ценой увеличения задержки запроса. |
Тип: Integer Диапазон: [1, nlist]. Значение по умолчанию: |
Увеличение этого значения улучшает отзыв, но может замедлить поиск. Установите значение В большинстве случаев мы рекомендуем устанавливать значение в этом диапазоне: [1, nlist]. |