ÍNDICE_ESPARSO_INVERTIDO
O índice SPARSE_INVERTED_INDEX é um tipo de índice utilizado pelo Milvus para armazenar e pesquisar eficazmente vectores esparsos. Este tipo de índice aproveita os princípios da indexação invertida para criar uma estrutura de pesquisa altamente eficiente para dados esparsos. Para obter mais informações, consulte INVERTED.
Criar índice
Para criar um índice SPARSE_INVERTED_INDEX num campo de vectores esparsos 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_sparse_vector_field_name", # Name of the vector field to be indexed
index_type="SPARSE_INVERTED_INDEX", # Type of the index to create
index_name="sparse_inverted_index", # Name of the index to create
metric_type="IP", # Metric type used to measure similarity
params={"inverted_index_algo": "DAAT_MAXSCORE"}, # Algorithm used for building and querying the index
)
Nesta configuração:
index_type: O tipo de índice a construir. Neste exemplo, defina o valor paraSPARSE_INVERTED_INDEX.metric_type: A métrica usada para calcular a similaridade entre vetores esparsos. Valores válidos:IP(Inner Product): Mede a similaridade usando o produto escalar.BM25: Normalmente usado para pesquisa de texto completo, com foco na similaridade textual.Para obter mais detalhes, consulte Tipos de métricas e Pesquisa de texto completo.
params.inverted_index_algo: O algoritmo utilizado para criar e consultar o índice. Valores válidos:"DAAT_MAXSCORE"(predefinição): Processamento optimizado de consultas Document-at-a-Time (DAAT) utilizando o algoritmo MaxScore. O MaxScore proporciona um melhor desempenho para valores k elevados ou consultas com muitos termos, ignorando termos e documentos que provavelmente terão um impacto mínimo. Consegue-o dividindo os termos em grupos essenciais e não essenciais com base nas suas pontuações máximas de impacto, concentrando-se nos termos que podem contribuir para os resultados do top-k."DAAT_WAND": Processamento optimizado de consultas DAAT utilizando o algoritmo WAND. O WAND avalia menos documentos atingidos, aproveitando as pontuações de impacto máximo para ignorar documentos não competitivos, mas tem uma sobrecarga mais elevada por hit. Isso faz com que o WAND seja mais eficiente para consultas com valores k pequenos ou consultas curtas, em que a omissão é mais viável."TAAT_NAIVE": Processamento de consultas Basic Term-at-a-Time (TAAT). Embora seja mais lento em comparação comDAAT_MAXSCOREeDAAT_WAND,TAAT_NAIVEoferece uma vantagem única. Ao contrário dos algoritmos DAAT, que utilizam pontuações de impacto máximo armazenadas em cache que permanecem estáticas independentemente das alterações ao parâmetro de recolha global (avgdl), oTAAT_NAIVEadapta-se dinamicamente a essas alterações.
Para saber mais sobre os parâmetros de construção disponíveis para o índice
SPARSE_INVERTED_INDEX, 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.
# Prepare the query vector
query_vector = [{1: 0.2, 50: 0.4, 1000: 0.7}]
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field", # Vector field name
data=query_vector, # Query vector
limit=3, # TopK results to return
)
Para saber mais sobre os parâmetros de pesquisa disponíveis para o índice SPARSE_INVERTED_INDEX, 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 algoritmo utilizado para construir e consultar o índice. Determina como o índice processa as consultas. |
|
Utilize Escolha Utilize |
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 afinação |
|---|---|---|---|
|
A proporção dos valores mais pequenos a ignorar durante a pesquisa, ajudando a reduzir o ruído. |
Fração entre 0,0 e 1,0 (por exemplo, 0,2 ignora os 20% mais pequenos dos valores) |
Ajuste este parâmetro com base na esparsidade e no nível de ruído dos seus vectores de consulta. Esse parâmetro controla a proporção de valores de baixa magnitude descartados durante a pesquisa. Aumentar este valor (por exemplo, para |