Spaces:
Sleeping
A newer version of the Gradio SDK is available: 6.12.0
Configuracao Neon.tech
Neon e um PostgreSQL serverless com suporte nativo a pgvector, ideal para desenvolvimento e producao.
Vantagens
- Free tier generoso (10GB storage)
- Database branching (copie seu banco para testes)
- Autoscaling automatico
- Connection pooling integrado
- Cold start rapido
- API completa
Setup Passo a Passo
1. Criar Conta
- Acesse neon.tech
- Clique em "Sign Up" (pode usar GitHub)
- Complete o cadastro
2. Criar Projeto
No dashboard, clique em "Create Project"
Escolha:
- Nome do projeto:
rag-template(ou seu nome) - Regiao: Escolha a mais proxima (ex:
us-east-1) - PostgreSQL version:
15ou superior
- Nome do projeto:
Clique em "Create Project"
3. Habilitar pgvector
Neon ja vem com pgvector disponivel. Voce so precisa habilitar a extensao:
- Va para o SQL Editor no dashboard
- Execute o seguinte comando:
CREATE EXTENSION IF NOT EXISTS vector;
- Verifique a instalacao:
SELECT * FROM pg_extension WHERE extname = 'vector';
4. Obter Connection String
- No dashboard do seu projeto, va para Connection Details
- Copie a Connection String (formato completo)
Ela tera este formato:
postgresql://user:password@ep-xxx-xxx.us-east-1.aws.neon.tech/neondb?sslmode=require
Importante: Guarde esta string com seguranca! Ela contem sua senha.
5. Configurar .env
- No diretorio do projeto, copie o arquivo de exemplo:
cp .env.example .env
- Abra
.enve adicione a connection string:
DATABASE_URL=postgresql://user:password@ep-xxx.us-east-1.aws.neon.tech/neondb?sslmode=require
- Adicione outras variaveis necessarias:
# Neon Database
DATABASE_URL=postgresql://user:password@ep-xxx.us-east-1.aws.neon.tech/neondb?sslmode=require
# Hugging Face (obrigatorio)
HF_TOKEN=seu_token_aqui
# Opcional: outros providers
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
OLLAMA_BASE_URL=
6. Testar Conexao
Execute o script de teste:
python -c "from src.database import DatabaseManager; db = DatabaseManager(); print('Conexao OK!' if db.test_connection() else 'Falha na conexao')"
Se ver "Conexao OK!", tudo esta configurado!
Branching (Feature Unica do Neon)
O Neon permite criar "branches" do seu banco de dados:
Criar um Branch
- No dashboard, va para Branches
- Clique em "Create Branch"
- Nomeie (ex:
testing) - Escolha partir de qual branch/ponto no tempo
Isso cria uma copia completa do seu banco que voce pode:
- Usar para testes sem afetar producao
- Deletar sem consequencias
- Resetar para estado anterior
Usar o Branch
Cada branch tem sua propria connection string:
# Producao
DATABASE_URL_PROD=postgresql://...main...
# Testing
DATABASE_URL_TEST=postgresql://...testing...
Limites Free Tier
O free tier do Neon oferece:
| Recurso | Limite |
|---|---|
| Storage | 10 GB |
| Compute | 100 horas/mes |
| Projetos | 10 |
| Branches | 10 por projeto |
| Conexoes | 1000 simultaneas |
Dicas para nao estourar limites:
Storage:
- Monitore o tamanho dos embeddings (384d = ~1.5KB por doc)
- Exemplo: 1GB = ~650k documentos com embeddings
- Delete dados de teste regularmente
Compute Hours:
- Neon pausa automaticamente apos 5min de inatividade
- 100h/mes = ~3h por dia (suficiente para desenvolvimento)
- Configure
pooler_enabled=truepara otimizar
Branches:
- Delete branches de teste apos uso
- Use para features especificas, nao para cada teste
Configuracoes Recomendadas
Connection Pooling
Para melhor performance, use o pooler do Neon:
# Connection string com pooling
DATABASE_URL=postgresql://user:password@ep-xxx.us-east-1.aws.neon.tech/neondb?sslmode=require&pooler=true
Timeouts
Configure timeouts apropriados no seu codigo:
# src/database.py
DATABASE_CONFIG = {
"connect_timeout": 10,
"command_timeout": 30,
"keepalives": 1,
"keepalives_idle": 30,
}
SSL Mode
Neon requer SSL. Certifique-se de incluir sslmode=require:
?sslmode=require
Monitoramento
Dashboard
O dashboard do Neon mostra:
- Storage usado
- Compute hours consumidas
- Queries recentes
- Metricas de performance
Logs
Para ver logs das queries:
- Va para Monitoring no dashboard
- Visualize queries lentas
- Analise uso de indices
Alerts
Configure alerts para:
- Storage proximo do limite (ex: 8GB de 10GB)
- Compute hours (ex: 80h de 100h)
Troubleshooting
Erro: "password authentication failed"
Verifique:
- Usuario e senha corretos na connection string
- Senha URL-encoded se conter caracteres especiais
from urllib.parse import quote_plus
senha_encoded = quote_plus("minha@senha#123")
Erro: "too many connections"
Solucoes:
- Use connection pooling (
?pooler=true) - Configure max_connections no psycopg
- Feche conexoes nao usadas
Erro: "SSL connection required"
Adicione ?sslmode=require na connection string.
Performance lenta
- Crie indices apropriados:
CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops);
- Use o pooler do Neon
- Otimize queries (veja dashboard)
Migracao de Outro Banco
De PostgreSQL Local
# Dump local
pg_dump -h localhost -U postgres ragdb > dump.sql
# Restore no Neon
psql "postgresql://user:password@ep-xxx.neon.tech/neondb?sslmode=require" < dump.sql
De Supabase
# Obtenha connection string do Supabase
# Execute dump e restore como acima
Upgrade para Plano Pago
Se precisar de mais recursos:
| Plano | Storage | Compute | Preco/mes |
|---|---|---|---|
| Free | 10GB | 100h | $0 |
| Pro | 100GB | 750h | $19 |
| Scale | Custom | Custom | Custom |
Veja detalhes em: neon.tech/pricing
Scripts Uteis
Verificar Tamanho do Banco
SELECT
pg_size_pretty(pg_database_size('neondb')) as database_size,
(SELECT count(*) FROM documents) as document_count;
Limpar Dados Antigos
-- Delete documentos mais antigos que 30 dias
DELETE FROM documents
WHERE created_at < NOW() - INTERVAL '30 days';
-- Vacuum para recuperar espaco
VACUUM FULL documents;
Backup Manual
# Criar backup
pg_dump "postgresql://..." > backup_$(date +%Y%m%d).sql
# Restaurar backup
psql "postgresql://..." < backup_20260123.sql
Recursos Adicionais
Comparacao com Outros Provedores
Veja DATABASE_COMPARISON.md para comparar Neon com Supabase, Railway e outros.
Suporte
- Documentacao: https://neon.tech/docs
- Discord: https://discord.gg/neon
- GitHub Issues: https://github.com/neondatabase/neon/issues
Proximo passo: Voltar ao README ou testar o app!