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:
| Formato | Descrição |
|---|---|
parquet | O 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. |
vortex | Um 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:
| Formato | Categoria | Fonte esperada | Suporte do Storage V3 |
|---|---|---|---|
parquet | Formato de ficheiro | Um 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. |
vortex | Formato de ficheiro | Um 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-table | Formato de tabela | Um 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-table | Formato de tabela | Um 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 nuvem | Formatos externos suportados | Autenticação entre contas para coleções externas |
|---|---|---|
| Amazon S3 | Todos 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 Storage | parquet, 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
| Funcionalidade | Descrição | Configuração necessária |
|---|---|---|
| Formato de ficheiro Vortex | Gravar novos dados de coleções geridas no formato de ficheiro Vortex. |
|
TEXT campo | Armazene 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ções | Adicione 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 externas | Consulte 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.
Documentação relacionada
- Campo de texto
- Alterar esquema da coleção
- Criar uma coleção externa
- Visão geral das opções de implementação do Milvus
- Atualizar o Milvus Standalone com o Helm Chart
- Atualizar o cluster do Milvus com o Helm Chart
- Configurações relacionadas com o «common»
- Configurações relacionadas com o dataCoord
- Por que criámos o Loon: um motor de armazenamento para dados de IA que nunca param de mudar — Contexto de engenharia sobre as motivações de design por trás do Storage V3.