rag_template / docs /tutorials /01_getting_started.md
Guilherme Favaron
Sync: Complete project update (Phase 6) - API, Metadata, Eval, Docs
a686b1b
# RAG do Zero - Primeiros Passos
Guia completo para iniciar com o RAG Template em 15 minutos.
**Tempo estimado**: 15-20 minutos
**Nivel**: Iniciante
**Pre-requisitos**: Python 3.10+ instalado
---
## O que e RAG?
**RAG (Retrieval-Augmented Generation)** combina:
- **Retrieval** (Recuperacao): Buscar informacao relevante em documentos
- **Augmented** (Aumentada): Enriquecer o contexto da IA
- **Generation** (Geracao): LLM gera resposta baseada no contexto
**Em termos simples**: E como dar "memoria" e conhecimento especializado para uma IA.
**Exemplo pratico**:
- Sem RAG: "Qual e a politica de ferias da empresa?" → IA chuta ou diz "nao sei"
- Com RAG: IA busca no manual RH → "Segundo o manual, sao 30 dias apos 1 ano"
---
## Passo 1: Instalacao
### 1.1 Clonar o Repositorio
```bash
git clone https://github.com/guifav/rag_template.git
cd rag_template
```
### 1.2 Criar Ambiente Virtual
```bash
# Linux/Mac
python -m venv .venv
source .venv/bin/activate
# Windows
python -m venv .venv
.venv\Scripts\activate
```
### 1.3 Instalar Dependencias
```bash
pip install -r requirements.txt
```
Isso instala:
- Gradio (interface web)
- PostgreSQL driver (banco de dados)
- Sentence Transformers (embeddings)
- E outras dependencias
**Tempo**: ~2-3 minutos
---
## Passo 2: Configurar Banco de Dados
Voce tem 3 opcoes. Recomendamos Neon para iniciantes (10GB gratis).
### Opcao A: Neon.tech (Recomendado)
1. Crie conta em [neon.tech](https://neon.tech)
2. Crie novo projeto
3. No SQL Editor, execute:
```sql
CREATE EXTENSION vector;
```
4. Copie a connection string
5. Use o script de setup:
```bash
python scripts/setup_neon.py
```
**Tempo**: ~3-5 minutos
### Opcao B: Supabase
```bash
python scripts/setup_supabase.py
```
### Opcao C: Docker Local
```bash
docker-compose up -d
```
Veja guias completos:
- [Neon Setup](../NEON_SETUP.md)
- [Supabase Setup](../SUPABASE_SETUP.md)
- [Comparacao de Providers](../DATABASE_COMPARISON.md)
---
## Passo 3: Configurar Variave is de Ambiente
### 3.1 Criar arquivo .env
```bash
cp .env.example .env
```
### 3.2 Editar .env
Abra `.env` e configure:
```env
# Banco de dados (use a connection string do passo 2)
DATABASE_URL=postgresql://user:pass@host:port/db
# Hugging Face (obrigatorio para LLM)
HF_TOKEN=seu_token_aqui
# Opcional: outros providers
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
```
**Como obter HF_TOKEN**:
1. Crie conta em [huggingface.co](https://huggingface.co)
2. Va para Settings → Access Tokens
3. Crie novo token (permissao "read")
4. Copie e cole no .env
**Tempo**: ~2 minutos
---
## Passo 4: Executar a Aplicacao
```bash
python app.py
```
Voce vera:
```
Running on local URL: http://127.0.0.1:7860
```
Abra esse link no navegador!
**Tempo de inicio**: 10-30 segundos (baixa modelos na primeira vez)
---
## Passo 5: Primeira Ingestao de Documentos
Agora vamos adicionar documentos ao sistema.
### 5.1 Preparar Documento
Crie um arquivo `teste.txt` com algum conteudo:
```
A empresa XYZ foi fundada em 2020.
Nossa missao e tornar a tecnologia acessivel.
Oferecemos 30 dias de ferias apos 1 ano de empresa.
O horario de trabalho e das 9h as 18h.
Temos escritorios em Sao Paulo e Rio de Janeiro.
```
### 5.2 Fazer Upload
1. Na interface, va para aba **"Ingestao de Documentos"**
2. Clique em "Browse" e selecione `teste.txt`
3. Deixe configuracoes padrao:
- Estrategia: Tamanho Fixo
- Chunk Size: 1000
- Overlap: 200
4. Clique em **"Iniciar Ingestao"**
Voce vera o processo:
1. Extraindo texto (instantaneo para TXT)
2. Dividindo em chunks (1 chunk para texto pequeno)
3. Gerando embeddings (~1-2 segundos)
4. Salvando no banco (instantaneo)
**Resultado**: "Ingestao concluida! 1 documento(s) processado(s)"
---
## Passo 6: Primeira Consulta
Agora vamos buscar informacao nos documentos.
### 6.1 Busca Simples
1. Va para aba **"Exploracao da Base"**
2. Digite uma query: `ferias da empresa`
3. Clique em **"Buscar"**
Voce vera:
- Documento encontrado
- Score de similaridade (~0.7-0.9)
- Conteudo: "Oferecemos 30 dias de ferias..."
**O que aconteceu**:
1. Sua query foi transformada em embedding
2. Sistema buscou embeddings similares no banco
3. Retornou documentos mais relevantes
---
## Passo 7: Primeiro Chat com RAG
Hora de conversar com seus documentos!
### 7.1 Configurar Chat
1. Va para aba **"Chat RAG"**
2. Configuracoes:
- LLM Provider: HuggingFace
- Top K: 3
- Temperature: 0.3
- Max Tokens: 256
### 7.2 Fazer Pergunta
Digite: `Quantos dias de ferias a empresa oferece?`
Clique em **"Enviar"**
**Resposta esperada**:
```
A empresa oferece 30 dias de ferias apos 1 ano de trabalho.
Contextos recuperados:
1. "Oferecemos 30 dias de ferias apos 1 ano de empresa." (score: 0.85)
```
**O que aconteceu**:
1. Sistema buscou contextos relevantes (top 3)
2. Montou um prompt com contexto + pergunta
3. Enviou para LLM (HuggingFace API)
4. LLM gerou resposta baseada no contexto
**Tempo de resposta**: 2-5 segundos (dependendo da API)
---
## Passo 8: Experimentar Parametros
Agora vamos entender o impacto dos parametros.
### 8.1 Testar Top K
1. Va para aba **"Playground de Parametros"**
2. Config A: top_k = 1
3. Config B: top_k = 5
4. Query: `horario de trabalho`
5. Compare resultados
**Observacao**: Mais contexto (top_k maior) pode ajudar, mas tambem pode trazer ruido.
### 8.2 Testar Temperature
1. Config A: temperature = 0.1 (deterministico)
2. Config B: temperature = 0.9 (criativo)
3. Mesma query
4. Compare
**Observacao**: Temperature baixa = respostas mais precisas. Temperature alta = respostas mais variadas/criativas.
---
## Passo 9: Monitorar Uso
1. Va para aba **"Monitoramento"**
2. Veja estatisticas:
- Documentos no banco: 1
- Queries realizadas: ~3
- Latencias medias
---
## Proximos Passos
Parabens! Voce criou seu primeiro sistema RAG. Agora:
1. **Adicione mais documentos**: PDFs, mais TXTs
2. **Teste estrategias de chunking**: Veja [Tutorial 2](02_optimizing_rag.md)
3. **Experimente features avancadas**: Hybrid search, reranking
4. **Deploy**: [Tutorial 3](03_production_deployment.md)
---
## Troubleshooting
### "Unable to connect to database"
**Problema**: DATABASE_URL incorreto
**Solucao**:
1. Verifique .env
2. Teste conexao: `python scripts/setup_neon.py`
3. Certifique-se que banco esta ativo
### "HF_TOKEN invalid"
**Problema**: Token HuggingFace invalido
**Solucao**:
1. Gere novo token em huggingface.co/settings/tokens
2. Certifique-se de copiar token completo
3. Atualize .env
### "Model download failed"
**Problema**: Erro ao baixar modelo de embedding
**Solucao**:
1. Verifique conexao com internet
2. Aguarde alguns minutos e tente novamente
3. Modelos sao baixados apenas na primeira vez
### App muito lento
**Causas comuns**:
- HuggingFace API em horario de pico
- Database remoto com latencia alta
- Modelo de embedding ainda baixando
**Solucao**:
- Use modelo de embedding menor (384d)
- Configure connection pooling
- Considere usar OpenAI/Anthropic para LLM
---
## Recursos Adicionais
- [Tutorial 2: Otimizando seu RAG](02_optimizing_rag.md)
- [Tutorial 3: RAG em Producao](03_production_deployment.md)
- [Tutorial 4: RAG Avancado](04_advanced_rag.md)
- [FAQ](../FAQ.md)
- [Documentacao Completa](../../README.md)
---
## Resumo
Neste tutorial voce:
- Instalou o RAG Template
- Configurou banco de dados (Neon/Supabase)
- Fez primeira ingestao de documento
- Realizou primeira busca semantica
- Conversou com seus documentos usando LLM
- Experimentou com parametros
**Tempo total**: ~15-20 minutos
**Proximo**: [Otimizando seu RAG](02_optimizing_rag.md)