15 pontos por GN⁺ 2024-08-14 | 3 comentários | Compartilhar no WhatsApp
  • Um sandbox de Postgres executado diretamente no navegador, com suporte de IA
  • É possível criar instantaneamente um número ilimitado de bancos de dados Postgres (em breve também será possível implantar no S3)
  • Cada banco de dados é emparelhado com um modelo de linguagem de grande porte (LLM), oferecendo vários casos de uso interessantes:
    • Criar tabelas arrastando e soltando arquivos CSV
    • Gerar e exportar relatórios
    • Criar gráficos
    • Criar diagramas de banco de dados
  • Tudo é feito localmente dentro do navegador

Demo de uso

  • Quando você quer consultar e visualizar rapidamente um arquivo CSV
  • Quando quer usar o ChatGPT para escrever SQL e testá-lo em um banco de dados real
  • Quando quer planejar um novo projeto e deixar o design do banco de dados por conta da IA

Como funciona

  • Todas as consultas são executadas dentro do navegador
  • Isso é possível graças ao PGlite, uma versão em WASM do Postgres que pode rodar diretamente no navegador

Motivação de desenvolvimento

  1. Desenvolvimento com IA: reimaginar a interação entre Postgres e IA
  2. Sandboxing de Postgres: execução rápida e descartável no navegador
  3. Banco de dados barato: potencial para oferecer muitos bancos de dados a baixo custo

Recursos e funcionamento

Assistente de IA

  • O PGlite é emparelhado com o GPT-4o e recebe permissões completas sobre o banco de dados.
  • A IA pode executar várias tarefas em sequência, dando uma sensação mais humana.

Importação e exportação de CSV

  • Arraste e solte arquivos CSV para criar tabelas automaticamente.
  • A IA analisa os cabeçalhos e linhas de amostra do CSV para determinar os tipos de dados.
  • Se ocorrer um erro de SQL, a IA tenta corrigi-lo por conta própria.

Gráficos

  • Ao adicionar a palavra "chart" à mensagem, a IA executa a consulta apropriada e gera um gráfico.
  • Os gráficos são renderizados com Chart.js.

Diagramas ER e migrações

  • A IA gera instruções CREATE e ALTER para criar diagramas ER a partir de um banco de dados real.
  • Usa uma versão compatível com navegador do postgres-meta para carregar tabelas do PGlite em JavaScript e renderizá-las com uma ferramenta de visualização de schema.

Busca semântica e RAG

  • Suporta busca vetorial dentro do navegador usando a extensão pgvector.
  • Usa transformers.js para gerar embeddings de texto, armazená-los no PGlite e consultá-los.

Implantação

  • Há planos de implantar bancos de dados PGlite no S3 para atender diversos casos de uso com baixo custo.

Análise aprofundada do PGlite

O que é PGlite?

  • PGlite é uma build em WASM do Postgres que pode rodar no navegador, Node.js e Bun.
  • É ideal para testes unitários, desenvolvimento local, desenvolvimento remoto e outros cenários.

Persistência de dados

  • No Node, oferece suporte ao sistema de arquivos nativo; no navegador, IndexedDB e OPFS.

Suporte a extensões

  • Dá suporte a extensões úteis como pgvector e live.

Visão técnica geral

  • Baseia-se no modo de usuário único do Postgres para permitir execução em WASM.
  • Diversos recursos do Postgres foram adaptados para funcionar em WASM.

Em breve

  • Será possível implantar bancos de dados no S3 e torná-los acessíveis pela internet.
  • Também devem ser adicionados suporte a mais formatos de arquivo, compartilhamento de bancos de dados e exportação de bancos de dados.

Open source

  • Todo o trabalho é oferecido como open source:
    • PGlite (Apache 2.0)
    • pg-gateway (MIT)
    • postgres-new (Apache 2.0)
    • transformers.js

Resumo do GN⁺

  • postgres.new é um sandbox de Postgres executado no navegador que simplifica tarefas de banco de dados com suporte de IA.
  • Com PGlite, é possível criar bancos de dados de forma rápida e barata, além de aproveitar vários recursos baseados em IA.
  • Visualização de dados, geração de diagramas ER e busca semântica são alguns dos recursos que podem torná-lo uma ferramenta útil para desenvolvedores.
  • Outros projetos com funcionalidades semelhantes incluem Supabase e ElectricSQL.

3 comentários

 
yangeok 2024-08-20

Era o supabase mesmo.

 
GN⁺ 2024-08-14
Comentários do Hacker News
  • Compartilhamento de experiência ao criar 3 bancos de dados usando o postgres.new

    • Criou com sucesso um banco de dados de pedidos de clientes, um sistema de rastreamento de issues e um modelo de relações familiares
    • No modelo de relações familiares, também lidou bem com relações complexas, incluindo primos e tios
    • Algumas relações mútuas (por exemplo, relação entre irmãos) ficaram ausentes, mas foram corrigidas após solicitar uma revisão dos dados
    • Avaliado como uma ferramenta muito útil
  • Avaliado como uma demonstração técnica que mostra os limites da IA

    • Gerou SQL inválido e causou erro
    • O SQL gerado criou um conjunto de tabelas desconectadas
    • Mencionada a necessidade de revisar todo o código
    • Sistemas novos frequentemente precisam de elementos abstratos ou inteligentes, mas este sistema cria apenas sistemas simples
    • Escrever o código diretamente é mais fácil
    • Proibiram merge requests com LLM na organização, porque o código não era otimizado e tinha muitos bugs
    • Difícil superar isso com o design atual dos LLMs
  • Ao clicar no botão "New database", nada acontece

    • Não estava logado no GitHub, mas a intenção era não usar os recursos de IA
    • Decepcionado por o ChatGPT ser obrigatório
    • Insatisfação com limitar uma abordagem local-first por causa da IA
  • Muito impressionante

  • Opinião de que seria bom poder usar sem recursos de IA

    • Pergunta se o build em WASM permite usar o Postgres como banco de dados embarcado
  • Avaliação de que esta ferramenta ajuda muito no design de bancos de dados

    • Pergunta se é possível desenhar em diagrama um schema de banco de dados existente
    • Em ambientes corporativos, seria muito útil uma função que representasse em diagrama schemas desenvolvidos com o estilo de migrations do Supabase ou com ferramentas como o Flyway
  • Era cético quanto à combinação de IA/LLM com workflows existentes, mas avaliou que neste caso funciona bem

    • O LLM é útil para gerar dados para inserir no banco de dados
    • Entende por que não dá para usar no mobile, mas pede que seja fornecido um resumo para usuários móveis
  • Como engenheiro da Supabase, comentou que foi divertido desenvolver essa ferramenta junto com a equipe da Electric

    • Houve um processo de superação de obstáculos técnicos
    • Pretendem continuar melhorando com base no feedback
  • Orientação para usar o postgres.new em notebook ou desktop

    • Menciona que não há problema em usar WebKit/Safari