GPU_IVF_PQ
O índice GPU_IVF_PQ baseia-se no conceito IVF_PQ, combinando o agrupamento de ficheiros invertido com a Quantização de Produtos (PQ), que divide vectores de elevada dimensão em subespaços mais pequenos e quantifica-os para pesquisas de semelhança eficientes. Exclusivamente concebido para ambientes GPU, o GPU_IVF_PQ tira partido do processamento paralelo para acelerar os cálculos e tratar eficazmente dados vectoriais de grande escala. Para obter mais informações sobre conceitos fundamentais, consulte IVF_PQ.
Criar índice
Para construir um índice GPU_IVF_PQ num campo vetorial em Milvus, utilize o método add_index(), especificando os parâmetros index_type, metric_type e parâmetros adicionais para o índice.
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
)
Nesta configuração:
index_type: O tipo de índice a construir. Neste exemplo, defina o valor paraGPU_IVF_PQ.metric_type: O método utilizado para calcular a distância entre vectores. Os valores suportados incluemCOSINE,L2, eIP. Para obter detalhes, consulte Tipos de métricas.params: Opções de configuração adicionais para criar o índice.m: Número de sub-vectores em que dividir o vetor.
Para saber mais sobre os parâmetros de construção disponíveis para o índice
GPU_IVF_PQ, consulte Parâmetros de construção do índice.
Assim que os parâmetros do índice estiverem configurados, pode criar o índice utilizando diretamente o método create_index() ou passando os parâmetros do índice no método create_collection. Para obter detalhes, consulte Criar coleção.
Pesquisar no índice
Depois de o índice ser criado e as entidades serem inseridas, pode efetuar pesquisas de semelhança no índice.
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
)
Nesta configuração:
params: Opções de configuração adicionais para pesquisar no índice.nprobe: Número de clusters a serem pesquisados.
Para saber mais sobre os parâmetros de pesquisa disponíveis para o índice
GPU_IVF_PQ, consulte Parâmetros de pesquisa específicos do índice.
Parâmetros de índice
Esta secção fornece uma visão geral dos parâmetros utilizados para criar um índice e efetuar pesquisas no índice.
Parâmetros de construção do índice
A tabela seguinte lista os parâmetros que podem ser configurados em params ao construir um índice.
Parâmetro |
Descrição |
Intervalo de valores |
Sugestão de afinação |
|
|---|---|---|---|---|
IVF |
|
O número de clusters a criar utilizando o algoritmo k-means durante a construção do índice. |
Tipo: Integer Intervalo: [1, 65536] Valor predefinido: |
Valores maiores de |
PQ |
|
O número de sub-vectores (utilizados para quantização) para dividir cada vetor de alta dimensão durante o processo de quantização. |
Tipo: Inteiro Intervalo: [1, 65536] Valor predefinido: Nenhum |
Um valor Na maioria dos casos, recomendamos que defina um valor dentro deste intervalo: [D/8, D]. |
|
O número de bits utilizados para representar o índice do centróide de cada sub-vetor na forma comprimida. Determina diretamente o tamanho de cada livro de códigos. Cada livro de códigos conterá centroides de 2nbits. Por exemplo, se |
Tipo: Integer Intervalo: [1, 24] Valor por defeito: |
Um valor |
|
|
Decide se o conjunto de dados original deve ser armazenado em cache na memória da GPU. Valores possíveis:
|
Tipo: String Range: [ Valor predefinido: |
Definindo-o para |
Parâmetros de pesquisa específicos do índice
A tabela a seguir lista os parâmetros que podem ser configurados em search_params.params ao pesquisar no índice.
Parâmetro |
Descrição |
Intervalo de valores |
Sugestão de ajuste |
|
|---|---|---|---|---|
FIV |
|
O número de clusters para procurar candidatos. |
Tipo: Integer Intervalo: [1, nlist] Valor predefinido: |
Valores mais altos permitem que mais clusters sejam pesquisados, melhorando a recuperação ao expandir o escopo da pesquisa, mas ao custo de uma maior latência de consulta. Defina Na maioria dos casos, recomendamos que você defina um valor dentro deste intervalo: [1, nlist]. |