Trabalhando com a Milvus

Criação de uma coleção no Milvus

No Milvus, as coleções são usadas para armazenar e gerenciar entidades. Uma coleção no Milvus é equivalente a uma tabela em um sistema de gerenciamento de banco de dados relacional (RDBMS).

Consulte Criar uma coleção para criar uma coleção no Milvus.

Inserção de dados no Milvus

Milvus suporta valores padrão para campos escalares, exceto um campo de chave primária. É possível manter alguns campos vazios durante as inserções de dados

Para mais informações, veja Inserir entradas.

Recomenda-se inserir seus dados em lotes pelos seguintes motivos:

  • O número de vetores que podem ser ingeridos em uma única chamada de API GRPC é limitado pelo tamanho máximo da mensagem permitido porKafka. No IBM Cloud, o limite máximo de tamanho da mensagem é limitado a 1 MB

  • O número máximo de linhas que pode ser inserido por vez depende do tamanho total dos dados que você está tentando alimentar. O número exato diminui com o aumento nas dimensões do vetor e a presença de campos não vetoriais na linha.

Use a API de inserção em massa para inserir conjuntos de dados maiores que 500.000 vetores. A API de inserção em massa executa melhor do que a API de inserção em lote ao alimentar conjuntos de dados maiores. O uso de arquivos.npy é a maneira recomendada de ingerir grandes conjuntos de dados. Se você estiver usando a API de inserção em lote, limpe manualmente a coleta após cada 500.000 linhas Para mais informações, veja API de inserção em massa.

Criação de índices no Milvus

Crie um índice antes de realizar a pesquisa ANN (Approximate Nearest Neighbor) em Milvus.

O IBM suporta oficialmente os seguintes índices:

Os índices que não estão listados nesta lista podem funcionar, mas não são validadas pela IBM

Quando o número de linhas em um segmento for menor que 1024, Milvus não criará nenhum índice para esse segmento. Em vez disso, o padrão será usar a pesquisa brute-force para operações de consulta. Quando a contagem de linhas no segmento exceder esse limite, Milvus começará automaticamente a criar os índices.

  • HNSW
  • SCANN
  • FLAT
  • IVF_FLAT
  • IVF_PQ

É possível criar o índice especificando o nome do campo vetorial e os parâmetros de índice. Para mais informações, veja Campos de vetor de índice.

Realização de uma pesquisa de similaridade de vetores no Milvus

No Milvus, você pode realizar uma pesquisa de similaridade vetorial depois de preparar os parâmetros para o cenário de pesquisa.

Realização de uma consulta com base em filtragem escalar no Milvus

No Milvus, você pode realizar uma consulta com base na filtragem escalar. Para mais informações, veja Obter e consulta escalar.

Você pode fazer os seguintes tipos de pesquisa:

  • Pesquisa de intervalo: para encontrar vetores dentro de um intervalo de distância específico do vetor de consulta. Para mais informações, veja Pesquisa de intervalo.
  • Pesquisa de agrupamento: Para obter resultados com base em um campo específico para garantir a diversidade nos resultados. Para mais informações, veja Pesquisa de agrupamento.

Ao executar uma consulta de procura com filtragem escalar em um conjunto de dados grande, é importante ajustar o parâmetro de limite para gerenciar resultados da consulta de forma eficaz. Use a seguinte abordagem para definir o limit parâmetro:

hello_milvus.query(expr=query_condition, output_fields=["random", "embeddings"], limit=100,offset=0)

A soma dos valores de limit e offset parâmetros devem estar na faixa de[ 1, 16384] .

Exclusão de entidades do Milvus usando chave primária

No Milvus, você pode excluir as entidades usando a chave primária. Prepare a expressão booleana que filtra as entidades a serem excluídas.

Para obter mais informações, consulte Excluir entidades.

Deixando uma coleção de Milvus

A retirada de uma coleção da Milvus é irreversível. Não é possível recuperar os dados excluídos.

Adicione o seguinte ao seu script .ipynb ou Python para soltar uma coleção...

from pymilvus import utility
utility.drop_collection(<collection name>)

Melhores práticas

A seguir estão algumas práticas recomendadas:

  • Se houver campos Varchar longos (mais de 256 caracteres), mantenha os campos não vetoriais fora do Milvus. Você pode mantê-los em um depósito COS ou depósito de armazenamento e realizar uma pesquisa referencial.
  • Certifique-se de que oPyMilvus a versão é2.4.0 ou mais tarde. Milvus 2.4.0 ou versões posteriores suportam pesquisa de vetores esparsos, pesquisa híbrida ( sparse_dense ) e pesquisa de vários vetores.
  • Ao carregar coleções usando inserção em lote, siga o padrão: Insira em lote, libere a memória e repita o processo.
  • Não ingira paralelamente todas as coleções de uma só vez. Ingerir sequencialmente e liberar entre as ingestões.
  • O tamanho máximo de cada coleção deverá corresponder ao número máximo de vetores suportados no tamanho de uma camiseta.
  • Se você tiver várias coleções ou partições carregadas, certifique-se de que a soma dos vetores em todas as entidades carregadas não exceda o limite do tamanho da camiseta. Você ainda pode armazenar mais vetores do que o limite de tamanho da camiseta, desde que o número de vetores carregados esteja dentro do limite.

Durante a atualização Milvus, pode haver um pequeno atraso na resposta por cerca de 20 segundos. As pesquisas em andamento e as consultas de upsert podem falhar. Você pode tentar novamente as consultas imediatamente.

Exemplos de cadernos para Milvus

Com esses notebooks de amostra, você pode experimentar os recursos do Milvus com tutoriais passo a passo. Para acessar os notebooks de amostra, consulte Sample Milvus notebooks.