# 🔧 FIX: Build FAISS Falhou ## ❌ Problema ```json {"status": "error", "message": "Build FAISS falhou", "progress": 0} ``` ## ✅ Solução Este pacote contém 3 arquivos corrigidos para resolver o erro. --- ## 📦 Arquivos Incluídos 1. **requirements.txt** - Versão COMPLETA com todas as dependências 2. **config.yaml** - Otimizado (batch_size reduzido, prefixo no modelo) 3. **rag_builder.py** - Com logging detalhado para debug --- ## 🚀 Como Aplicar (Passo-a-Passo) ### Passo 1: Localizar seu repositório local do Space ```bash cd /caminho/para/para_ai_rag_langchain # (ou o nome do diretório do seu Space) ``` ### Passo 2: Fazer backup dos arquivos atuais (opcional) ```bash cp requirements.txt requirements.txt.BAK cp config.yaml config.yaml.BAK cp rag_builder.py rag_builder.py.BAK ``` ### Passo 3: Copiar arquivos corrigidos ```bash # Extrair o ZIP que você baixou unzip para_ai_rag_FIX.zip # Copiar arquivos cp para_ai_rag_FIX_v2/requirements.txt . cp para_ai_rag_FIX_v2/config.yaml . cp para_ai_rag_FIX_v2/rag_builder.py . ``` ### Passo 4: Verificar mudanças ```bash git status # Deve mostrar: # modified: requirements.txt # modified: config.yaml # modified: rag_builder.py ``` ### Passo 5: Commit e Push ```bash git add requirements.txt config.yaml rag_builder.py git commit -m "fix: Adicionar dependências faltando + otimizações (torch, transformers, tokenizers)" git push origin main ``` ### Passo 6: Monitorar Rebuild Aguardar ~8-10 minutos para rebuild e depois monitorar setup: ```bash # Opção 1: Com watch (atualiza automaticamente) watch -n 10 'curl -s https://caarleexx-paraai-rag.hf.space/setup/status | jq' # Opção 2: Manual curl https://caarleexx-paraai-rag.hf.space/setup/status | jq ``` **Progresso esperado:** ```json {"status": "cloning", "progress": 10, "message": "Clonando chunks..."} {"status": "extracting", "progress": 30, "message": "Descompactando..."} {"status": "building", "progress": 70, "message": "Construindo FAISS..."} {"status": "ready", "progress": 100, "message": "FAISS pronto!"} ``` ### Passo 7: Testar quando pronto Quando `status` = `"ready"`, testar busca: ```bash curl -X POST https://caarleexx-paraai-rag.hf.space/search/embedding \ -H "Content-Type: application/json" \ -d '{"query": "FGTS correção monetária TR", "top_k": 3}' | jq ``` **Resposta esperada:** ```json { "cluster_id": "RAG-0301", "query": "FGTS correção monetária TR", "total_results": 3, "results": [ { "id": "12345", "ementa": "...", "score": 0.87, "metadata": {...} } ], "query_time_ms": 142.35 } ``` --- ## 📊 O Que Foi Corrigido? ### requirements.txt **ADICIONADO (estava faltando):** ```diff + torch==2.2.0 + transformers==4.37.2 + tokenizers==0.15.2 + safetensors==0.4.2 + huggingface-hub==0.20.3 ``` **Por quê?** - `torch` → Backend para sentence-transformers - `transformers` → Carregar modelos HuggingFace - `tokenizers` → Processar texto antes de embeddings - `safetensors` → Formato seguro para pesos do modelo - `huggingface-hub` → Baixar modelos do Hub ### config.yaml **ALTERADO:** ```diff - embedding_model: "all-MiniLM-L6-v2" + embedding_model: "sentence-transformers/all-MiniLM-L6-v2" ``` **Por quê?** HuggingFaceEmbeddings precisa do prefixo `sentence-transformers/` para encontrar o modelo no Hub. **REDUZIDO:** ```diff - embedding_batch_size: 64 + embedding_batch_size: 16 ``` **Por quê?** Batch 64 pode causar OOM (Out of Memory) no HF Spaces free tier (16GB RAM). Batch 16 é mais seguro. ### rag_builder.py **ADICIONADO:** - ✅ Logging detalhado em cada passo (1/5, 2/5, etc) - ✅ Try/except específico para ImportError (mostra deps faltando) - ✅ Try/except específico para FileNotFoundError - ✅ Traceback completo em caso de erro - ✅ Medição de tempo e velocidade - ✅ Verificação de tamanho do index salvo --- ## ⚠️ Troubleshooting ### Erro: "No module named 'torch'" **Causa:** requirements.txt não foi atualizado corretamente **Solução:** 1. Verificar se push foi bem-sucedido: `git log -1` 2. Verificar no HF Space se requirements.txt tem `torch==2.2.0` 3. Se não, fazer push novamente ### Erro: "Killed" ou "Exit code 137" **Causa:** OOM (Out of Memory) **Solução:** Reduzir ainda mais o batch_size: ```yaml # Em config.yaml embedding_batch_size: 8 # ou até 4 ``` ### Erro: "Model not found: all-MiniLM-L6-v2" **Causa:** Nome do modelo sem prefixo **Solução:** Verificar config.yaml tem: ```yaml embedding_model: "sentence-transformers/all-MiniLM-L6-v2" ^^^^^^^^^^^^^^^^^^^^^^^^ Prefixo obrigatório! ``` ### Build ainda falha? 1. **Acessar logs do Space:** https://huggingface.co/spaces/caarleexx/paraai-rag/logs 2. **Procurar por:** - "ModuleNotFoundError" - "ImportError" - "MemoryError" - "Traceback" - Última exceção antes de "Build FAISS falhou" 3. **Me enviar:** - Todo o log de erro - Output de `pip list` do Space (se conseguir acessar) - Arquivo requirements.txt atual --- ## 📊 Estimativas **Rebuild:** ~8-10 minutos **Setup:** ~15-18 minutos para 300 chunks - Clone: ~3min - Extract: ~2min - Concat/Filter: ~2min - Build FAISS: ~8-10min (batch_size=16, CPU) **RAM:** ~2GB durante build **Disco:** ~150MB (FAISS index persistente) --- ## ✅ Checklist Final Antes de fazer push, verificar: - [ ] `requirements.txt` inclui `torch==2.2.0` - [ ] `requirements.txt` inclui `transformers==4.37.2` - [ ] `requirements.txt` inclui `tokenizers==0.15.2` - [ ] `requirements.txt` inclui `safetensors==0.4.2` - [ ] `requirements.txt` inclui `huggingface-hub==0.20.3` - [ ] `config.yaml` tem `embedding_model: "sentence-transformers/all-MiniLM-L6-v2"` - [ ] `config.yaml` tem `embedding_batch_size: 16` (ou menos) --- ## 📞 Suporte Se problema persistir após aplicar fix: 1. Acessar logs: https://huggingface.co/spaces/caarleexx/paraai-rag/logs 2. Copiar **TODA** a exceção/traceback 3. Me enviar para análise detalhada --- ⚖️ **InJustiça não para o Paraná!** 🐝