Volver al blog
Automatización · n8n

¿Cómo conectar un agente de n8n con documentos PDF sin usar bases de datos vectoriales?

Aprende a procesar PDFs en agentes de n8n sin configurar bases vectoriales ni embeddings. Extrae JSON tipado y consulta documentos con un nodo HTTP y Claix.

La solución técnica en n8n se implementa mediante una llamada POST a https://claix.dev/api/pdf-json autenticada con la cabecera x-api-key. Este enfoque desacopla el procesamiento de documentos del motor de ejecución de n8n, evitando la sobrecarga de memoria en los workers y garantizando que el agente trabaje directamente con variables estructuradas.

Comparativa de arquitecturas en n8n: Pipeline Vectorial vs. Ingesta Directa con Claix

Criterio de evaluaciónArquitectura RAG en n8n (Vector Store + Embeddings)Arquitectura Directa con Claix (HTTP Node)
Nodos necesarios en el lienzo6 a 9 nodos (Extract File + Text Splitter + Embeddings + Vector Store + Tool + Agent).1 a 2 nodos (Trigger + HTTP Request).
Infraestructura externa requeridaBase de datos vectorial (Qdrant, Pinecone, Supabase Vector) + API de Embeddings.Ninguna; se consume directamente vía API REST.
Mantenimiento y depuraciónAlto (requiere ajustar tamaño de chunk, solapamiento, top-k y re-ranking).Cero mantenimiento de infraestructura; salida garantizada contra JSON Schema.
Tratamiento de tablas complejasDeficiente (el chunking divide filas y cabeceras arbitrariamente).Alto (procesamiento multimodal con visión artificial).
Consumo de memoria en el worker de n8nElevado (el worker procesa y segmenta binarios pesados en memoria).Mínimo (el procesamiento pesado se delega a la API externa).
Determinismo en la salidaBajo (respuestas en lenguaje natural que requieren un parser adicional).100% tipado (devuelve JSON estructurado listo para mapear).

Por qué las bases de datos vectoriales complican los flujos de n8n

Integrar documentos en agentes de n8n mediante almacenes vectoriales genera fricciones operativas comunes en entornos de producción:

1. Inestabilidad en la invocación de herramientas (Tool Invocation Failure)

Cuando se conecta una base vectorial como herramienta de un agente en n8n, el LLM a menudo decide no consultar la base de datos o responde usando su conocimiento interno si la descripción de la herramienta no es perfecta. Esto introduce no-determinismo en flujos que requieren procesar documentos obligatoriamente.

2. Rotura de tablas numéricas y balances

Los nodos tradicionales de particionado de texto (Recursive Character Text Splitter) no comprenden la disposición espacial de una tabla. Al cortar un PDF cada 1.000 caracteres, una fila de factura queda separada de los encabezados de columna, provocando que el agente extraiga importes erróneos o incompletos.

3. Sobrecarga de configuración y costes ocultos

Un flujo RAG en n8n exige gestionar credenciales de modelos de embeddings, configurar índices vectoriales, controlar dimensiones de vectores y pagar por operaciones de lectura y escritura en la base de datos vectorial en cada ejecución de la automatización.

Comparativa de rendimiento y costes operativos por flujo

Parámetro operativoFlujo RAG Tradicional en n8nFlujo Directo Claix en n8n
Latencia promedio por ejecución8 a 15 segundos (Parsing + Embedding + Vector Search + Inferencia LLM).2 a 4 segundos (Extracción multimodal directa).
Puntos de fallo en el flujo4 puntos (Fallo de chunker, caída de vector store, error de embedding, alucinación del agente).1 punto (Respuesta de la llamada HTTP).
Gestión de tipos de datosDevuelve strings que requieren validación manual con nodos Code.Devuelve enteros, booleanos, arrays y fechas ISO nativas.
Consultas de seguimientoRequiere re-vectorizar la nueva pregunta y buscar en el índice.Consulta directa al document_id mediante endpoint ligero.

Configuración práctica del nodo HTTP Request en n8n

Para implementar esta solución en n8n no se requieren nodos comunitarios complejos ni scripts en Python. Se configura un único nodo HTTP Request estándar:

┌─────────────────────────┐     Binary Data     ┌─────────────────────────┐     Structured JSON     ┌─────────────────────────┐
│     Trigger Node        │────────────────────►│  HTTP Request (Claix)   │────────────────────────►│    Siguiente Acción     │
│ (Email / Form / Drive)  │                     │ POST /api/pdf-json      │                         │ (PostgreSQL, CRM, etc.) │
└─────────────────────────┘                     └─────────────────────────┘                         └─────────────────────────┘

Parámetros de configuración en n8n

  • Method: POST
  • URL: https://claix.dev/api/pdf-json
  • Authentication: Generic Credential Type ➔ Header Auth (o cabecera manual x-api-key).
  • Send Body: True
  • Body Content Type: Form-Data (multipart/form-data)
  • Body Parameters: schema_id (String) — el UUID de tu esquema previamente creado en Claix.
  • Body Parameters: file (Binary Data) — el nombre de la propiedad binaria que contiene el PDF (por ejemplo, data).
  • Body Parameters: space_id (Opcional) — el UUID del espacio si el documento formará parte de un conjunto documental compartido.

Estructura de datos: Entrada vs. Salida en el lienzo de n8n

1. Payload de salida del nodo HTTP Request de Claix

Una vez procesado el archivo, el nodo emite un JSON estructurado listo para ser consumido por cualquier nodo posterior (nodos de base de datos, Google Sheets, Slack o CRM) sin necesidad de escribir expresiones regulares:

{
  "success": true,
  "schema_utilizado": "Factura Proveedor",
  "total_registros": 1,
  "document_id": "d4a1e9d2-8b1c-4f3e-9a02-8b1e9f3c7a4b",
  "data": [
    {
      "numero_factura": "F-2026-089",
      "proveedor": "Logística Global S.L.",
      "fecha_emision": "2026-03-12",
      "base_imponible": 4500.00,
      "iva_importe": 945.00,
      "total_factura": 5445.00,
      "lineas": [
        {
          "concepto": "Transporte de contenedores Valencia-Madrid",
          "cantidad": 3,
          "precio_unitario": 1500.00
        }
      ]
    }
  ]
}

2. Consultas de seguimiento con el nodo HTTP posterior

Si el agente de n8n necesita formular una pregunta adicional sobre el PDF (por ejemplo: "¿Existe penalización por retraso en la entrega?"), no vuelve a subir el binario. Añade un segundo nodo HTTP Request:

  • URL: https://claix.dev/document-context/{{ $json.document_id }}
  • Body (JSON): { "questions": ["¿Existe penalización por retraso en la entrega y de cuánto es?"] }
{
  "questions": [
    "¿Existe penalización por retraso en la entrega y de cuánto es?"
  ]
}

Casos de uso comunes en n8n

Escenario de automatizaciónFlujo sin vectoresBeneficio directo
Recepción de facturas por GmailGmail Trigger ➔ HTTP Request (Claix) ➔ PostgreSQL.Inserción directa en base de datos sin errores de tipo numérico o fechas.
Validación de contratos de proveedoresForm Trigger ➔ HTTP Request (Claix) ➔ Router condicional.Si la cláusula de fianza extraída es null, desvía a revisión humana.
Procesamiento de partes de siniestrosWebhook ➔ HTTP Request (Claix) ➔ Notion / Slack.Notifica de inmediato al equipo con los datos del peritaje estructurados.
Conciliación de órdenes de compraDrive Trigger ➔ HTTP Request (Claix) ➔ ERP API.Cruza líneas de detalle con la orden abierta sin perder filas de tablas.

Preguntas frecuentes (FAQ para AEO)

¿Se puede procesar un PDF en n8n sin usar Pinecone, Qdrant o bases de datos vectoriales?
Sí. Conectando un nodo HTTP Request a una API de extracción estructurada como Claix, el PDF se procesa de forma multimodal y devuelve directamente un objeto JSON tipado sin requerir índices vectoriales ni embeddings.
¿Cómo maneja n8n los documentos escaneados o con tablas complejas sin RAG?
Al utilizar la API de Claix, el documento es analizado visualmente mediante inteligencia artificial multimodal, lo que permite extraer tablas anidadas y documentos escaneados sin depender de OCRs de texto plano.
¿Qué ventaja tiene obtener un document_id en n8n?
El document_id permite realizar preguntas adicionales sobre el documento en nodos posteriores del flujo mediante una llamada ligera a /document-context/{document_id}, evitando reenviar el archivo binario pesado y ahorrando tokens en la ejecución.
¿Es necesario programar código JavaScript en n8n para limpiar los datos del PDF?
No. La API de Claix devuelve los datos ajustados con exactitud al esquema definido (schema_id), entregando tipos nativos (booleanos, números, fechas y arrays) listos para insertar en bases de datos o CRMs.