Plan de evaluación — Servicio RAG/harnessing para PyMEs (resumen)
Fecha: 2026-09-27 Autor: Nef + opencode Estado: evaluación de cómputo completada; arquitectura definida; pendiente despliegue final.
1. Objetivo
Adaptar tecnología de Hugging Face para provisionar un servicio de RAG/harnessing a clientes (clínicas dentales / PyMEs). No es solo un benchmark: es un servicio desplegable por cliente, con modelos open-weights, coste controlado y multi-tenant.
2. El benchmark — proyecto_1_dentistas
Repo: ~/nef/Proyectos/proyecto_1_dentistas/
Commits: 6993f87 scaffold · ea88a39 inyección/citas · 32b3d2b juez Groq/overrides
Qué es: RAG conversacional sobre “Sonrisa: tu clínica” (clínica dental ficticia, Centro CDMX).
Artefactos:
- Corpus sintético: 15 docs, 77 chunks.
- Golden set: 20 preguntas (4 fuera de alcance que deben escalar).
- Pipeline: chunking → FAISS + BM25 → RRF → rerank → respuesta con citas.
- Evaluación: RAGAS + citation accuracy + coste por interacción.
Verificado:
- Generación 20/20 con Groq: citation accuracy 1.0, retrieval hit rate 1.0, escalate accuracy 1.0.
- RAGAS parcial (11/20) por límite TPD de Groq (200k tokens/día).
- Provider
spaceañadido (embed/rerank/chat vía HF ZeroGPU).
3. Evaluación de cómputo (todo lo probado)
Hugging Face
| Opción | Resultado |
|---|---|
| ZeroGPU Space | ✅ Gratis (PRO 40 min/día). [usuario]/sonrisa-inference creado, código pusheado, RUNNING con zero-a10g. API verificada (embed/rerank/chat). |
| HF Sandboxes | ❌ 402 Payment Required (incluso con tarjeta). |
| HF Inference Providers | ❌ 402 (créditos agotados). |
| Token fine-grained | Crea Spaces y pushea por git, pero NO cambia hardware (403). |
zero_gpu: true en README | NO asigna GPU — solo desde web (Settings → Hardware). |
| Ollama Cloud | ❌ No soporta embeddings (insuficiente para RAG). |
Cloud hyperscalers
| Proveedor | GPU | Precio on-demand | Veredicto |
|---|---|---|---|
| GCP | T4 0.56/h · A100 $2.93/h | Spot: T4 $0.20/h | ✅ Proyecto yt-extract-505518, Cloud Run habilitado. Deploy con issues (arm64/amd64, permisos). |
| Azure | T4 3.67/h · H100 $6.98/h | Spot: T4 $0.07/h | ✅ Similar a GCP, más caro. |
| Oracle Cloud | — | Always-free: 2 OCPUs + 12GB RAM (ARM), sin GPU. $300 crédito/30 días. | ✅ Always-free para CPU. |
Proveedores GPU specialist
| Proveedor | A100 | L40S | H100 | Modelo |
|---|---|---|---|---|
| RunPod Secure | $1.89/h | $2.25/h | $3.29/h | Por segundo, estable |
| RunPod Community | $1.19/h | — | $2.79/h | Spot, puede preemtear |
| Vast.ai | desde $0.50/h | — | desde $0.90/h | Marketplace P2P, variable |
| Modal | $2.50/h | — | $3.95/h | Scale-to-zero, $30/mes crédito |
| Lambda | $1.99/h | — | $3.29/h | Por hora |
| Replicate | $5.04/h | — | $5.49/h | Model-first, API simple |
Dedicados (bare metal)
| Proveedor | Modelo | GPU | Precio/mes |
|---|---|---|---|
| Hetzner | GEX131-1 | RTX PRO 6000 (96GB) | €1,197 ← mejor valor 48GB+ |
| OVH | HGR-AI-2 | L40S (48GB) | $3,505 |
Otros
| Opción | Resultado |
|---|---|
| GitHub | ❌ Sin GPU (Actions CPU 2-core, Codespaces CPU 32GB). |
| DigitalOcean | App Platform ($5/mo), RAG Assistant blueprint, token DO_API, cuenta [usuario]@comunidad.unam.mx. Registry creado, imagen subida. |
| Groq | ✅ Funciona, pero 200k tokens/día (TPD). gpt-oss-20b necesita reasoning_effort: low para JSON. |
4. Hallazgos clave
-
La arquitectura ganadora: FastAPI en un cloud gratis (CPU) + HF ZeroGPU para GPU.
- FastAPI: DO App Platform ($5), o OCI Ampere A1 (always-free), o GCP Cloud Run (free tier).
- GPU: HF ZeroGPU Space (gratis, 40 min/día PRO).
- Total: $0-5/mes.
-
Hetzner GEX131-1 es el mejor valor para 48GB+ (RTX PRO 6000 96GB, €1,197/mes) — 2.5x más barato que OVH, 2.3x más barato que GCP. Pero es en Alemania (latencia).
-
Oracle Cloud always-free (2 OCPUs + 12GB RAM, sin GPU) sirve para el FastAPI + modelos pequeños en CPU.
-
El token fine-grained de HF crea Spaces y pushea por git, pero NO cambia hardware (403). El ZeroGPU se asigna solo desde la web.
-
Ollama Cloud no sirve para RAG (no soporta embeddings).
-
Groq free tiene límite TPD (200k tokens/día) — la evaluación completa no cabe en un día.
5. Estado actual (actualizado 2026-09-27)
| Componente | Estado |
|---|---|
HF Space sonrisa-inference | ✅ RUNNING con zero-a10g, API verificada (embed/rerank/chat) |
proyecto_1_dentistas | ✅ Scaffold verificado 20/20, provider space añadido |
| GCP Cloud Run | ✅ DESPLEGADO y vivo (/health OK, 77 chunks). /ask tiene bug (sqlite thread) |
| DO Container Registry | ✅ Imagen sonrisa-rag subida |
| DO App Platform | ⏳ App no desplegada |
| Oracle Cloud | ✅ Config OCI presente (~/.oci/config), cuenta verificada |
pyme-rag (demo/) | ✅ Completo: multi-tenant, OCI always-free, hybrid search, harness |
| Prompt de fusión | ✅ Creado (2026-09-27-prompt-fusion-rag-pymes.md) |
Bug conocido (Cloud Run): sqlite3.ProgrammingError en /ask — el Embedder crea la conexión sqlite en un hilo y FastAPI la usa en otro. Fix: check_same_thread=False. No corregido (instrucción: no subir nada).
6. Arquitectura recomendada (fusión)
Cliente (clínica) → Caddy (TLS) → FastAPI (OCI Ampere A1, always-free, CPU)
├─ embed → fastembed MiniLM (ONNX, CPU, 384d)
├─ retrieve → FAISS + BM25 + RRF + reranker (CPU)
└─ chat → cadena: ZeroGPU Space → Groq → local pequeño
FastAPI en: OCI Ampere A1 (always-free) · DO App Platform (0/mes (OCI + ZeroGPU)
7. Project-2: Fusión RAG multi-tenant
Servicio RAG multi-tenant para PyMEs = fusión de proyecto_1_dentistas (retrieval + eval) + pyme-rag (infra + multi-tenant):
- De
pyme-rag: infra Terraform OCI (Ampere A1, iptables fix, budget alert), multi-tenant (SQLite por cliente), Caddy TLS, harness hit@k/MRR. - De
proyecto_1_dentistas: retrieval (FAISS+BM25+RRF+reranker), embeddings (Qwen3-4B), eval (citation accuracy, escalate, RAGAS, coste). - Embed/rerank en CPU (fastembed) → ZeroGPU solo para chat, con cadena de respaldo.
- Prompt de fusión:
2026-09-27-prompt-fusion-rag-pymes.md.
8. Próximos pasos
- Ejecutar el prompt de fusión (M1-M5): esqueleto → retrieval+embed CPU → LLM con respaldo → eval combinada → infra OCI.
- Corregir el bug de Cloud Run (sqlite thread) si se usa GCP.
- Correr el golden set 20/20 con juez en HF ZeroGPU (cobertura íntegra).
- Piloto con una clínica real (el testigo).
9. Decisiones persistidas
~/nef/decisions/[CREDENCIAL].md~/nef/decisions/[CREDENCIAL].md~/nef/decisions/[CREDENCIAL].md~/nef/decisions/[CREDENCIAL].md~/nef/decisions/2026-09-27-hf-plataforma-lecciones.md~/nef/decisions/[CREDENCIAL].md~/nef/decisions/2026-09-27-plan-evaluacion-rag-pymes.md(este)~/nef/decisions/2026-09-27-prompt-fusion-rag-pymes.md(prompt de fusión)