Atualizando e excluindo vetores
Mantenha o índice sincronizado com a fonte: faça upsert quando um documento mudar, exclua-o quando for removido e trate da geração de novos embeddings.
Atualizando e excluindo vetores é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
O Index não está congelado
Documentos reais mudam. O índice precisa acompanhar:
- Novos documentos adicionados
- Documentos existentes editados
- Documentos antigos excluídos ou arquivados
Inserir ou atualizar
A maioria dos bancos de dados vetoriais permite inserir ou atualizar — gravar o vetor com um determinado ID, substituindo o antigo caso ele exista:
index.upsert([
('doc-42', new_vector, {'source': 'a.pdf', 'updated_at': now})
])
# If doc-42 already exists, it is overwritten.IDs determinísticos
Se o senhor usar IDs baseados no resumo criptográfico do conteúdo, a "atualização" acontecerá automaticamente — mesmo conteúdo = mesmo ID = mesma posição.
Se usar UUIDs, deverá acompanhar qual UUID pertence a qual documento de origem.
Detectando alterações
Para comparar um corpus, armazene um resumo criptográfico de cada fragmento:
old_chunks = load_existing_chunks(source)
new_chunks = chunk_doc(source)
old_hashes = {c.id for c in old_chunks}
new_hashes = {c.id for c in new_chunks}
to_delete = old_hashes - new_hashes
to_add = new_hashes - old_hashes
# Skip unchanged — saves re-embeddingdelete por filtro
A maioria dos bancos de dados oferece exclusão por filtro, útil para "excluir tudo desta origem":
index.delete(filter={'source': '/old/file.pdf'})Delete by ID
index.delete(ids=['doc-1', 'doc-2', 'doc-3'])Exclusão lógica
Às vezes, o senhor quer "ocultar" sem remover — defina um sinalizador deleted_at e exclua-o durante a consulta:
index.upsert([('doc-42', vec, {'deleted_at': now})])
# At query time:
results = index.query(vector=query_vec, top_k=5, filter={'deleted_at': {'$exists': False}})Compactação
Exclusões frequentes deixam o índice esparso. Reconstrua-o periodicamente para obter desempenho — a maioria dos bancos de dados faz isso automaticamente; consulte a documentação do seu provedor.
Nova incorporação após mudança do modelo
Se o senhor atualizar o modelo de incorporação, todos os vetores existentes se tornarão incompatíveis. Estratégias:
- Gravar simultaneamente nas coleções antiga e nova durante a migração
- Mudar o tráfego de leitura para a nova coleção quando tudo estiver concluído
- Excluir a coleção antiga
Fluxo de processamento incremental
Um fluxo de ingestão robusto:
def sync_doc(source_path):
new_chunks = chunk_and_hash(load(source_path))
existing_ids = index.fetch_ids_by_source(source_path)
new_ids = {c.id for c in new_chunks}
to_add = [c for c in new_chunks if c.id not in existing_ids]
to_remove = existing_ids - new_ids
if to_remove:
index.delete(ids=list(to_remove))
if to_add:
index.upsert([(c.id, embed(c.text), c.metadata) for c in to_add])Auditando divergências
Verifique periodicamente se o índice corresponde à fonte de verdade. Conte as linhas por origem tanto no seu banco de dados quanto no índice vetorial e gere um alerta em caso de divergência.
Atualizações acionadas por notificações
Para sistemas de gerenciamento de documentos (Notion, Confluence, GDrive), use notificações para acionar a sincronização incremental quando houver alterações — isso é muito mais barato do que rastrear tudo novamente.
Marcadores de exclusão para exclusões distribuídas
Em índices distribuídos, a operação "delete" geralmente grava um marcador de exclusão. Até a execução da compactação, as consultas ainda poderão encontrá-lo — mantenha seus filtros em vigor.
Atualizações idempotentes
Qual é a maneira mais fácil de tornar a ingestão segura para ser executada novamente?
Recapitulação
Planeje as atualizações desde o primeiro dia: IDs baseados em resumos criptográficos, ingestão baseada em diferenças e um caminho para trocar os modelos de incorporação sem tempo de inatividade.
Aprenda AI Agents com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 60
- Aulas
- 239
Perguntas Frequentes
A aula “Atualizando e excluindo vetores” é grátis?
Sim — o texto completo de “Atualizando e excluindo vetores” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Atualizando e excluindo vetores”?
Mantenha o índice sincronizado com a fonte: faça upsert quando um documento mudar, exclua-o quando for removido e trate da geração de novos embeddings. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Atualizando e excluindo vetores”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Pinecone, Weaviate, Qdrant: comparação
- Filtragem de metadados para busca híbrida
- Atualizando e excluindo vetores
- Escolhendo métricas de distância (cosseno, L2, produto escalar)