• Sobre Milvus
  • Começar a trabalhar
  • Conceitos
  • Guia do utilizador
    • Colecções
    • Esquema e campos de dados
    • Inserir e apagar
    • Índices
    • Pesquisar
    • Embeddings e Reranking
    • Otimização do armazenamento
  • Importação de dados
  • Ferramentas de IA
  • Guia de Administração
  • Ferramentas
  • Integrações
  • Tutoriais
  • FAQs
  • API Reference

Í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 para SPARSE_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 com DAAT_MAXSCORE e DAAT_WAND, TAAT_NAIVE oferece 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), o TAAT_NAIVE adapta-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

inverted_index_algo

O algoritmo utilizado para construir e consultar o índice. Determina como o índice processa as consultas.

"DAAT_MAXSCORE" (predefinição), "DAAT_WAND", "TAAT_NAIVE"

Utilize "DAAT_MAXSCORE" para cenários com valores k elevados ou consultas com muitos termos, que podem beneficiar do facto de ignorar documentos não competitivos.

Escolha "DAAT_WAND" para consultas com valores k pequenos ou consultas curtas para aproveitar a omissão mais eficiente.

Utilize "TAAT_NAIVE" se for necessário um ajuste dinâmico às alterações da coleção (por exemplo, avgdl).

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

drop_ratio_search

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 0.2) pode reduzir o ruído e concentrar a pesquisa em componentes mais significativos, o que pode melhorar a precisão e a eficiência. No entanto, a eliminação de mais valores também pode reduzir a recolha ao excluir sinais potencialmente relevantes. Escolha um valor que equilibre a recuperação e a precisão para sua carga de trabalho.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?