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

  1. Trigger de chat, Telegram o webhook.
  2. Validación de usuario, tenant y permisos.
  3. Normalización de pregunta.
  4. Búsqueda en Qdrant con filtro por tenant.
  5. Llamada a Ollama con contexto y regla de “no sé”.
  6. 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.