Spaces:
Runtime error
Plano Validado (Context7): HF Spaces + HF CLI + Jobs
Este plano foi corrigido com base nas boas praticas documentadas no Hugging Face Hub/CLI via Context7.
1) Arquitetura recomendada
Space (Docker): roda o bot Discord e serve consultas RAG.HF Job: reconstrói o indice FAISS sob demanda ou por agendamento.Dataset repo (Hub): armazena os artefatos versionados do indice (faiss.index,meta.json,manifest.json).
Motivo: o acoplamento direto de volume entre Space e Job nao deve ser assumido. Para integracao confiavel entre componentes, use artefato no Hub.
2) Persistencia correta no Space
No Space, habilite Persistent Storage em Settings > Hardware.
Use os caminhos abaixo:
HF_HOME=/data/.huggingfaceLOCAL_STORAGE_DIR=/data/storage
Observacao:
/datae o caminho de volume persistente em Spaces.- qualquer dado fora de
/datapode ser efemero.
3) Fluxo operacional (producao)
3.1 Build de indice (Job)
- Job baixa os documentos (repo/dataset/origem definida).
- Job gera
faiss.index+meta.json. - Job publica artefatos no dataset de indices (com commit e tag/revisao).
- Job atualiza
manifest.jsoncomrevision,created_at,embed_model,num_chunks.
3.2 Consumo no Space
- Bot inicia.
- Bot baixa o ultimo artefato aprovado do dataset.
- Bot salva localmente em
/data/storagepara cache quente. - Bot consulta
manifest.jsonperiodicamente e faz hot-reload quandorevisionmuda.
Resultado:
- sem depender de restart para atualizar base;
- rollback simples por revisao/tag do dataset.
3.3 Envio de @docs_rag para estrutura HF
Padrao recomendado: separar fonte documental e artefato de indice.
- Dataset 1 (fonte):
<org-ou-user>/rag-docs - Dataset 2 (indice):
<org-ou-user>/rag-index
Estrutura no Hub:
rag-docs/docs_rag/...(originais .pdf/.doc/.docx/.rtf)rag-index/artifacts/faiss.indexrag-index/artifacts/meta.jsonrag-index/artifacts/manifest.json
Comandos para publicar ./docs_rag:
# criar dataset de documentos (uma vez)
hf repo create <org-ou-user>/rag-docs --repo-type dataset --private
# upload completo da pasta local docs_rag para /docs_rag no dataset
hf upload <org-ou-user>/rag-docs ./docs_rag docs_rag --repo-type dataset --commit-message "docs: carga inicial"
Incremental (atualizacoes futuras):
hf upload <org-ou-user>/rag-docs ./docs_rag docs_rag --repo-type dataset --commit-message "docs: update <timestamp>"
Upload otimizado (filtro e higiene):
hf upload <org-ou-user>/rag-docs ./docs_rag docs_rag \
--repo-type dataset \
--commit-message "docs: update <timestamp>" \
--exclude "**/.DS_Store" \
--exclude "**/Thumbs.db" \
--exclude "**/~$*" \
--exclude "**/*.tmp" \
--exclude "**/*.log" \
--exclude "**/__pycache__/**"
Upload otimizado com whitelist de extensoes (recomendado):
hf upload <org-ou-user>/rag-docs ./docs_rag docs_rag \
--repo-type dataset \
--commit-message "docs: update <timestamp>" \
--include "**/*.pdf" \
--include "**/*.doc" \
--include "**/*.docx" \
--include "**/*.rtf" \
--exclude "**/.DS_Store" \
--exclude "**/Thumbs.db" \
--exclude "**/~$*"
Opcional para acervo muito grande (lote por pasta):
hf upload <org-ou-user>/rag-docs ./docs_rag/legislacao_grifada_e_anotada_atualiz_em_01_01_2026 docs_rag/legislacao_grifada_e_anotada_atualiz_em_01_01_2026 --repo-type dataset --commit-message "docs: lote legislacao"
hf upload <org-ou-user>/rag-docs ./docs_rag/sumulas_tse_stj_stf_e_tnu_atualiz_01_01_2026_2 docs_rag/sumulas_tse_stj_stf_e_tnu_atualiz_01_01_2026_2 --repo-type dataset --commit-message "docs: lote sumulas"
Observacoes operacionais:
- o Job deve ler da pasta
docs_rag/no dataset de documentos. - o Job publica o resultado no dataset de indice (
rag-index). - o Space nunca depende diretamente do filesystem do Job.
4) Comandos HF CLI (baseline)
4.1 Autenticacao e diagnostico
hf auth whoami
hf env
4.2 Criar repo de artefatos (dataset)
hf repo create <org-ou-user>/rag-index --repo-type dataset --private
4.3 Upload de artefatos do indice
hf upload <org-ou-user>/rag-index ./artifacts . --repo-type dataset --commit-message "reindex: <timestamp>"
4.4 Rodar Job manual
hf jobs run python:3.12 python ingest_job.py
4.5 Agendar Job
Use os comandos de agendamento de jobs (hf jobs scheduled ...) para periodicidade (ex.: diario).
5) Variaveis e segredos
5.1 Space (Variables)
HF_HOME=/data/.huggingfaceLOCAL_STORAGE_DIR=/data/storageINDEX_REPO_ID=<org-ou-user>/rag-indexINDEX_REPO_TYPE=datasetINDEX_POLL_SECONDS=60
5.2 Space/Job (Secrets)
HF_TOKEN(escopo minimo necessario)OPENROUTER_API_KEYDISCORD_TOKEN
Regra:
- nunca commitar token no repo;
- sempre usar Secrets do Space/Job.
6) Checklist de robustez
- validar autenticacao antes de operacoes:
hf auth whoami. - validar ambiente com
hf env. - publicar indice com metadados (
manifest.json). - fazer pinagem por revisao para reproducibilidade.
- manter estrategia de rollback (tag da ultima versao estavel).
- registrar logs de reindex e troca de revisao no bot.
7) Custo e desempenho
- Space CPU pequeno atende bem para consulta RAG leve.
- Reindex em Job CPU normalmente e suficiente.
/datareduz redownload ao manter cache comHF_HOME.- separar inferencia (OpenRouter) da indexacao reduz custo total.
8) Criticos corrigidos neste plano
- removida suposicao de persistencia em
storage/fora de/data. - removida suposicao de compartilhamento direto de volume entre Space e Job.
- adicionada camada de artefato versionado no Hub para sincronizacao segura.
- adicionadas operacoes minimas de CLI para auditoria e rollback.