File size: 6,861 Bytes
a686b1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
# Secrets para Hugging Face Spaces

Guia completo para configurar secrets no Hugging Face Spaces para o RAG Template.

---

## Como Configurar Secrets

1. Acesse seu Space no Hugging Face
2. Va para **Settings**
3. Role ate a secao **Repository secrets**
4. Clique em **New secret** para cada secret necessario
5. Adicione nome e valor
6. Clique em **Add secret**

---

## Secrets Obrigatorios

### DATABASE_URL

**Obrigatorio**: Sim

Connection string do PostgreSQL com pgvector.

**Formato**:
```
postgresql://user:password@host:port/database
```

**Exemplos**:

```bash
# Supabase
postgresql://postgres:sua_senha@db.xxxxxxxxxxxxx.supabase.co:5432/postgres

# Neon
postgresql://user:senha@ep-xxx-xxx.us-east-1.aws.neon.tech/neondb?sslmode=require

# Railway
postgresql://postgres:senha@containers-us-west-xxx.railway.app:5432/railway
```

**Importante**:
- Certifique-se de que a senha esta URL-encoded se conter caracteres especiais
- Para Neon, inclua `?sslmode=require`
- Teste a conexao antes de adicionar ao Space

**Como obter**:
- [Supabase Setup](SUPABASE_SETUP.md)
- [Neon Setup](NEON_SETUP.md)
- [Railway Setup](RAILWAY_SETUP.md)

---

## Secrets de LLM Providers

Voce precisa de **pelo menos um** destes para usar o chat:

### HF_TOKEN (Recomendado para Spaces)

**Obrigatorio**: Nao, mas recomendado

Token da Hugging Face para usar Inference API.

**Como obter**:
1. Va para [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens)
2. Crie novo token com permissao "read"
3. Copie o token

**Formato**:
```
hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

**Vantagens**:
- Gratuito (com limites)
- Sem necessidade de infraestrutura
- Varios modelos disponiveis

**Limites Free Tier**:
- ~30k tokens/hora
- Pode ter queue em horarios de pico

---

### OPENAI_API_KEY

**Obrigatorio**: Nao

Chave de API da OpenAI para usar GPT-4, GPT-3.5, etc.

**Como obter**:
1. Crie conta em [platform.openai.com](https://platform.openai.com)
2. Va para [API Keys](https://platform.openai.com/api-keys)
3. Crie nova secret key
4. Copie a chave (aparece apenas uma vez!)

**Formato**:
```
sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

**Custos** (Fevereiro 2024):
- GPT-3.5-turbo: $0.50 / 1M tokens input
- GPT-4-turbo: $10 / 1M tokens input
- GPT-4o: $5 / 1M tokens input

---

### ANTHROPIC_API_KEY

**Obrigatorio**: Nao

Chave de API da Anthropic para usar Claude.

**Como obter**:
1. Crie conta em [console.anthropic.com](https://console.anthropic.com)
2. Va para API Keys
3. Crie nova key
4. Copie a chave

**Formato**:
```
sk-ant-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

**Custos** (Fevereiro 2024):
- Claude 3 Haiku: $0.25 / 1M tokens input
- Claude 3 Sonnet: $3 / 1M tokens input
- Claude 3 Opus: $15 / 1M tokens input

---

### OLLAMA_BASE_URL

**Obrigatorio**: Nao

URL do servidor Ollama para usar modelos locais.

**Como configurar**:
1. Instale Ollama localmente ou em servidor
2. Exponha via ngrok ou similar (para Spaces)
3. Use URL publica

**Formato**:
```
https://seu-servidor.com
```

**Nota**: Nao recomendado para Spaces publicos (requer servidor proprio).

---

## Secrets Opcionais

### EMBEDDING_MODEL_ID

**Default**: `sentence-transformers/all-MiniLM-L6-v2`

Modelo para gerar embeddings.

**Alternativas**:
```
sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2  # Multilingue
sentence-transformers/all-mpnet-base-v2  # Melhor qualidade (768d)
BAAI/bge-small-en-v1.5  # Eficiente
```

---

### TOP_K

**Default**: `4`

Numero de documentos a recuperar na busca.

**Range**: 1-20

---

### TEMPERATURE

**Default**: `0.3`

Criatividade do LLM (0 = deterministico, 1 = criativo).

**Range**: 0.0-1.0

---

### MAX_TOKENS

**Default**: `512`

Tamanho maximo da resposta do LLM.

**Range**: 100-4096

---

## Exemplo Completo

```bash
# Obrigatorio
DATABASE_URL=postgresql://postgres:senha@db.xxx.supabase.co:5432/postgres

# LLM (escolha pelo menos um)
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxx
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxx

# Opcional
EMBEDDING_MODEL_ID=sentence-transformers/all-MiniLM-L6-v2
TOP_K=4
TEMPERATURE=0.3
MAX_TOKENS=512
```

---

## Validacao de Secrets

Apos configurar, o app validara os secrets na inicializacao:

### Validacoes:
1. **DATABASE_URL**: Testa conexao e verifica extensao pgvector
2. **HF_TOKEN**: Testa autenticacao (se fornecido)
3. **OPENAI_API_KEY**: Testa autenticacao (se fornecido)
4. **ANTHROPIC_API_KEY**: Testa autenticacao (se fornecido)

### Logs de inicializacao:
```
Conectando ao banco de dados...
  DATABASE_URL: OK
  Extensao pgvector: OK
Verificando LLM providers...
  HuggingFace: OK
  OpenAI: NAO CONFIGURADO
  Anthropic: NAO CONFIGURADO
```

---

## Seguranca

### Boas Praticas:

1. **Nunca compartilhe secrets publicamente**
   - Nao commite no Git
   - Nao coloque em codigo
   - Nao compartilhe em issues/forums

2. **Rotacao de secrets**
   - Troque secrets periodicamente
   - Revogue secrets antigos
   - Use secrets separados para dev/prod

3. **Principio do menor privilegio**
   - Use apenas permissoes necessarias
   - Para HF_TOKEN, permissao "read" e suficiente
   - Nao use tokens com permissoes de "write"

4. **Monitoring**
   - Monitore uso de API keys
   - Configure alerts de uso anormal
   - Revogue imediatamente se comprometido

---

## Troubleshooting

### "Unable to connect to database"

**Causa**: DATABASE_URL incorreto ou banco inacessivel

**Solucao**:
1. Verifique formato da URL
2. Teste conexao localmente
3. Verifique se banco esta ativo (Supabase nao pausado)

---

### "HF_TOKEN invalid"

**Causa**: Token invalido ou expirado

**Solucao**:
1. Gere novo token em huggingface.co/settings/tokens
2. Certifique-se de copiar token completo
3. Token deve comecar com `hf_`

---

### "OpenAI authentication failed"

**Causa**: OPENAI_API_KEY invalida

**Solucao**:
1. Verifique se key e valida em platform.openai.com
2. Certifique-se de ter creditos na conta
3. Key deve comecar com `sk-`

---

### "Extension 'vector' not found"

**Causa**: pgvector nao habilitado no banco

**Solucao**:
```sql
-- Execute no SQL Editor do seu provider
CREATE EXTENSION vector;
```

---

## Limitacoes do Free Tier

### Hugging Face Spaces
- Secrets podem ser vistos por administradores do Space
- Spaces publicos podem ter limite de uso
- Cold start pode demorar

### LLM Providers
- **HuggingFace**: ~30k tokens/hora
- **OpenAI**: Requer creditos ($5 minimo inicial)
- **Anthropic**: Requer creditos ($5 minimo inicial)

---

## Recursos Adicionais

- [Supabase Setup](SUPABASE_SETUP.md)
- [Neon Setup](NEON_SETUP.md)
- [Railway Setup](RAILWAY_SETUP.md)
- [Database Comparison](DATABASE_COMPARISON.md)

---

## Suporte

Se encontrar problemas:
1. Verifique logs do Space
2. Teste conexoes localmente
3. Abra issue no [GitHub](https://github.com/guifav/rag_template/issues)

---

**Feito com muito cafe**