RAG privado con n8n, Qdrant y Ollama
El stack que más se repite para pymes y solopreneurs es sencillo: documentos privados en Qdrant, modelo local con Ollama y n8n como pegamento para recibir preguntas, consultar contexto y responder con control humano.
Objetivos de aprendizaje
- Diseñar un flujo RAG local sin enviar documentos a APIs externas.
- Separar ingesta, recuperación, generación y envío de respuesta.
- Evitar respuestas sin evidencia y fugas entre usuarios.
En cristiano: RAG privado. Es un sistema que busca fragmentos relevantes en tus documentos antes de responder. La privacidad depende de dónde guardas documentos, embeddings, logs y respuestas.
Mapa del flujo
Terminal
Entrada: Telegram / formulario / chat interno -> n8n valida usuario y pregunta -> n8n crea embedding o llama a un servicio de embeddings -> Qdrant devuelve chunks permitidos -> Ollama genera respuesta con citas -> n8n guarda traza y envía borrador -> humano aprueba si la acción tiene impacto real
Idea clave. Para soporte interno o FAQ, no necesitas un agente “muy autónomo”. Necesitas recuperación fiable, citas, permisos y una respuesta que se pueda auditar.
Docker compose de laboratorio
Este compose es una base local. En producción añade HTTPS, backups, usuarios, secretos fuera del repositorio y límites de red.
Terminal
services:
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333"
volumes:
- qdrant_data:/qdrant/storage
n8n:
image: n8nio/n8n:latest
ports:
- "5678:5678"
environment:
- N8N_ENCRYPTION_KEY=change-me
- GENERIC_TIMEZONE=Europe/Madrid
volumes:
- n8n_data:/home/node/.n8n
volumes:
qdrant_data:
n8n_data: Cuidado. No metas documentos de clientes en un prototipo sin permisos, backups y política de borrado. Un RAG local también puede filtrar datos si Qdrant no filtra por tenant o si n8n guarda trazas completas.
Nodos mínimos en n8n
- Trigger de chat, Telegram o webhook.
- Validación de usuario, tenant y permisos.
- Normalización de pregunta.
- Búsqueda en Qdrant con filtro por tenant.
- Llamada a Ollama con contexto y regla de “no sé”.
- Respuesta con citas y traza guardada.
Terminal
Regla de respuesta: - Responde solo con el contexto recuperado. - Cita documento y sección cuando sea posible. - Si el contexto no basta, di "No tengo evidencia suficiente". - No ejecutes acciones externas sin aprobación humana.
Comprueba que funciona. Crea dos documentos casi iguales de dos clientes distintos y pregunta como cada cliente. Si la respuesta mezcla chunks, el problema no es el modelo: es tu filtro de recuperación.
Guardar y reabrir el proyecto.
El primer RAG útil para una pyme no necesita magia. Necesita permisos antes de buscar, contexto pequeño pero bueno y trazas que permitan explicar por qué respondió eso.