Armazenamento V3Compatible with Milvus 3.0.x

Visão geral

Os conjuntos de dados de IA evoluem frequentemente após a criação de uma coleção. À medida que os modelos e os fluxos de trabalho mudam, as equipas podem precisar de adicionar texto, gerar novos campos vetoriais para entidades existentes ou utilizar dados armazenados fora do Milvus. O suporte a estes fluxos de trabalho requer um modelo de armazenamento capaz de evoluir com o conjunto de dados.

O Armazenamento V3 fornece este modelo no Milvus 3.0. Utiliza um layout de armazenamento com versões para incorporar dados adicionados ou reescritos ao longo do tempo, enquanto as aplicações continuam a aceder às coleções através das mesmas APIs do Milvus.

O Armazenamento V3 está desativado por predefinição. Após a ativação d common.storage.useLoonFFI, as novas gravações e os resultados da compactação utilizam o Armazenamento V3. Os dados existentes permanecem no seu layout atual até que os dados elegíveis sejam reescritos pela compactação em segundo plano. O Milvus consegue ler ambos os layouts durante esta transição. Ative o Armazenamento V3 para utilizar funcionalidades que dependem dele, e não apenas como uma otimização geral de desempenho.

Formatos de dados no Storage V3

O Storage V3 utiliza manifestos para descrever os dados da coleção independentemente do formato de dados subjacente. Isto permite que a mesma camada de armazenamento funcione tanto com dados geridos pelo Milvus como com dados que permanecem num sistema externo.

Formatos de ficheiros de coleções geridas

Para coleções geridas, a opção « dataNode.storage.format » seleciona o formato de ficheiro para novos dados do Storage V3. A configuração suporta os seguintes valores:

FormatoDescrição
parquetO formato de ficheiro colunar predefinido e amplamente adotado, com ampla compatibilidade com o ecossistema e ferramentas maduras. O Parquet organiza os dados em grupos de linhas e suporta codificação e compressão por coluna, permitindo que o Milvus leia apenas as colunas necessárias e processe de forma eficiente grandes varreduras sequenciais.
vortexUm formato de ficheiro colunar opcional de última geração, construído em torno de codificações extensíveis e combináveis e de estatísticas avançadas. No Milvus, o Vortex suporta projeção de colunas, leituras por intervalo e leituras de acesso aleatório. Estas capacidades podem reduzir leituras de dados desnecessárias para cargas de trabalho adequadas.

A alteração de « dataNode.storage.format » afeta as novas gravações no Storage V3. Os ficheiros existentes mantêm o seu formato atual até que a compactação reescreva os segmentos correspondentes. A maioria das implementações deve manter o formato predefinido « parquet », a menos que testes de desempenho representativos demonstrem que « vortex » se adequa melhor aos seus dados e padrões de acesso.

Coleções externas e formatos de origem suportados

As coleções externas permitem que o Milvus utilize dados armazenados em ficheiros ou tabelas externas. O Storage V3 suporta os seguintes formatos de origem externos:

FormatoCategoriaFonte esperadaSuporte do Storage V3
parquetFormato de ficheiroUm diretório ou prefixo de armazenamento de objetos que contenha ficheiros Parquet.Identifica os ficheiros, lê os seus metadados e grupos de linhas e regista-os num manifesto do Storage V3.
vortexFormato de ficheiroUm diretório ou prefixo de armazenamento de objetos que contenha ficheiros Vortex.Deteta os ficheiros e utiliza o layout e as estatísticas do Vortex para projeção, leituras por intervalo e leituras de acesso aleatório.
lance-tableFormato de tabelaUm diretório de conjunto de dados Lance.Lê os metadados do conjunto de dados e mapeia os seus fragmentos para um manifesto do Storage V3.
iceberg-tableFormato de tabelaUm ficheiro JSON de metadados do Iceberg e um ID de instantâneo.Resolve o instantâneo especificado, planeia os seus ficheiros de dados e preserva os metadados de eliminação por posição. As eliminações por igualdade não são suportadas e devem ser convertidas em eliminações por posição antes de a coleção externa ser atualizada.

As fontes externas são de leitura apenas. O Storage V3 cria e atualiza o seu próprio manifesto sem modificar ou copiar os dados de origem. O Milvus pode então criar índices e executar pesquisas e consultas sobre os dados através de uma coleção externa.

Armazenamento na nuvem e autenticação entre contas

A tabela seguinte descreve apenas a forma como uma coleção externa acede aos dados de origem armazenados noutra conta na nuvem. Não descreve o armazenamento de objetos utilizado para os dados geridos pelo Milvus.

Armazenamento na nuvemFormatos externos suportadosAutenticação entre contas para coleções externas
Amazon S3Todos os quatro formatos acima referidos.Especifique o ARN da função IAM detida pelo cliente. O Storage V3 utiliza o AWS STS AssumeRole para obter credenciais temporárias e atualiza-as conforme necessário. Também pode fornecer um ID externo quando exigido pela política de confiança da função.
Google Cloud Storage (GCS)Os quatro formatos indicados acima.Especifique a conta de serviço de destino. O Storage V3 assume a identidade dessa conta de serviço, utiliza os seus tokens de acesso OAuth de curta duração para aceder ao bucket de origem e atualiza os tokens antes de expirarem.
Azure Blob Storageparquet, vortex e lance-table. O iceberg-table não é suportado.O Milvus solicita credenciais SAS de curta duração através do serviço gRPC privado milvus-tools. O Storage V3 utiliza as credenciais SAS para aceder ao contentor de origem, sendo que as credenciais são renovadas antes de expirarem.
Azure Data Lake Storage Gen2 (ADLS Gen2)Todos os quatro formatos acima referidos.O Milvus solicita credenciais SAS de curta duração através do serviço gRPC privado milvus-tools. O Storage V3 utiliza as credenciais SAS para aceder ao contentor de origem, sendo estas renovadas antes de expirarem.
Alibaba Cloud Object Storage Service (OSS)Os quatro formatos acima referidos.Especifique o ARN da função RAM detida pelo cliente. O Storage V3 assume a função utilizando a identidade de carga de trabalho do tempo de execução ou a função RAM do ECS e, em seguida, utiliza credenciais temporárias para aceder ao bucket de origem.

Para obter instruções sobre a configuração e utilização da recolha externa, consulte Criar uma recolha externa.

Funcionalidades que requerem o Storage V3

FuncionalidadeDescriçãoConfiguração necessária
Formato de ficheiro VortexGravar novos dados de coleções geridas no formato de ficheiro Vortex.
TEXT campoArmazene texto de origem extenso, como passagens, documentos, tickets ou registos, sem definir um comprimento máximo fixo no esquema da coleção.common.storage.useLoonFFI=true
Campos vetoriais gerados por funçõesAdicione uma função BM25 ou MinHash a uma coleção existente para que o Milvus gere um novo campo vetorial a partir de um campo « VARCHAR » existente. O Milvus preenche os valores gerados para as entidades existentes de forma assíncrona, através da compactação em segundo plano.
Coleções externasConsulte dados armazenados fora do Milvus sem os copiar para uma coleção gerida. Atualize a coleção externa quando os dados de origem forem alterados. Para expor campos de origem adicionais, consulte «Alterar o esquema de uma coleção externa».common.storage.useLoonFFI=true

Antes de ativar o Storage V3

Assim que o Milvus gravar dados no Storage V3, não é suportado o downgrade para uma versão do Milvus que não consiga ler o Storage V3. Desativar o Storage V3 posteriormente não converte imediatamente todos os dados existentes no Storage V3 nem restaura a compatibilidade com a versão anterior.

Antes de ativar o Storage V3, tenha em conta o seguinte comportamento dos dados:

  • Como a compactação em segundo plano ( dataCoord.compaction.storageVersion.enabled ) está ativada por predefinição, os dados existentes elegíveis podem transitar para o Storage V3 gradualmente através da compactação em segundo plano.
  • Desativar o Storage V3 altera a versão de armazenamento de destino para futuras gravações e para os resultados de compactação elegíveis. Não converte de forma síncrona todos os dados existentes no Storage V3 nem torna seguro o downgrade de versão.

Ativar o Storage V3

Defina « common.storage.useLoonFFI » como « true » na sua configuração do Milvus:

common:
  storage:
    useLoonFFI: true

O Milvus trata esta definição como atualizável. Aplique a alteração através do fluxo de trabalho de atualização de configuração suportado pela sua implementação. A simples edição de um ficheiro de configuração estático não garante que a implementação em execução tenha recebido o novo valor.

Se pretender adicionar uma Função e o seu campo vetorial gerado a uma coleção existente, ative também as duas definições de compactação necessárias para o preenchimento retroativo de dados existentes:

dataCoord:
  compaction:
    bumpSchemaVersion:
      enabled: true
    storageVersion:
      enabled: true

A saída da Função para entidades existentes é gerada de forma assíncrona através da compactação em segundo plano. Uma atualização bem-sucedida do esquema não indica que o preenchimento retroativo tenha sido concluído para todas as entidades existentes.