“ChatGPT para tus documentos”, on-prem y sin OpenAI: cómo llevar RAGFlow a producción si administras sistemas y aplicaciones

RAGFlow es un motor RAG (Retrieval-Augmented Generation) y de agentes 100 % open source que puedes ejecutar en local (sin exfiltrar datos) para consultar, razonar y citar información de PDF/DOCX/HTML/imágenes/tablas y fuentes estructuradas. Se despliega con Docker Compose, indexa en Elasticsearch (o Infinity) y orquesta embeddings + re-ranking + LLM con una UI de flujos y APIs. Para equipos de sistemas y aplicaciones, esto habilita buscadores corporativos, asistentes de soporte, copilots de producto o text-to-SQL, manteniendo gobernanza, coste y latencia bajo control.

“ChatGPT para tus documentos”, on-prem y sin OpenAI: cómo llevar RAGFlow a producción si administras sistemas y aplicaciones | ragflow chunking
“ChatGPT para tus documentos”, on-prem y sin OpenAI: cómo llevar RAGFlow a producción si administras sistemas y aplicaciones

El objetivo de esta guía es operar RAGFlow: arquitectura, despliegue, hardening, tuning de búsqueda, integración con LLM locales, observabilidad, runbooks y gotchas en real.


1) Arquitectura operativa (qué piezas vas a manejar)

  • RAGFlow Server (API/UI, flow engine y agentes).
  • Motor de documentos: Elasticsearch por defecto (texto + vectores), Infinity como alternativa.
  • Almacenamiento de objetos (MinIO opcional en stack de desarrollo).
  • Redis/MySQL (servicios base según compose).
  • Embeddings: en la imagen full vienen embebidos; en slim dependes de un servicio externo/local.
  • LLM: configurable (API OpenAI-compatible). Puedes apuntar a Ollama/LM-Studio/vLLM en tu red.

CPU/RAM: 4 vCPU/16 GB es el mínimo útil; para ingestas grandes y OCR/DeepDoc considera 8–16 vCPU y 32 GB.
ARM64: no hay imágenes oficiales —toca build propia.


2) Despliegue reproducible (con guardrails)

Requisitos previos

# kernel para ES/Infinity
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# Docker/Compose ≥ 24 / 2.26
Lenguaje del código: PHP (php)

Arranque (CPU)

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
# Edición slim (≈2 GB, sin embeddings)
docker compose -f docker-compose.yml up -d
# GPU (si tienes CUDA): docker compose -f docker-compose-gpu.yml up -d
docker logs -f ragflow-server
Lenguaje del código: PHP (php)

Navega a http://IP (puerto 80 por defecto) y crea el primer usuario.

Selecciona LLM y credenciales

Edita service_conf.yaml.templateuser_default_llm y API_KEY.

  • LLM local (Ollama con puente OpenAI-compatible, LM-Studio Server o vLLM): BASE_URL: "http://ollama:11434/v1" API_KEY: "local-key" MODEL: "qwen2.5-7b-instruct" # o el que sirvas
  • Embeddings: si usas la imagen full (infiniflow/ragflow:v0.21.0), ya vienen dentro; en slim configura tu endpoint de embeddings o cambia de imagen.

TLS: en producción sitúa RAGFlow detrás de nginx/Traefik con Let’s Encrypt y fuerza HTTPS.


3) Gobierno y seguridad (hardening rápido)

  • Superficie expuesta: solo 80/443 (o el puerto tras reverse). Redis/MySQL/ES/Infinity en red interna de Docker.
  • Autenticación: activa políticas de contraseña, bloquea registro abierto y aplica 2FA si lo pones en el reverse.
  • Aislamiento: usa una VM dedicada o namespace con recursos limitados (deploy.resources en Compose).
  • Egress: si el entorno debe ser air-gapped, usa LLM + embeddings locales y desactiva búsqueda web.
  • Backups: programa snapshots de ES/Infinity + copias de MySQL/Redis y service_conf.yaml.template.
  • Logs/retención: reenvía a syslog/ELK/Vector y define políticas RGPD.

4) Pipeline RAG de calidad (evita el “demo-driven development”)

RAGFlow te deja ver y editar el chunking, mezclar BM25 + vectores y aplicar re-ranking. Para que el sistema sea fiable:

  1. Ingesta:
    • Activa DeepDoc para PDFs complejos/escaneados (tablas/imágenes).
    • Define plantillas de chunking (título+sección, tamaño 400–800 tokens, overlap 10–20 %).
    • Dedup por hash/ID; versiona documentos.
  2. Recuperación:
    • Usa multi-recall: vectores (top-k 20–50) + BM25 (top-k 20) → fused re-ranking.
    • Ajusta k según recall/latencia; re-ranking colapsa a 5–8 pasajes.
  3. Generación:
    • Prompt con instrucción de citas y límite de tokens; obliga a responder solo con pasajes citados.
  4. Evaluación:
    • Construye un golden set de 30–50 preguntas reales.
    • Mide Exact Match, Groundedness (¿la cita respalda?), latencia y fall-back (sin respuesta).

Ejemplo de prompt guardrail (esquema):

Responde a la pregunta SOLO con información de los pasajes recuperados.
Cita con [n] cada afirmación. Si falta contexto, respondeNo consta en las fuentes”.
Lenguaje del código: CSS (css)

5) Tuning de búsqueda e indexación

Elasticsearch

  • Heap: 50 % de RAM del contenedor (máx. 31 GB).
  • Sharding: 1–3 primary según volumen; 0–1 réplica en single-node.
  • KNN: habilita dense_vector o HNSW (si tu build lo soporta).
  • BM25: usa analizadores por idioma; activa synonyms si procede.

Infinity

  • Cambia DOC_ENGINE=infinity en docker/.env y re-ingesta (el down -v borra datos).
  • No oficial en arm64 Linux.

Re-ranking

  • Actívalo: suele dar +10–20 % de precisión con un overhead aceptable.

6) Integración con tus aplicaciones

  • APIs: RAGFlow expone endpoints REST para colecciones, ingesta, chat y deep-search. Intercala una API propia para auditoría, authz por tenant y rate-limit.
  • Text-to-SQL: conecta tu warehouse (solo lectura) para consultas naturales sobre tablas documentadas.
  • Eventos: registra queries/respuestas/citas (útiles para playback y re-train puntual).
  • Multi-tenant: separa por colecciones y namespaces; si necesitas aislamiento duro, otra instancia de RAGFlow/ES.

7) LLM local sin OpenAI

Opciones comunes:

  • Ollama + bridge OpenAI (http://ollama:11434/v1) → modelos qwen2.5-7b/14b, llama-3.1-8b, mistral-7b.
  • LM Studio Server o vLLM sirviendo un modelo instruct.
  • text-generation-webui con compatibilidad OpenAI.

Apunta BASE_URL y API_KEY en service_conf.yaml.template. La edición full ya trae embeddings → todo el pipeline queda local.

Rendimiento: si hay GPU, usa el compose-gpu para DeepDoc/OCR y embeddings; reduce latencia 2–5× en cargas medianas.


8) Observabilidad, SLAs y runbooks

  • Métricas: Prometheus + node_exporter; latencia de /api/chat, colas de ingesta, tiempo de OCR, tamaño/estado de índices, heap ES.
  • Alertas: ES yellow/red, vm.max_map_count incorrecto, errores de LLM, cert LE a 15 días de caducidad.
  • Backups:
    • ES/Infinity: snapshot diario (S3 o FS externo) + retención 7/30/90.
    • DB/Redis/config: dump diario + cifrado en repositorio fuera de banda.
  • Actualizaciones: cambia tag (v0.21.0 → v0.21.1), docker compose pull && up -d, valida con golden set.
  • DR: VM limpia → restaura snapshots → reindexación incremental si es necesario. RTO objetivo <60 min (panel/API).

9) Gotchas frecuentes (y cómo salir)

  • “Network error” al iniciar → espera a que ragflow-server imprima el banner; la primera inicialización puede tardar.
  • Fallo en OCR/DeepDoc → RAM/GPU insuficientes; usa compose-gpu o reduce lotes de ingesta.
  • ES muere → aumenta heap y comprueba vm.max_map_count; vigila disco (≥20 % libre).
  • ARM64 → construye imagen propia; re-compila dependencias (no hay image oficial).
  • LLM no responde → prueba curl $BASE_URL/v1/models -H "Authorization: Bearer $API_KEY"; revisa CORS y red.
  • Latencia alta → baja top-k, activa re-ranking, cachea respuestas y usa embeddings más pequeños.

10) Checklist para pasar a producción

  • TLS obligatorio y reverse proxy con HSTS.
  • LLM/embeddings locales o proveedores con DPA y scopes limitados.
  • Backups probados y plan de restore documentado.
  • Observabilidad (métricas/logs) y alertas definidas.
  • Golden set y thresholds de calidad pactados con negocio.
  • Política de retención y marcado de datos (confidenciales, PII).
  • RBAC por colección/tenant y rate-limit per-token/per-IP.
  • Plan de actualización (stagging → prod) y ventana de mantenimiento.

11) ¿Por qué RAGFlow frente a “montarlo a mano”?

  • Menos pegamento: tienes flow UI, plantillas de chunking, DeepDoc y agentes listos; no hay que ensamblar Haystack/LangChain + retrievers + OCR + UI desde cero.
  • Operable: compose único; tuning claro de ES e inference.
  • Citas trazables: reduce la fricción con compliance y audit.
  • Local-first: puedes ir air-gapped sin perder funcionalidades clave.

12) Casos reales de admins en 1–2 días

  • NOC/Soporte: ingesta de runbooks, KB y post-mortems; agente “Deep Search” con citas y snippets operativos.
  • App Owners: text-to-SQL sobre warehouse de producto; auditoría de consultas y lineage de tablas.
  • Legal/Compliance: análisis de contratos (OCR) con redlining asistido y extracción de cláusulas.
“ChatGPT para tus documentos”, on-prem y sin OpenAI: cómo llevar RAGFlow a producción si administras sistemas y aplicaciones | ragflow architecture
“ChatGPT para tus documentos”, on-prem y sin OpenAI: cómo llevar RAGFlow a producción si administras sistemas y aplicaciones

Conclusión

Para administradores de sistemas y aplicaciones, RAGFlow ofrece lo que necesitábamos: un RAG/Agente robusto, local-first, que se despliega y opera como cualquier servicio serio (TLS, backups, métricas), con citas verificables y multimodalidad de verdad. No sustituye a tu CMDB ni a tu SIEM, pero se convierte en la capa de contexto que faltaba para consultar conocimiento corporativo sin salir de tu perímetro y sin costes opacos por token.

Si ya tienes Docker y un dominio, esta tarde puedes tener “tu ChatGPT para documentos” corriendo en tu red. El resto —tuning, gobierno y SLOs— es terreno conocido para un buen admin.

vía: Noticias inteligencia artificial

Suscríbete al boletín SysAdmin

Este es tu recurso para las últimas noticias y consejos sobre administración de sistemas, Linux, Windows, cloud computing, seguridad de la nube, etc. Lo enviamos 2 días a la semana.

¡Apúntate a nuestro newsletter!


– patrocinadores –

Noticias destacadas

– patrocinadores –

¡SUSCRÍBETE AL BOLETÍN
DE LOS SYSADMINS!

Scroll al inicio
×