milvus-logo
LFAI
Home
  • Sobre Milvus

Notas de lançamento

Descubra o que há de novo no Milvus! Esta página resume as novas funcionalidades, melhorias, problemas conhecidos e correcções de erros em cada versão. Pode encontrar as notas de lançamento para cada versão lançada após a v2.4.0 nesta secção. Sugerimos que visite regularmente esta página para se informar sobre as actualizações.

v2.4.11

Data de lançamento: 11 de setembro de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.112.4.62.4.32.4.8

Milvus 2.4.11 é uma versão de correção de erros que aborda vários problemas críticos relacionados com o índice de trie MARISA, compactação e operações de carregamento. Esta versão introduz novas funcionalidades para visualizar expressões e melhorar a estabilidade da eliminação. Recomendamos a todos os utilizadores da série 2.4.x que actualizem para esta versão para beneficiarem destas melhorias e correcções.

Caraterísticas

  • Adicionada vista estática para expressões na versão 2.4(#35954)
  • Implementada a lógica de quota relacionada com o buffer de eliminação(#35997)

Correcções de erros

  • Resolvido o problema de operação de intervalo de índices Trie para comparações GreaterThan e GreaterThanEqual(#36126)
  • Correção da utilização de marisa_label_order na construção do índice Trie(#36060)
  • Verificação de valor melhorada para trie.predictive_search (#35999)
  • Ativado o suporte da expressão aritmética binária no índice invertido(#36097)
  • Corrigida a falha de segmento causada pelo Skipindex(#35908)
  • Resolvida a fuga de memória na meta cache do proxy(#36076)
  • Renomeado o caminho do ficheiro mmap para prevenir conflitos de diretórios(#35975)
  • Melhorado o registo e limpeza para tarefas falhadas/timeout na compactação de misturas(#35967)
  • Resolvido o impasse lógico durante a utilização de memória elevada pelo delegador(#36066)
  • Implementada a criação de segmentos vazios quando a compactação elimina todas as inserções(#36045)
  • Correção da população da lista de campos de carga da informação de carga da versão antiga na 2.4(#36018)
  • Correção da lógica de atualização da configuração de rastreio na versão 2.4(#35998)
  • Resolvidas as falhas de pedidos de pesquisa/consulta durante o lançamento de partições dinâmicas(#36019)
  • Impedida a substituição de parâmetros de recurso(#36006)
  • Assegurado o registo adequado de grupos de privilégios para validação(#35938)
  • Evitada a limpeza incorrecta de nós limitadores de db(#35992)
  • Resolvido o problema das réplicas não participarem em consultas após a recuperação de falhas(#35925)
  • Resolvida a corrida de dados no escritor de compactação de clustering(#35958)
  • Corrigida a referência de variável após a operação de mover(#35904)
  • Implementada a verificação do comportamento de carga do clustering key skip(#35899)
  • Assegurado o arranque único dos observadores de querycoord no 2.4(#35817)

Melhorias

  • Actualizada a versão do Milvus & proto para 2.4.11(#36069)
  • Resolvida a fuga de memória nos testes unitários e activada a opção use_asan para compilações unittest(#35857)
  • Ajustados os limites de l0segmentsrowcount para valores mais apropriados(#36015)
  • Modificado o fator de estimativa de memória do deltalog para um(#36035)
  • Implementado slicesetequal para comparações de listas de campos de carga(#36062)
  • Reduzida a frequência de registo para operações de eliminação(#35981)
  • Actualizada a versão do etcd para 3.5.14(#35977)
  • Optimizada a redução do mmap-rss após o warmup(#35965)
  • Removido o período de arrefecimento no limitador de taxa para pedidos de leitura(#35936)
  • Melhorada a verificação do campo de carga para colecções previamente carregadas(#35910)
  • Adicionado suporte para eliminar funções relacionadas com listas de privilégios na versão 2.4(#35863)
  • Implementadas regras depguard para proibir a utilização de bibliotecas proto depreciadas(#35818)

Outros

  • Actualizada a versão do Knowhere(#36067)

v2.4.10

Data de lançamento: 30 de agosto de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.102.4.62.4.32.4.6

O Milvus 2.4.10 introduz melhorias significativas na funcionalidade e estabilidade. Os principais recursos incluem suporte para operações de upsert em coleções habilitadas para AutoID, recursos de carregamento de coleções parciais e várias configurações de memória mapeada (MMAP) para otimizar o uso da memória. Esta versão também soluciona vários erros que causam panes, despejos de núcleo e vazamentos de recursos. Recomendamos a atualização para tirar o máximo partido destas melhorias.

Caraterísticas

  • Upsert com ID automático: Suporte para operações de upsert com geração automática de ID(#34633)
  • Carregamento parcial de campos de uma coleção [Beta Preview]: Permite carregar campos específicos de uma coleção(#35696)
  • Melhorias RBAC:
    • Adicionado suporte de mensagens RBAC para a Captura de Dados de Alterações (CDC)(#35562)
    • Introduzidos grupos de privilégios readonly/readwrite/admin para simplificar o processo de concessão RBAC(#35543)
    • Nova API para efetuar cópias de segurança e restaurar configurações RBAC(#35513)
    • Atualização da cache proxy após restaurar os metadados RBAC(#35636)
  • Configuração MMAP melhorada: Mais opções de configuração gerais para controlar o comportamento MMAP(#35609)
  • Restrições de acesso à base de dados: Novas propriedades para restringir o acesso de leitura a bases de dados(#35754)

Correcções de erros

  • Corrigido o problema do cliente Arrow Go não devolver o erro(#35820)
  • Correção da limitação de taxa imprecisa(#35700)
  • Resolvido o pânico do proxy após falhas API relacionadas com a importação(#35559)
  • Corrigidas potenciais eliminações erradas durante os checkpoints do canal GC(#35708)
  • Resolvido o pânico devido a segmentos de importação candidatos vazios(#35674)
  • Corrigida a desalocação de memória mmap(#35726)
  • Assegurada a observação adequada do canal para actualizações de 2.2 para 2.4(#35695)
  • Corrigida a função de libertação de canal do DataNode sem observação(#35657)
  • Correção da contagem de partições nos metadados do RootCoord(#35601)
  • Resolvidos problemas com actualizações de configuração dinâmica para determinados parâmetros(#35637)

Melhorias

Desempenho

  • Recuperação optimizada em campos dinâmicos(#35602)
  • Desempenho melhorado do bitset para AVX512(#35480)
  • Valor relido após a inicialização do once para melhor eficiência(#35643)

Melhorias na atualização contínua

  • Marcado o nó de consulta como só de leitura depois de suspenso(#35586)
  • Preveniu a coexistência do coordenador antigo com o novo nó/proxy(#35760)

Outros

  • Optimizado o processo de construção do núcleo do Milvus(#35660)
  • Atualizado para protobuf-go v2(#35555)
  • Melhorado o tracing com codificação de string hexadecimal para traceid e spanid(#35568)
  • Adicionada métrica de número de segmento de sucesso para o gancho de consulta(#35619)
  • Compatibilidade melhorada com o SDK antigo para a funcionalidade de configuração de parâmetros de carga(#35573)
  • Adicionado suporte para HTTP v1/v2 throttling(#35504)
  • Corrigida a estimativa de memória do índice(#35670)
  • Capacidade de escrever múltiplos segmentos no compactador de mistura para evitar a geração de segmentos grandes(#35648)

v2.4.9

Data de lançamento: 20 de agosto de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.92.4.52.4.32.4.4

O Milvus v2.4.9 resolve um problema crítico que poderia retornar resultados inferiores ao limite (topk) em alguns casos de canto e inclui várias melhorias importantes para melhorar o desempenho e a usabilidade da plataforma.

Correcções críticas

  • Excluído o segmento l0 do snapshot legível(#35510).

Melhorias

  • Removida a criação duplicada de ajudante de esquema no proxy(#35502).
  • Adicionado suporte para compilação do Milvus no Ubuntu 20.04(#35457).
  • Optimizado o uso de bloqueios e evitado o double flush do escritor de buffer de clustering(#35490).
  • Removido o log inválido(#35473).
  • Adicionado um documento de guia de utilizador de compactação de clustering(#35428).
  • Adicionado suporte para campos dinâmicos no auxiliar de esquema(#35469).
  • Adicionada a secção msgchannel no YAML gerado(#35466).

v2.4.8

Data de lançamento: 14 de agosto de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.82.4.52.4.32.4.4

O Milvus 2.4.8 introduziu várias melhorias significativas no desempenho e na estabilidade do sistema. A caraterística mais notável foi a implementação da compactação de clustering, um mecanismo que melhora a eficiência da pesquisa e consulta redistribuindo dados em grandes colecções com base numa chave de clustering designada, reduzindo a quantidade de dados digitalizados. A compactação também foi desacoplada do DataNode do fragmento, permitindo que qualquer DataNode execute a compactação de forma independente, o que melhorou a tolerância a falhas, a estabilidade, o desempenho e a escalabilidade. Além disso, a interface entre os componentes Go e C++ foi refatorada para usar chamadas CGO assíncronas, resolvendo problemas como timeouts de sessão, enquanto várias outras otimizações de desempenho foram feitas com base na criação de perfis. As dependências da aplicação também foram actualizadas para resolver vulnerabilidades de segurança conhecidas. Além disso, esta versão também inclui várias optimizações de desempenho e correcções de erros críticos.

Caraterísticas

  • Implementação da compactação de clustering, permitindo que os dados sejam redistribuídos com base numa chave de clustering designada para melhorar a eficiência da consulta(#34326),(#34363).

Melhorias

  • Implementadas capacidades de pesquisa e recuperação assíncronas no CGO.(#34200)
  • Separado o processo de compactação do Shard DataNode para melhorar a modularidade do sistema.(#34157)
  • Adicionado suporte para pooling de clientes no QueryNode dentro do proxy/delegator para melhorar o desempenho.(#35195)
  • Sonic integrado para minimizar a sobrecarga da CPU durante o marshaling e unmarshaling JSON nos manipuladores Gin e RestfulV1.(#35018)
  • Introduzido um cache na memória para otimizar a recuperação de resultados de autenticação.(#35272)
  • Modificado o tipo de métrica predefinido para autoindexação. [#34277, #34479]
  • Refactorizado o formato de memória em tempo de execução para colunas variáveis, levando à redução da utilização de memória.[#34367, #35012, #35041]
  • Processos de compactação refatorados para permitir o armazenamento de dados persistentes.(#34268)
  • Ativado o suporte de ficheiros memory-mapped para segmentos crescentes, melhorando a gestão da memória.(#34110)
  • Registos de acesso melhorados, adicionando suporte a API RESTful, níveis de consistência de registo e distinção entre erros do sistema e do utilizador.[#34295, #34352, #34396]
  • Utilizado o novo parâmetro range_search_k no Knowhere para acelerar as pesquisas de intervalo.(#34709)
  • Aplicados filtros Bloom bloqueados para aumentar a velocidade de construção e consulta de filtros.[#34377, #34922]
  • Melhorias na utilização da memória:
    • Espaço pré-alocado para os buffers de inserção do DataNode.(#34205)
    • Pré-alocado FieldData para operações Reduce.(#34254)
    • Registos libertados no codec de eliminação para evitar fugas de memória.(#34506)
    • Controlado o nível de concorrência do gestor de ficheiros do disco durante o carregamento de ficheiros.(#35282)
    • Optimizada a lógica de recolha de lixo em tempo de execução do Go para libertação atempada de memória.(#34950)
    • Implementada uma nova política de selagem para segmentos crescentes.(#34779)
  • Melhorias no DataCoord:
    • Reduzida a utilização da CPU.[#34231, #34309]
    • Implementada uma lógica de saída de recolha de lixo mais rápida.(#35051)
    • Melhoria dos algoritmos de agendamento dos nós de trabalho.(#34382)
    • Algoritmo de controlo de tamanho de segmento melhorado especificamente para operações de importação.(#35149)
  • Melhorias no algoritmo de balanceamento de carga:
    • Reduzido o fator de sobrecarga de memória no delegador.(#35164)
    • Atribuído um tamanho de memória fixo para o delegador.(#34600)
    • Evitada a atribuição excessiva de segmentos e canais para novos nós de consulta.(#34245)
    • Reduzido o número de tarefas por ciclo de agendamento pelo Coordenador de Consultas, aumentando a frequência de agendamento.(#34987)
    • Melhoria do algoritmo de equilíbrio de canais no DataNode.(#35033)
  • Métricas do sistema expandidas: Adicionadas novas métricas em vários componentes para monitorizar aspectos específicos, incluindo:

Alterações

  • Para utilizadores de código aberto, esta versão altera os tipos de métricas no AutoIndex para FloatVector e BinaryVector para Cosine e Hamming, respetivamente.

  • Versões corrigidas de dependências de terceiros:

    • Este lançamento introduz versões fixas para certas bibliotecas de dependência de terceiros, melhorando significativamente a gestão da cadeia de fornecimento de software da Milvus.
    • Ao isolar o projeto das alterações a montante, protege as construções diárias de potenciais interrupções.
    • A atualização assegura a estabilidade ao alojar exclusivamente pacotes validados C++ de terceiros no JFrog Cloud e ao utilizar as Revisões de Receitas Conan (RREV).
    • Esta abordagem atenua o risco de quebra de alterações de atualizações no ConanCenter.
    • Os desenvolvedores que usam o Ubuntu 22.04 se beneficiarão imediatamente dessas alterações. No entanto, os programadores de outros sistemas operativos poderão ter de atualizar a sua versão do glibc para evitar problemas de compatibilidade.

Correções de erros críticos

  • Corrigido um problema em que os dados de exclusão eram perdidos devido à omissão de segmentos durante a compactação L0.[#33980, #34363]
  • Corrigido um problema em que as mensagens de eliminação não eram encaminhadas devido ao tratamento incorreto do âmbito dos dados.(#35313)
  • Resolvida uma exceção SIGBUS que ocorria devido à utilização incorrecta de mmap.[#34455, #34530]
  • Corrigidos os crashes causados por expressões de pesquisa ilegais.(#35307)
  • Corrigido um problema em que o DataNode watch falhava devido a uma definição incorrecta de tempo limite no contexto do watch.(#35017)

Correcções de erros

  • Resolvidas vulnerabilidades de segurança através da atualização de certas dependências.[#33927, #34693]
  • Corrigido um erro de análise despoletado por expressões excessivamente longas.(#34957)
  • Resolvida uma fuga de memória que ocorria durante a análise do plano de consulta.(#34932)
  • Corrigido um problema onde as modificações do nível de registo dinâmico não estavam a ter efeito.(#34777)
  • Resolvido um problema onde o grupo por consultas em dados crescentes falhava devido a offsets de segmento não inicializados.(#34750)
  • Corrigida a definição dos parâmetros de pesquisa ao utilizar o iterador Knowhere.(#34732)
  • Revisto a lógica para verificar o estado da carga da partição.(#34305)
  • Corrigido um problema em que as actualizações da cache de privilégios falhavam devido a erros de pedidos não tratados.(#34697)
  • Resolvida uma falha na recuperação da coleção carregada após o reinício do QueryCoord.(#35211)
  • Corrigido um problema de idempotência de carga, removendo a validação desnecessária de parâmetros de índice.(#35179)
  • Assegurado que o compressBinlog é executado para permitir que o reloadFromKV preencha corretamente o logID do binlog após o DataCoord reiniciar.(#34062)
  • Foi corrigido um problema em que os metadados da coleção não eram removidos após a recolha de lixo no DataCoord.(#34884)
  • Resolvido um vazamento de memória no SegmentManager dentro do DataCoord, removendo os segmentos de descarga gerados através de importações.(#34651)
  • Corrigido um problema de pânico quando a compactação era desactivada e uma coleção era abandonada.(#34206)
  • Foi corrigido um problema de falta de memória no DataNode, melhorando o algoritmo de estimativa de uso de memória.(#34203)
  • Prevenido o uso de memória quando vários pedidos de recuperação de vetor atingem uma falha de cache, implementando singleflight para cache de pedaços.(#34283)
  • Capturado ErrKeyNotFound durante operações CAS (Compare and Swap) na configuração.(#34489)
  • Corrigido um problema em que as actualizações de configuração falhavam devido à utilização errada do valor formatado numa operação CAS.(#34373)

Diversos

  • Adicionado suporte para o exportador HTTP OTLP, melhorando a observabilidade e as capacidades de monitorização.[#35073, #35299]
  • Funcionalidade da base de dados melhorada através da introdução de propriedades como "max collections" e "disk quota", que podem agora ser modificadas dinamicamente.[#34511, #34386]
  • Adicionadas capacidades de rastreio para processos de compactação L0 no DataNode para melhorar o diagnóstico e a monitorização.(#33898)
  • Introduzida a configuração de quotas para o número de entradas de segmentos L0 por coleção, permitindo um melhor controlo sobre as taxas de eliminação através da aplicação de contrapressão.(#34837)
  • Estendido o mecanismo de limitação de taxa para operações de inserção para também cobrir operações de upsert, garantindo um desempenho consistente sob alta carga.(#34616)
  • Implementado um grupo CGO dinâmico para chamadas CGO proxy, optimizando a utilização de recursos e o desempenho.(#34842)
  • Activada a opção de compilação DiskAnn para os sistemas operativos Ubuntu, Rocky e Amazon, melhorando a compatibilidade e o desempenho nestas plataformas.(#34244)
  • Atualizado o Conan para a versão 1.64.1, assegurando a compatibilidade com as últimas funcionalidades e melhorias.(#35216)
  • Atualizado o Knowhere para a versão 2.3.7, trazendo melhorias de desempenho e novas funcionalidades.(#34709)
  • Corrigida a revisão de pacotes específicos de terceiros para garantir compilações consistentes e reduzir o risco de alterações inesperadas.(#35316)

v2.4.6

Data de lançamento: 16 de julho de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.62.4.42.4.22.4.4

O Milvus v2.4.6 é uma versão de correção de erros que resolve problemas críticos como panics, fugas de memória e perda de dados durante as eliminações. Também introduz várias optimizações, incluindo melhorias nas métricas de monitorização, atualização da versão Go para 1.21 e melhoria da experiência do utilizador para consultas RESTful count(*).

Melhorias

  • Melhorada a facilidade de utilização das consultas RESTful API(#34444).
  • Atualizada a versão Go de 1.20 para 1.21(#33940).
  • Otimizado o balde de métrica de histograma para uma granularidade mais fina no balde(#34592).
  • Atualizada a versão de dependência do Pulsar de 2.8.2 para 2.9.5. É recomendado atualizar o Pulsar para 2.9.5 desde o Milvus 2.4.6.

Correções de erros

  • Corrigido um problema onde a API GetReplicas retornava um status nulo(#34019).
  • Corrigido um problema em que as consultas podiam retornar registos apagados(#34502).
  • Foi resolvido um problema em que o IndexNode ficava preso durante a paragem devido a um controlo de tempo de vida incorreto(#34559).
  • Corrigida uma fuga de memória de objectos oracle de chave primária quando um trabalhador está offline(#34020).
  • Corrigido o ChannelManagerImplV2 para notificar o Node correto, abordando questões de captura de parâmetros no encerramento do loop(#34004).
  • Corrigida uma corrida de dados de leitura-escrita em ImportTask segmentsInfo implementando uma cópia profunda(#34126).
  • Corrigida a informação de versão para a opção de configuração "legacyVersionWithoutRPCWatch" para evitar erros durante actualizações contínuas(#34185).
  • Corrigida a métrica para o número de partições carregadas(#34195).
  • Passou a configuração otlpSecure ao configurar o rastreio segcore(#34210).
  • Corrigido um problema em que as propriedades do DataCoord eram substituídas por engano(#34240).
  • Resolvido um problema de perda de dados causado pela fusão errónea de dois fluxos de mensagens recentemente criados(#34563).
  • Resolvido um pânico causado pelo msgstream tentando consumir um pchannel inválido(#34230).
  • Resolvido um problema onde as importações podiam gerar ficheiros órfãos(#34071).
  • Corrigido resultados de consulta incompletos devido a chaves primárias duplicadas num segmento(#34302).
  • Resolvido um problema de falta de segmentos selados na compactação L0(#34566).
  • Corrigido o problema de dados sujos no meta channel-cp gerado após a recolha de lixo(#34609).
  • Corrigida a métrica onde database_num era 0 depois de reiniciar o RootCoord(#34010).
  • Corrigido um vazamento de memória no SegmentManager no DataCoord, removendo os segmentos de descarga gerados através da importação(#34652).
  • Assegurado que o compressBinlog preenche o logID dos binlogs após o DataCoord reiniciar, assegurando o recarregamento correto do KV(#34064).

v2.4.5

Data de lançamento: 18 de junho de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.52.4.42.4.12.4.3

O lançamento do Milvus 2.4.5 introduz várias melhorias e correcções de erros para melhorar o desempenho, a estabilidade e a funcionalidade. O Milvus 2.4.5 simplifica a pesquisa de vetores esparsos, float16 e bfloat16 com auto-indexação, acelera pesquisas, exclusões e compactações com otimizações do filtro Bloom e aborda o gerenciamento de dados através de tempos de carregamento mais rápidos e suporte a importação de segmentos L0. Ele também introduz o índice HNSW esparso para pesquisa eficiente de dados esparsos de alta dimensão, aprimora a API RESTful com suporte a vetor flutuante esparso e corrige bugs críticos para melhor estabilidade.

Novos recursos

  • Adicionado suporte rbac para descrever/alterar a API da base de dados(#33804)
  • Suporte para a construção do índice HNSW para vectores esparsos(#33653, #33662)
  • Suporte à construção do índice de disco para vetor binário(#33575)
  • Suporte para o tipo de vetor esparso em RESTful v2(#33555)
  • Adicionada a api RESTful /management/stop para parar um componente(#33799)

Melhorias

  • Definir o valor predefinido de maxPartitionNum para 1024(#33950)
  • Ativado para forçar a reinicialização da ligação por erro indisponível(#33910)
  • Ativado o limitador de taxa de descarga do nível de coleção(#33864)
  • Executada a aplicação do filtro bloom em paralelo para acelerar a previsão de segmentos(#33793)
  • Utilizada a biblioteca fastjson para desmarcar o log de eliminação para acelerar o json.Unmarshal(#33802)
  • Usado BatchPkExist para reduzir o custo da chamada da função bloom filter(#33752)
  • Acelerou o carregamento de pequenas colecções(#33746)
  • Suportada a importação de dados de eliminação para o segmento L0 (#33712)
  • Saltou tarefas de compactação de marca para ser timeouted para evitar a execução da mesma tarefa uma e outra vez(#33833)
  • Tratados os vectores float16 e bfloat16 como sendo iguais ao BinaryVector na inserção em massa numpy (#33788)
  • Adicionado o sinalizador includeCurrentMsg para o método seek(#33743)
  • Adicionado mergeInterval, targetBufSize, maxTolerantLag do msgdispatcher às configurações(#33680)
  • Melhorado o GetVectorByID do vetor esparso(#33652)
  • Removida a StringPrimarykey para reduzir a cópia desnecessária e o custo da chamada de função (#33649)
  • Adicionado mapeamento autoindex para tipo de dados binário/esparso(#33625)
  • Optimizada alguma cache para reduzir a utilização de memória(#33560)
  • Interface de execução abstrata para tarefas de importação/preimportação (#33607)
  • Usado map pk para timestamp na inserção de buffer para reduzir as causas de bf(#33582)
  • Evitou meta operações redundantes de importação (#33519)
  • Melhorar os logs registando melhor a informação da quota do disco, adicionando a bandeira UseDefaultConsistency, removendo logs desnecessários(#33597, #33644, #33670)

Correcções de erros

  • Corrigido um bug que queryHook não conseguia reconhecer o tipo de vetor(#33911)
  • Prevenido o uso capturado da variável de iteração partitionID(#33970)
  • Corrigido um bug que podia fazer com que o Milvus não conseguisse criar AutoIndex em vectores binários e esparsos(#33867)
  • Corrigido um erro que podia fazer com que o indexnode tentasse novamente criar um índice em parâmetros de índice inválidos de todos os vectores (#33878)
  • Corrigido o bug que quando cargas e lançamentos acontecem simultaneamente podem travar o Servidor(#33699)
  • Melhoria da consistência da cache para valores de configuração(#33797)
  • Prevenida a possível perda de dados durante a eliminação(#33821)
  • Assegurado que o campo DroppedAt (provável registo de data e hora da eliminação) é definido após a eliminação de colecções(#33767)
  • Corrigido um problema que poderia ter feito com que o Milvus tratasse incorretamente os tamanhos dos dados do vetor binário(#33751)
  • Evitado que as credenciais sensíveis do Kafka fossem registadas em texto simples(#33694, #33747)
  • Assegurado que o Milvus pode importar corretamente dados com múltiplos campos vectoriais.(#33724)
  • Melhorada a fiabilidade da importação, verificando se existe um trabalho de importação antes de iniciar.(#33673)
  • Melhorado o manuseamento do índice HNSW esparso (funcionalidade interna)(#33714)
  • Memória vetorial limpa para evitar fugas de memória(#33708)
  • Assegurado um aquecimento assíncrono mais suave, corrigindo um problema de bloqueio de estado.(#33687)
  • Resolvido um erro que poderia ter causado resultados em falta em iteradores de consulta.(#33506)
  • Corrigido um erro que poderia causar o tamanho do segmento de importação não ser uniforme (#33634)
  • Corrigido o tratamento incorreto do tamanho dos dados para bf16, fp16, e tipos de vetor binário(#33488)
  • Estabilidade melhorada através da resolução de potenciais problemas com o compactador L0(#33564)
  • Assegurado que as actualizações de configuração dinâmica são reflectidas corretamente na cache.(#33590)
  • Melhorada a precisão da métrica RootCoordQuotaStates (#33601)
  • Garantido o relatório exato do número de entidades carregadas na métrica(#33522)
  • Fornecida informação mais completa nos registos de exceção. (#33396)
  • Optimizado o pipeline de consulta, removendo o verificador de grupo desnecessário(#33485)
  • Utilizado o caminho de armazenamento local para uma verificação mais precisa da capacidade do disco no nó de índice.(#33505)
  • Corrigido o facto de hasMoreResult poder devolver falso quando o número de acertos é maior que o limite(#33642)
  • Atraso no carregamento do bf no delegador para evitar que o bfs seja carregado repetidamente quando o trabalhador não tem mais memória(#33650) - Corrigido um bug que queryHook não conseguia reconhecer o tipo de vetor(#33911)
  • Prevenido o uso capturado da variável de iteração partitionID(#33970)
  • Corrigido um bug que pode fazer com que o Milvus não consiga criar AutoIndex em vectores binários e esparsos(#33867)
  • Corrigido um erro que podia fazer com que o indexnode tentasse novamente criar um índice em parâmetros de índice inválidos de todos os vectores (#33878)
  • Corrigido o bug que quando cargas e lançamentos acontecem simultaneamente podem travar o Servidor(#33699)
  • Melhoria da consistência da cache para valores de configuração(#33797)
  • Prevenida a possível perda de dados durante a eliminação(#33821)
  • Assegurado que o campo DroppedAt (provável registo de data e hora da eliminação) é definido após a eliminação de colecções(#33767)
  • Corrigido um problema que poderia ter feito com que o Milvus tratasse incorretamente os tamanhos dos dados do vetor binário(#33751)
  • Evitado que as credenciais sensíveis do Kafka fossem registadas em texto simples(#33694, #33747)
  • Assegurado que o Milvus pode importar corretamente dados com múltiplos campos vectoriais.(#33724)
  • Melhorada a fiabilidade da importação, verificando se existe um trabalho de importação antes de iniciar.(#33673)
  • Melhorado o manuseamento do índice HNSW esparso (funcionalidade interna)(#33714)
  • Memória vetorial limpa para evitar fugas de memória(#33708)
  • Assegurado um aquecimento assíncrono mais suave, corrigindo um problema de bloqueio de estado.(#33687)
  • Resolvido um erro que poderia ter causado resultados em falta em iteradores de consulta.(#33506)
  • Corrigido um erro que poderia causar o tamanho do segmento de importação não ser uniforme (#33634)
  • Corrigido o tratamento incorreto do tamanho dos dados para bf16, fp16, e tipos de vetor binário(#33488)
  • Estabilidade melhorada através da resolução de potenciais problemas com o compactador L0(#33564)
  • Assegurado que as actualizações de configuração dinâmica são reflectidas corretamente na cache.(#33590)
  • Melhorada a precisão da métrica RootCoordQuotaStates (#33601)
  • Garantido o relatório exato do número de entidades carregadas na métrica(#33522)
  • Fornecida informação mais completa nos registos de exceção. (#33396)
  • Optimizado o pipeline de consulta, removendo o verificador de grupo desnecessário(#33485)
  • Utilizado o caminho de armazenamento local para uma verificação mais precisa da capacidade do disco no nó de índice.(#33505)
  • Corrigido o facto de hasMoreResult poder devolver falso quando o número de acertos é maior que o limite(#33642)
  • Atraso no carregamento do bf no delegador para evitar que o bfs seja carregado repetidamente quando o trabalhador não tem mais memória(#33650)

v2.4.4

Data de lançamento: 31 de maio de 2024

Versão MilvusVersão Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.42.4.32.4.12.4.2

O Milvus v2.4.4 inclui várias correcções de erros críticos e melhorias destinadas a melhorar o desempenho e a estabilidade. Em particular, resolvemos um problema crítico em que os registos de estatísticas de inserção em massa eram incorretamente recolhidos, afectando potencialmente a integridade dos dados. Recomendamos vivamente que todos os utilizadores da versão 2.4 actualizem para esta versão para beneficiarem destas correcções.

Se estiver a utilizar a inserção em massa, actualize para a v2.4.4 o mais rapidamente possível para garantir a integridade dos dados.

Correcções de erros críticos

  • Preenchimento do ID do registo de estatísticas e validação da sua correção(#33478)

Melhorias

  • Conjunto de bits atualizado para ARM SVE(#33440)
  • Activada a compilação Milvus com GCC-13(#33441)

Correcções de erros

  • Mostrava colecções vazias quando todos os privilégios eram concedidos(#33454)
  • Assegurado que o CMake descarrega e instala para a plataforma atual, não apenas x86_64(#33439)

v2.4.3

Data de lançamento: 29 de maio de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.32.4.32.4.12.4.2

A versão 2.4.3 do Milvus introduziu uma série de funcionalidades, melhorias e correcções de erros para aumentar o desempenho e a fiabilidade. Melhorias notáveis incluíram suporte para inserção em massa de vetor float esparso e aceleração otimizada de filtro bloom. As melhorias abrangeram várias áreas, desde atualizações de configuração dinâmica até otimização do uso de memória. As correcções de erros abordaram questões críticas como cenários de pânico e garantiram operações de sistema mais suaves. Esta versão sublinhou o compromisso contínuo da Milvus em melhorar a funcionalidade, otimizar o desempenho e fornecer uma experiência de utilizador robusta.

Caraterísticas

  • Suporte para inserção em massa de vetor de flutuação esparsa para binlog/json/parquet(#32649)

Melhorias

  • Implementação do canal de observação Datacoord/node baseado em RPC(#32036)
  • Filtro bloom optimizado para acelerar a filtragem de eliminação(#32642, #33329, #33284)
  • Carregamento de dados brutos via mmap se o índice escalar não tiver dados brutos(#33317)
  • Sincronizada a configuração do milvus para milvus.yaml(#33322, #32920, #32857, #32946)
  • Actualizada a versão do knowhere(#33310, #32931, #33043)
  • Activada a atualização dinâmica da política do balancer no QueryCoord(#33272)
  • Usado um logger pré-construído no buffer de escrita para minimizar a alocação de logger(#33304)
  • Verificação de parâmetros melhorada(#32777, #33271, #33218)
  • Adicionado um parâmetro para ignorar IDs de mensagens incorrectas no ponto de verificação(#33249)
  • Adicionada configuração para controlar o tratamento de falhas de inicialização para plugins(#32680)
  • Adicionada uma configuração de consistência de cálculo de pontuação para o knowhere(#32997)
  • Introduzida uma opção de configuração para controlar a inicialização das permissões de função pública(#33174)
  • Optimizada a utilização de memória ao ler campos(#33196)
  • Implementação refinada do Channel Manager v2(#33172, #33121, #33014)
  • Adicionada funcionalidade para controlar o tamanho dos dados na memória para o binlog(#33025)
  • Adicionada métrica para o tamanho dos ficheiros de índice de segmentos(#32979, #33305)
  • Substituído o Delete por DeletePartialMatch para remover métricas(#33029)
  • Obteve o tamanho dos dados relacionados de acordo com o tipo de segmento(#33017)
  • Limpada a informação do nó do canal na meta store(#32988)
  • Removido o rootcoord do datanode broker(#32818)
  • Ativado o upload em lote(#32788)
  • Alterado o número de partição predefinido para 16 quando se usa a chave de partição(#32950)
  • Melhorado o desempenho de redução em consultas top-k muito grandes(#32871)
  • Utilizada a capacidade de TestLocations para acelerar a escrita e compactação(#32948)
  • Optimizado o pool de analisadores de planos para evitar reciclagem desnecessária(#32869)
  • Velocidade de carregamento melhorada(#32898)
  • Utilizado o nível de consistência padrão da coleção para restv2(#32956)
  • Adicionada resposta de custo para o resto da API(#32620)
  • Activada a política de equilíbrio exclusiva do canal(#32911)
  • Exposta a API describedatabase em proxy(#32732)
  • Utilizado o mapeamento coll2replica ao obter RG por coleção(#32892)
  • Adicionado mais tracing para pesquisa e consulta(#32734)
  • Suportada configuração dinâmica para rastreio de opentelemetria(#32169)
  • Evitada a iteração sobre os resultados do canal ao atualizar o leaderview(#32887)
  • Optimizado o tratamento de offsets de vetor para parquet(#32822)
  • Melhorada a filtragem do segmento datacoord com recolha(#32831)
  • Ajustado o nível e frequência do registo(#33042, #32838, #33337)
  • Ativado o equilíbrio de paragem após o equilíbrio ter sido suspenso(#32812)
  • Actualizada a cache do líder do fragmento quando a localização do líder foi alterada(#32470)
  • Removido API e campo obsoletos(#32808, #32704)
  • Adicionado metautil.channel para converter string compare para int(#32749)
  • Adicionada informação de tipo para mensagem de erro do escritor de carga útil e registo quando o querynode encontrou uma nova coleção(#32522)
  • Verificado o número da partição ao criar uma coleção com chave de partição(#32670)
  • Removido o segmento l0 legado se o watch falhar(#32725)
  • Melhoria na impressão do tipo de pedido(#33319)
  • Verificado que os dados do campo do array eram nulos antes de obter o tipo(#33311)
  • Devolvido erro quando a operação de arranque do nó Delete/AddNode falhava(#33258)
  • Permitiu que o ID do servidor do datanode fosse atualizado(#31597)
  • Limpeza unificada das métricas do querynode no lançamento da coleção(#32805)
  • Corrigida a versão incorrecta da configuração do índice automático escalar(#32795)
  • Verificação de parâmetros de índice refinada para criar/alterar índice(#32712)
  • Removida a recuperação redundante de réplicas(#32985)
  • Activada a meta tabela de canais para escrever mais de 200k segmentos(#33300)

Correcções de erros

  • Corrigido o pânico quando a base de dados não existia no intercetor de limite de taxa(#33308)
  • Corrigida a falha na recolha de métricas do quotacenter devido a parâmetros incorrectos(#33399)
  • Corrigido o pânico se o processactivestandby devolvesse um erro(#33372)
  • Corrigido o truncamento do resultado da pesquisa em restful v2 quando nq > 1(#33363)
  • Adicionado campo de nome de base de dados para operações de função em restful v2(#33291)
  • Corrigido o limite de taxa global que não funcionava(#33336)
  • Corrigido o pânico causado pela falha na construção do índice(#33314)
  • Adicionada validação para vetor esparso no segcore para garantir a legalidade(#33312)
  • Removida a tarefa do syncmgr após a conclusão da tarefa(#33303)
  • Corrigida a falha de filtragem da chave de partição durante a importação de dados(#33277)
  • Corrigida a incapacidade de gerar traceID ao usar o exportador noop(#33208)
  • Melhorada a recuperação dos resultados da consulta(#33179)
  • Marcado o ponto de verificação do canal descartado para evitar a fuga de métricas de atraso do ponto de verificação(#33201)
  • Corrigido o nó de consulta a ficar preso durante a paragem do progresso(#33154)
  • Corrigido segmentos em falta na resposta de descarga(#33061)
  • Tornada a operação de submissão idempotente(#33053)
  • Atribuída nova fatia para cada lote no leitor de streaming(#33360)
  • Limpou o nó offline do grupo de recursos após o reinício do QueryCoord(#33233)
  • Removido compactador l0 em completedCompactor(#33216)
  • Redefinido o valor da quota ao inicializar o limitador(#33152)
  • Resolvido o problema em que o limite do etcd era excedido(#33041)
  • Resolvida a ultrapassagem do limite da transação etcd devido a demasiados campos(#33040)
  • Removida a reentrada de RLock em GetNumRowsOfPartition(#33045)
  • Iniciado o LeaderCacheObserver antes do SyncAll(#33035)
  • Ativado o balanceamento do canal standby libertado(#32986)
  • Inicializado o registador de acesso antes da inicialização do servidor(#32976)
  • Tornou o compactador capaz de limpar segmentos vazios(#32821)
  • Preenchido o número de entrada do deltalog e o intervalo de tempo nas compactações l0(#33004)
  • Corrigido o crash do proxy devido à corrida de dados da cache do líder do shard(#32971)
  • Corrigida a unidade de tempo para a métrica de índice de carga(#32935)
  • Corrigido o problema onde o segmento na paragem do nó de consulta não podia ser libertado com sucesso(#32929)
  • Corrigida a estimativa de recursos do índice(#32842)
  • Definido o ponto de controlo do canal para a posição delta(#32878)
  • Fez o syncmgr bloquear a chave antes de retornar o futuro(#32865)
  • Assegurado que o índice invertido tinha apenas um segmento(#32858)
  • Corrigido o gatilho de compactação escolhendo dois segmentos idênticos(#32800)
  • Corrigido o problema em que o nome da partição não podia ser especificado na importação do binlog(#32730, #33027)
  • Tornada a coluna dinâmica opcional na importação de parquet(#32738)
  • Saltava a verificação do ID automático ao inserir dados(#32775)
  • Validado o número de linhas para inserir dados de campo com o esquema(#32770)
  • Adicionado Wrapper e Keepalive para IDs CTraceContext(#32746)
  • Corrigido o problema em que o nome da base de dados não era encontrado no meta objeto datacoord(#33412)
  • Sincronizado o segmento descartado para a partição descartada(#33332)
  • Corrigida a falha na recolha de métricas do quotaCenter devido a parâmetros incorrectos(#33399)

v2.4.1

Data de lançamento: 6 de maio de 2024

Versão do MilvusVersão do Python SDKVersão do Java SDKVersão do SDK do Node.js
2.4.12.4.12.4.02.4.2

A versão 2.4.1 do Milvus traz inúmeras melhorias e correcções de erros que visam melhorar o desempenho, a observabilidade e a estabilidade do software. Estas melhorias incluem uma API declarativa de grupo de recursos, uma funcionalidade melhorada de inserção em massa que suporta tipos de dados vectoriais Float16/BFloat16, um mecanismo refinado de recolha de lixo (GC) que reduz as operações de lista para armazenamento de objectos e outras alterações relacionadas com optimizações de desempenho. Além disso, as correções de bugs abordam problemas como erros de compilação, correspondências difusas com falha em caracteres de nova linha, tipos de dados de parâmetro incorretos para interfaces RESTful e BulkInsert gerando erros em arquivos numpy quando os campos dinâmicos estão ativados.

Alterações de rutura

  • Suporte descontinuado para excluir com uma expressão de filtro vazia.(#32472)

Caraterísticas

  • Adicionado suporte para tipos de dados de vetor Float16/BFloat16 na inserção em massa(#32157)
  • Vetor float esparso melhorado para suportar pesquisa de iteradores de força bruta e pesquisa de intervalos(#32635)

Melhorias

  • Adicionada a API declarativa de grupo de recursos(#31930, #32297, #32536, #32666)
  • Reescreveu o observador da coleção no QueryCoord para o tornar orientado para a tarefa(#32441)
  • Refacturada a estrutura de dados usada no SyncManager do DataNode para reduzir a utilização de memória e evitar erros(#32673)
  • Revisto a implementação da recolha de lixo para minimizar as operações de lista associadas ao armazenamento de objectos(#31740)
  • Reduzida a utilização do cpu quando o número de colecções é elevado(#32245)
  • Melhorou a gestão do milvus.yaml, gerando automaticamente itens de configuração relevantes no ficheiro milvus.yaml através de código(#31832, #32357)
  • Melhorado o desempenho da Query, recuperando os dados depois de efetuar a redução local(#32346)
  • Adicionada a opção WithBlock para a criação do cliente etcd(#32641)
  • Usado client_request_id especificado pelo cliente como o TraceID se o cliente forneceu(#32264)
  • Adicionada etiqueta db às métricas para as operações de eliminação e inserção em massa(#32611)
  • Adicionada lógica para saltar a verificação através da configuração para as colunas AutoID e PartitionKey(#32592)
  • Erros refinados relacionados com a autenticação(#32253)
  • Registos de erros refinados para AllocSegmentID em DataCoord(#32351, #32335)
  • Remoção de métricas duplicadas(#32380, #32308) e limpeza de métricas não utilizadas(#32404, #32515)
  • Adicionada a opção de configuração para controlar se a ativação da funcionalidade partitionKey deve ser imposta(#32433)
  • Adicionada opção de configuração para controlar a quantidade máxima de dados que podem ser inseridos num único pedido(#32433)
  • Paralelização da operação applyDelete ao nível do segmento para acelerar o processamento de mensagens Delete pelo Delegador(#32291)
  • Usou o índice(#32232, #32505, #32533, #32595) e adicionou a cache(#32580) para acelerar as operações de filtragem frequentes no QueryCoord.
  • Reescreveu a estrutura de dados(#32273) e refacturou o código(#32389) para acelerar operações comuns no DataCoord.
  • Removido o openblas do conan(#32002)

Correcções de erros

  • Corrigida a compilação milvus no rockylinux8(#32619)
  • Corrigidos erros de compilação para SVE em ARM(#32463, #32270)
  • Corrigido o problema de crash em imagens GPU baseadas em ARM(#31980)
  • Corrigido a consulta regex não pode lidar com texto com nova linha(#32569)
  • Corrigido a pesquisa obter resultado vazio causado por GetShardLeaders retornar lista de nós vazios(#32685)
  • Corrigido o erro levantado pelo BulkInsert ao encontrar campos dinâmicos em ficheiros numpy(#32596)
  • Corrigidos os erros relacionados com a interface RESTFulV2, incluindo uma correção importante que permite que os parâmetros numéricos nos pedidos aceitem a entrada numérica em vez do tipo string(#32485, #32355)
  • Corrigida a fuga de memória no proxy ao remover o evento de configuração de observação no limitador de taxa(#32313)
  • Corrigido o problema em que o limitador de taxa informava incorretamente que a partição não podia ser encontrada quando partitionName não era especificado(#32647)
  • Adicionada a deteção entre os casos da coleção estar no estado de recuperação e não ser carregada no tipo de erro.(#32447)
  • Correção da métrica negativa de entidades numéricas consultáveis(#32361)

v2.4.0

Data de lançamento: 17 de abril de 2024

Versão do MilvusVersão do Python SDKVersão do SDK do Node.js
2.4.02.4.02.4.0

Temos o prazer de anunciar o lançamento oficial do Milvus 2.4.0. Com base na base sólida da versão 2.4.0-rc.1, concentrámo-nos em resolver os erros críticos relatados pelos nossos utilizadores, preservando a funcionalidade existente. Além disso, o Milvus 2.4.0 introduz uma série de optimizações destinadas a melhorar o desempenho do sistema, melhorando a observabilidade através da incorporação de várias métricas, e simplificando a base de código para uma maior simplicidade.

Melhorias

  • Suporte para conexões MinIO TLS(#31396, #31618)
  • Suporte AutoIndex para campos escalares(#31593)
  • Refactoring de pesquisa híbrida para caminhos de execução consistentes com pesquisa regular(#31742, #32178)
  • Filtragem acelerada através de bitset e bitset_view refactoring(#31592, #31754, #32139)
  • As tarefas de importação suportam agora a espera pela conclusão do índice de dados(#31733)
  • Compatibilidade de importação melhorada(#32121), agendamento de tarefas(#31475), e limites no tamanho e número de ficheiros importados(#31542)
  • Esforços de simplificação do código, incluindo a normalização da interface para verificação de tipos(#31945, #31857), remoção de código e métricas obsoletas(#32079, #32134, #31535, #32211, #31935), e normalização de nomes constantes(#31515)
  • Nova métrica para a latência do atraso do ponto de verificação do canal de destino atual do QueryCoord(#31420)
  • Nova etiqueta db para métricas comuns(#32024)
  • Novas métricas relativas à contagem de entidades eliminadas, indexadas e carregadas, com a inclusão de etiquetas tais como collectionName e dbName(#31861)
  • Melhorias no tratamento de erros para tipos de vectores incompatíveis(#31766)
  • Suporte para lançar erros em vez de falhar quando o índice não pode ser construído(#31845)
  • Suporte para invalidar a meta cache da base de dados quando se deixa cair bases de dados(#32092)
  • Refactoring de interface para distribuição de canais(#31814) e gestão da vista de líder(#32127)
  • Refactorizar a interface do gestor de distribuição de canais(#31814) e refactorizar a interface do gestor da vista do líder(#32127)
  • Processamento em lote(#31632), adicionando informação de mapeamento(#32234, #32249), e evitando a utilização de lock(#31787) para acelerar operações frequentemente invocadas

Alterações de rutura

  • Pesquisa de agrupamento descontinuada em vectores binários(#31735)
  • Descontinuação da pesquisa de agrupamento com pesquisa híbrida(#31812)
  • Descontinuação do índice HNSW em vectores binários(#31883)

Correcções de erros

  • Verificações melhoradas do tipo de dados e valores para consultas e inserções para evitar falhas(#31478, #31653, #31698, #31842, #32042, #32251, #32204)
  • Correcções de erros da API RESTful(#32160)
  • Previsão melhorada da utilização de recursos de índice invertido(#31641)
  • Resolução de problemas de ligação com o etcd quando a autorização está activada(#31668)
  • Atualização de segurança para o servidor nats(#32023)
  • Ficheiros de índices invertidos armazenados num caminho de armazenamento local do QueryNode em vez de /tmp(#32210)
  • Resolvida a fuga de memória do datacoord para o collectionInfo(#32243)
  • Correcções para bugs relacionados com fp16/bf16 que potencialmente causam panes no sistema(#31677, #31841, #32196)
  • Resolvidos problemas com a pesquisa de agrupamento que retornava resultados insuficientes(#32151)
  • Ajustamento da pesquisa com iteradores para lidar com os desvios no passo Reduzir mais eficazmente e assegurar resultados adequados com "reduceStopForBest" ativado(#32088)

v2.4.0-rc.1

Data de lançamento: 20 de março de 2024

Versão do MilvusVersão do Python SDK
2.4.0-rc.12.4.0

Esta versão introduz várias funcionalidades baseadas em cenários:

  • Novo índice GPU - CAGRA: Graças à contribuição da NVIDIA, este novo índice GPU oferece um aumento de desempenho de 10x, especialmente para pesquisas em lote. Para obter detalhes, consulte Índice de GPU.

  • Pesquisamulti-vetorial e híbrida: Este recurso permite armazenar embeddings vetoriais de vários modelos e realizar pesquisas híbridas. Para obter detalhes, consulte Pesquisa híbrida.

  • Vectores esparsos: Ideais para interpretação e análise de palavras-chave, os vectores esparsos são agora suportados para processamento na sua coleção. Para obter detalhes, consulte Vectores esparsos.

  • Pesquisa de agrupamento: A agregação categórica melhora a recuperação a nível de documento para aplicações de Geração Aumentada por Recuperação (RAG). Para obter detalhes, consulte Pesquisa de agrupamento.

  • Índice invertido e Fuzzy Matching: Estas capacidades melhoram a recuperação de palavras-chave para campos escalares. Para obter detalhes, consulte Indexar campos escalares e pesquisa filtrada.

Novos recursos

Índice GPU - CAGRA

Gostaríamos de expressar a nossa sincera gratidão à equipa da NVIDIA pela sua inestimável contribuição para o CAGRA, um índice de grafos baseado em GPU de última geração (SoTA) que pode ser utilizado online.

Ao contrário dos índices GPU anteriores, o CAGRA demonstra uma superioridade esmagadora mesmo em consultas de pequenos lotes, uma área em que os índices CPU tradicionalmente se destacam. Além disso, o desempenho do CAGRA em consultas de grandes lotes e na velocidade de construção de índices, domínios em que os índices de GPU já se destacam, é verdadeiramente incomparável.

O código de exemplo pode ser encontrado em example_gpu_cagra.py.

Vetor esparso (Beta)

Nesta versão, estamos a introduzir um novo tipo de campo vetorial chamado vetor esparso. Os vectores esparsos são diferentes dos seus homólogos densos, uma vez que tendem a ter um número de dimensões superior em várias magnitudes, sendo que apenas algumas são diferentes de zero. Esta caraterística oferece uma melhor interpretabilidade devido à sua natureza baseada em termos e pode ser mais eficaz em determinados domínios. Os modelos esparsos aprendidos, como o SPLADEv2/BGE-M3, provaram ser muito úteis para tarefas comuns de classificação na primeira fase. O principal caso de utilização desta nova funcionalidade do Milvus é permitir uma pesquisa semântica aproximada eficiente do vizinho mais próximo em vectores esparsos gerados por modelos neurais como o SPLADEv2/BGE-M3 e modelos estatísticos como o algoritmo BM25. O Milvus suporta agora armazenamento, indexação e pesquisa eficazes e de alto desempenho (MIPS, Maximum Inner Product Search) de vectores esparsos.

O código de exemplo pode ser encontrado em hello_sparse.py.

O suporte multi-vetorial é a pedra angular para aplicações que requerem processamento de dados multi-modelo ou uma mistura de vectores densos e esparsos. Com o suporte multi-vetorial, agora é possível:

  • Armazenar embeddings vectoriais gerados para amostras de texto, imagem ou áudio não estruturados a partir de vários modelos.
  • Realizar pesquisas ANN que incluam vários vectores de cada entidade.
  • Personalizar estratégias de pesquisa atribuindo pesos a diferentes modelos de incorporação.
  • Experimentar vários modelos de incorporação para encontrar a combinação ideal de modelos.

O suporte a vários vetores permite armazenar, indexar e aplicar estratégias de reranking a vários campos de vetores de diferentes tipos, como FLOAT_VECTOR e SPARSE_FLOAT_VECTOR, em uma coleção. Atualmente, estão disponíveis duas estratégias de reclassificação: Reciprocal Rank Fusion (RRF) e Average Weighted Scoring. Ambas as estratégias combinam os resultados da pesquisa de diferentes campos vectoriais num conjunto de resultados unificado. A primeira estratégia dá prioridade às entidades que aparecem consistentemente nos resultados de pesquisa de diferentes campos vectoriais, enquanto a outra estratégia atribui pesos aos resultados de pesquisa de cada campo vetorial para determinar a sua importância no conjunto de resultados final.

O código de exemplo pode ser encontrado em hybrid_search.py.

Índice invertido e Fuzzy Match

Em versões anteriores do Milvus, os índices de pesquisa binária baseados em memória e os índices Marisa Trie eram usados para indexação de campos escalares. No entanto, esses métodos consumiam muita memória. A versão mais recente do Milvus agora emprega o índice invertido baseado em Tantivy, que pode ser aplicado a todos os tipos de dados numéricos e de strings. Este novo índice melhora drasticamente o desempenho da consulta escalar, reduzindo em dez vezes a consulta de palavras-chave em cadeias de caracteres. Além disso, o índice invertido consome menos memória, graças a optimizações adicionais na compressão de dados e no mecanismo de armazenamento mapeado por memória (MMap) da estrutura de indexação interna.

Esta versão também suporta correspondências difusas na filtragem escalar usando prefixos, infixos e sufixos.

O código de exemplo pode ser encontrado em inverted_index_example.py e fuzzy_match.py.

Agora é possível agregar os resultados da pesquisa pelos valores de um campo escalar específico. Isso ajuda os aplicativos RAG a implementar a recuperação no nível do documento. Considere uma coleção de documentos, cada documento dividido em várias passagens. Cada passagem é representada por um vetor de incorporação e pertence a um documento. Para encontrar os documentos mais relevantes em vez de passagens dispersas, pode incluir o argumento group_by_field na operação search() para agrupar os resultados pelo ID do documento.

O código de exemplo pode ser encontrado em example_group_by.py.

Float16 e BFloat- Vetor DataType

A aprendizagem automática e as redes neurais utilizam frequentemente tipos de dados de meia-precisão, como Float16 e BFloat. Embora estes tipos de dados possam melhorar a eficiência das consultas e reduzir a utilização de memória, têm como contrapartida uma precisão reduzida. Com esta versão, o Milvus suporta agora estes tipos de dados para campos vectoriais.

O código de exemplo pode ser encontrado em float16_example.py e bfloat16_example.py.

Arquitetura atualizada

Segmento L0

Esta versão inclui um novo segmento chamado Segmento L0, projetado para registrar dados excluídos. Este segmento compacta periodicamente os registos apagados armazenados e divide-os em segmentos selados, reduzindo o número de descargas de dados necessárias para pequenas eliminações e deixando uma pequena pegada de armazenamento. Com este mecanismo, o Milvus separa completamente as compactações de dados das descargas de dados, melhorando o desempenho das operações de eliminação e inserção.

BulkInsert refatorado

Esta versão também introduz uma lógica melhorada de inserção em massa. Isto permite-lhe importar vários ficheiros num único pedido de inserção em massa. Com a versão refacturada, tanto o desempenho como a estabilidade da inserção em massa registaram melhorias significativas. A experiência do utilizador também foi melhorada, como a limitação de taxa ajustada e mensagens de erro mais fáceis de utilizar. Além disso, pode aceder facilmente aos pontos de extremidade de inserção em massa através da API RESTful do Milvus.

Armazenamento com memória mapeada

O Milvus utiliza o armazenamento mapeado na memória (MMap) para otimizar a utilização da memória. Em vez de carregar o conteúdo do ficheiro diretamente para a memória, este mecanismo mapeia o conteúdo do ficheiro para a memória. Esta abordagem tem como contrapartida a degradação do desempenho. Ao ativar o MMap para uma coleção indexada HNSW num anfitrião com 2 CPUs e 8 GB de RAM, pode carregar 4x mais dados com menos de 10% de degradação do desempenho.

Além disso, esta versão também permite um controlo dinâmico e fino do MMap sem necessidade de reiniciar o Milvus.

Para obter detalhes, consulte MMap Storage.

Outros

Milvus-CDC

O Milvus-CDC é uma ferramenta complementar fácil de usar para capturar e sincronizar dados incrementais entre instâncias do Milvus, permitindo um backup incremental fácil e recuperação de desastres. Nesta versão, o Milvus-CDC melhorou a estabilidade e a sua funcionalidade de Captura de Dados de Alteração (CDC) está agora disponível para todos.

Para saber mais sobre o Milvus-CDC, consulte o repositório GitHub e a Visão geral do Milvus-CDC.

Interfaces MilvusClient refinadas

MilvusClient é uma alternativa fácil de usar para o módulo ORM. Ele adota uma abordagem puramente funcional para simplificar as interações com o servidor. Em vez de manter um pool de conexões, cada MilvusClient estabelece uma conexão gRPC com o servidor. O módulo MilvusClient implementou a maioria das funcionalidades do módulo ORM. Para saber mais sobre o módulo MilvusClient, visite pymilvus e os documentos de referência.

Traduzido porDeepLogo

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?