GPU_IVF_FLAT
O índice GPU_IVF_FLAT é uma versão acelerada por GPU do índice IVF_FLAT, concebido exclusivamente para ambientes de GPU. Divide os dados vectoriais em nlist unidades de cluster e calcula a semelhança comparando primeiro o vetor de consulta alvo com o centro de cada cluster. Ao ajustar o parâmetro nprobe, apenas os clusters mais promissores são pesquisados, o que reduz o tempo de consulta, mantendo um equilíbrio entre precisão e velocidade. Para obter mais informações sobre conceitos fundamentais, consulte IVF_FLAT.
Criar índice
Para construir um índice GPU_IVF_FLAT num campo vetorial em Milvus, utilize o método add_index(), especificando os parâmetros index_type, metric_type e outros parâmetros 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_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
)
Nesta configuração:
index_type: O tipo de índice a construir. Neste exemplo, defina o valor paraGPU_IVF_FLAT.metric_type: O método utilizado para calcular a distância entre vectores. Para obter detalhes, consulte Tipos de métricas.params: Opções de configuração adicionais para criar o índice.nlist: Número de clusters para dividir o conjunto de dados.
Para saber mais sobre os parâmetros de construção disponíveis para o índice
GPU_IVF_FLAT, 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",
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_FLAT, 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 ajuste |
|---|---|---|---|
|
O número de clusters a criar utilizando o algoritmo k-means durante a construção do índice. Cada cluster, representado por um centróide, armazena uma lista de vectores. Aumentar este parâmetro reduz o número de vectores em cada cluster, criando partições mais pequenas e mais focadas. |
Tipo: Integer Intervalo: [1, 65536] Valor padrão: |
Valores maiores |
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 |
|---|---|---|---|
|
O número de clusters para pesquisar candidatos. Valores mais altos permitem que mais clusters sejam pesquisados, melhorando a recuperação ao expandir o âmbito da pesquisa, mas ao custo de uma maior latência de consulta. |
Tipo: Integer Intervalo: [1, nlist] Valor padrão: |
O aumento desse valor melhora a recuperação, mas pode tornar a pesquisa mais lenta. Defina Na maioria dos casos, recomendamos que defina um valor dentro deste intervalo: [1, nlist]. |