A compactação de bases de dados vetoriais recupera o espaço eliminado ao reescrever os registos ativos em segmentos limpos e retirar ficheiros de segmentos antigos que ainda contêm vetores removidos.
Eliminar um documento doméstico de uma biblioteca RAG local pode fazê-lo desaparecer imediatamente da pesquisa, enquanto a utilização do disco quase não se altera. Isso não significa necessariamente que a eliminação tenha falhado. Muitas bases de dados vetoriais separam a visibilidade lógica da limpeza física do armazenamento, para que as escritas em primeiro plano se mantenham rápidas e os leitores possam continuar a utilizar segmentos imutáveis ou orientados para anexação. A compactação é o processo de manutenção posterior que transforma essas eliminações lógicas numa representação física mais pequena.
Uma eliminação geralmente altera primeiro a visibilidade, antes de reescrever os bytes armazenados
Editar fisicamente um ficheiro de índice de grandes dimensões a cada eliminação criaria escritas aleatórias dispendiosas e uma concorrência complexa. Em vez disso, muitos motores registam um marcador de eliminação, um tombstone ou um registo de eliminações que indica à pesquisa para ignorar o vetor.
Os tombstones HNSW fazem com que os objetos eliminados deixem de ser elegíveis para a pesquisa no grafo antes de a manutenção em segundo plano remover fisicamente todo o respetivo estado de índice.
Por isso, o resultado visível para o utilizador e o resultado ao nível do disco ocorrem em momentos diferentes. O registo pode deixar de aparecer nos resultados dos vizinhos mais próximos, enquanto os respetivos bytes antigos permanecem dentro de um segmento existente.
Esta separação também dá à base de dados margem para coordenar consultas simultâneas, réplicas, instantâneos e regras de retenção antes de destruir estruturas de armazenamento históricas.
Os registos eliminados acumulam-se nos segmentos até ser atingido um limiar de limpeza
Um segmento pode conter tanto vetores ativos como registos que já não são elegíveis para pesquisa. À medida que as atualizações e eliminações se acumulam, diminui a proporção entre dados úteis e dados obsoletos.
Um limiar de vetores eliminados pode adiar a limpeza dispendiosa até que se tenham acumulado pontos obsoletos suficientes para que valha a pena reescrever um segmento.
Esperar por um limiar permite amortizar o trabalho de manutenção. Reescrever um segmento para recuperar um único registo eliminado de pequenas dimensões custaria mais E/S do que o espaço poupado. Num servidor doméstico com reindexações frequentes, a quantidade visível de armazenamento físico obsoleto pode, por isso, aumentar durante algum tempo antes de o otimizador decidir que a limpeza compensa.
A compactação copia os dados ativos para segmentos novos ou fundidos
Quando a manutenção começa, a base de dados lê os segmentos de origem elegíveis, ignora os registos eliminados logicamente e escreve os vetores e conteúdos úteis sobreviventes numa nova representação compacta.
A compactação como fusão de segmentos e limpeza de eliminações reescreve os dados sobreviventes em segmentos mais limpos, omitindo os registos que já foram eliminados logicamente ou expiraram.
Os segmentos pequenos podem ser fundidos ao mesmo tempo, reduzindo o número de estruturas separadas que a pesquisa tem de consultar. O novo segmento representa o estado ativo, em vez de transportar todas as mutações históricas.
Esta reescrita pode necessitar temporariamente de espaço livre adicional, porque os segmentos antigos e novos podem coexistir até a substituição ser validada e ativada.
Os índices são reconstruídos em torno do conjunto de vetores sobreviventes
Remover os bytes dos conteúdos vetoriais é apenas parte da limpeza. As ligações do grafo, as estruturas quantizadas, os filtros e os metadados dos segmentos podem referir-se a registos que já não pertencem ao segmento ativo.
Um processo de compactação que reconstrói os índices durante a otimização garante que as estruturas de pesquisa do grafo e auxiliares correspondem ao conjunto de vetores sobreviventes, em vez de manter referências para pontos removidos.
No caso do HNSW, isso pode alterar a topologia do grafo, mesmo quando os vetores restantes não sofrem alterações. É por isso que a compactação pode afetar a navegação de vizinhos aproximados, preservando simultaneamente o mesmo conjunto de dados lógico. O mecanismo abordado neste artigo é o ciclo de vida do armazenamento: os registos obsoletos são excluídos do índice reescrito, para que a sua ocupação física possa eventualmente desaparecer.
Os segmentos antigos têm de ser retirados antes de o espaço de armazenamento poder ser libertado
Depois de o segmento compactado se tornar a representação ativa, os segmentos antigos são marcados como obsoletos ou eliminados. Os ficheiros subjacentes podem ainda aguardar um período de recolha de lixo ou de retenção antes de os blocos reais do disco serem libertados.
Quando a recolha de lixo segue a compactação, os ficheiros dos segmentos eliminados podem permanecer temporariamente depois de a substituição compactada estar ativa, pelo que o espaço no sistema de ficheiros pode ser libertado mais tarde do que as alterações de visibilidade nas consultas.
Os instantâneos, a retenção de cópias de segurança, a replicação ou os leitores que mantêm referências podem prolongar esse atraso nos sistemas que preservam gerações de segmentos anteriores.
Por isso, a monitorização do disco deve distinguir entre o número lógico de entidades, o tamanho dos segmentos ativos, o espaço temporário da compactação, os segmentos eliminados e a capacidade livre do sistema de ficheiros.
A compactação é uma manutenção em segundo plano com custos próprios de recursos
Ler segmentos antigos, escrever novos, reconstruir índices e eliminar ficheiros obsoletos consome CPU, largura de banda do disco, memória e, por vezes, armazenamento temporário duplicado.
As métricas de limpeza de tombstones tornam observável a reparação de eliminações como uma carga de trabalho de manutenção, com ciclos, durações e consumo de recursos próprios.
Evitar registos obsoletos no índice após atualizações de ficheiros é um requisito a montante: uma eliminação na origem tem primeiro de chegar à base de dados vetorial antes de a compactação poder recuperar a representação obsoleta.
Centro de Tecnologia e IA
Mais para Ler

O que é o estado do Plex e que partes têm de persistir?
O estado persistente do Plex é a informação que preserva a experiência do servidor após reinícios e reconstruções; os dados multimédia e temporários de...

Como é que o Plex gere a autenticação entre sessões locais e remotas?
A autenticação do Plex começa pela identidade do servidor e da conta; depois, os caminhos de rede locais ou remotos determinam a acessibilidade e...

Porque é que a pesquisa no Plex pode ficar mais lenta à medida que os dados da biblioteca aumentam?
O crescimento da biblioteca, por si só, não é o diagnóstico. Teste a estrutura das consultas, os índices, o estado da cache, a latência...

