GPU_IVF_PQ
Индекс GPU_IVF_PQ основывается на концепции IVF_PQ, объединяя инвертированную кластеризацию файлов с Product Quantization (PQ), которая разбивает высокоразмерные векторы на более мелкие подпространства и квантует их для эффективного поиска сходства. Разработанный исключительно для сред GPU, GPU_IVF_PQ использует параллельную обработку для ускорения вычислений и эффективной работы с большими векторными данными. Для получения дополнительной информации об основополагающих концепциях см. раздел IVF_PQ.
Построение индекса
Чтобы построить индекс GPU_IVF_PQ по векторному полю в 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_PQ", # 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={
"m": 4, # Number of sub-vectors to split eahc vector into
} # Index building params
)
В данной конфигурации:
index_type: Тип индекса, который будет построен. В этом примере задайте значениеGPU_IVF_PQ.metric_type: Метод, используемый для вычисления расстояния между векторами. Поддерживаются следующие значения:COSINE,L2иIP. Подробнее см. в разделе Типы метрик.params: Дополнительные параметры конфигурации для построения индекса.m: Количество субвекторов, на которые нужно разбить вектор.
Чтобы узнать больше параметров построения, доступных для индекса
GPU_IVF_PQ, обратитесь к разделу Параметры построения индекса.
После того как параметры индекса настроены, вы можете создать индекс, используя метод 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", # Vector field name
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_PQ, обратитесь к разделу Параметры поиска по индексу.
Параметры индекса
В этом разделе представлен обзор параметров, используемых для построения индекса и выполнения поиска по нему.
Параметры построения индекса
В следующей таблице перечислены параметры, которые могут быть настроены в params при построении индекса.
Параметр |
Описание |
Диапазон значений |
Предложение по настройке |
|
|---|---|---|---|---|
ЭКО |
|
Количество кластеров, создаваемых с помощью алгоритма k-means при построении индекса. |
Тип: Integer Диапазон: [1, 65536] Значение по умолчанию: |
Большие значения |
PQ |
|
Количество подвекторов (используемых для квантования), на которые нужно разделить каждый высокоразмерный вектор в процессе квантования. |
Тип: Целое число Диапазон: [1, 65536] Значение по умолчанию: Нет |
Большее значение В большинстве случаев мы рекомендуем задавать значение в этом диапазоне: [D/8, D]. |
|
Количество битов, используемых для представления индекса центроида каждого субвектора в сжатом виде. Оно напрямую определяет размер каждой кодовой книги. Каждая кодовая книга будет содержать 2nbits центроидов. Например, если значение |
Тип: Целое число Диапазон: [1, 24] Значение по умолчанию: |
Большее значение |
|
|
Определяет, нужно ли кэшировать исходный набор данных в памяти GPU. Возможные значения:
|
Тип: Строка Диапазон: [ Значение по умолчанию: |
Установка значения |
Параметры поиска, специфичные для индекса
В следующей таблице перечислены параметры, которые могут быть настроены в search_params.params при поиске по индексу.
Параметр |
Описание |
Диапазон значений |
Предложение по настройке |
|
|---|---|---|---|---|
ЭКО |
|
Количество кластеров для поиска кандидатов. |
Тип: Целое число Диапазон: [1, nlist]. Значение по умолчанию: |
Более высокие значения позволяют искать больше кластеров, что улучшает запоминание за счет расширения области поиска, но ценой увеличения задержки запроса. Установите В большинстве случаев мы рекомендуем устанавливать значение в этом диапазоне: [1, nlist]. |