Nest: Um Vector DB Soberano, Content-Addressable e Offline-First

By Brenner Cruvinel • 5 minutes read

compatilhando aqui o concept de uma aplicação que estou trabalhando, cansado de ter que ficar fazendo gambiarra com vector db sem estabilidade:

nest

nest e um vector db soberano de arquivo unico. content-addressable, offline-first, hash-verified. python constroi o arquivo, rust serve o arquivo. o enderecamento e nest://content_hash/chunk_id: voce cita pelo conteudo, nao pela localizacao. se o conteudo muda o hash muda, e e impossivel receber coisa diferente da que voce pediu.

as notas

hash como identidade, content-addressing

a familia mais proxima do nest. a ideia central e uma so: o hash do conteudo vira o endereco do conteudo. voce nao aponta pra um lugar, aponta pra uma coisa. se a coisa muda, o endereco muda. e dai cai tudo o que importa pro nest, imutabilidade, verificacao, citacao por conteudo.

content-addressable storage (IPFS, e o proprio nest)

aqui o endereco do dado e o hash dele. em vez de “me de o arquivo em tal pasta”, que pode ter sido trocado sem voce saber, voce diz “me de o arquivo cujo conteudo tem este hash”. e e impossivel receber coisa diferente: se viesse diferente, teria outro hash. a verificacao nao e um passo extra, ela e a propria forma de pedir.

IPFS e a rede distribuida que faz isso em escala.

como o nest:// funciona

o nest://content_hash/chunk_id do nest e exatamente esse principio. voce cita pelo conteudo, nao pela localizacao.

a consequencia pratica: uma citacao no nest nao quebra quando o arquivo muda de pasta, de disco, de maquina. ela so vale pra aquele conteudo. se o conteudo mudou, o hash mudou, e voce sabe na hora que esta falando de outra coisa.

Git, o exemplo mais cotidiano

voce usa todo dia e talvez nao tenha percebido que e exatamente isso. cada commit e identificado por um hash do conteudo. quando voce da git commit, esta tirando uma foto selada do codigo naquele instante. se alguem alterar a historia, os hashes nao batem e o Git acusa.

e o exemplo mais cotidiano de “snapshot imutavel e verificavel” que existe.

como o nest difere

duas comparacoes que delimitam o nest dentro da familia.

nest x Git
sela o quepra que serve
Gitcodigonavegar versoes
nestconhecimento vetorizadobusca

Git sela codigo e e feito pra voce navegar versoes. o nest sela conhecimento vetorizado pra busca. mesmo mecanismo de hash, finalidade diferente.

nest x IPFS

mesmo principio de content-addressing, escala diferente. IPFS e a rede distribuida que faz isso em escala, muitas maquinas. o nest e o caso local de arquivo unico. um arquivo soberano, offline-first, com o mesmo “o endereco e o hash” por dentro.

por que isso e a familia mais proxima

das analogias que coletei, essa e a que descreve o nest sem metafora. Git e timestamping e blockchain todos usam hash de conteudo, mas pra outras finalidades. content-addressable storage usa hash de conteudo pela mesma razao que o nest: para que pedir o dado e verificar o dado sejam a mesma operacao.

delta binario por cima de snapshots

a opcao mais tecnica pra distribuir versoes do nest sem rebaixar o arquivo inteiro toda vez. funciona, mas tem um senao que so se descobre testando. mais fragil que o sharding.

a ferramenta

existem ferramentas de diff binario que calculam a diferenca entre o arquivo de ontem e o de hoje e produzem um “patch” pequeno:

a ideia do patch

o cliente que ja tem a versao de ontem baixa so o patch e reconstroi a de hoje localmente. e como o teu sistema operacional atualiza sem rebaixar o SO inteiro. so o delta desce pela rede, a maquina monta o resto.

o senao pro nest

aqui esta a parte fragil. se o build deterministico reordena coisas internamente quando voce adiciona conteudo, e formatos comprimidos/indexados costumam reorganizar bastante, o diff pode sair grande mesmo pra pouca mudanca. voce muda um chunk, o formato remexe o indice inteiro, e o patch deixa de ser pequeno.

so vale se o formato for “append-friendly”, quer dizer, se adicionar conteudo no fim nao bagunca o que ja estava la. e isso voce so sabe testando.

seguimos… quem pilhar, deixei aberto no git.