RAG de preguntas y respuestas de documentos basado en Weaviate y OpenAI

Avanzado

Este es unDocument Extraction, Multimodal AIflujo de automatización del dominio deautomatización que contiene 17 nodos.Utiliza principalmente nodos como Set, FormTrigger, ExtractFromFile, ChatTrigger, LmChatOpenAi. Preguntas y respuestas de documentos basadas en RAG: consultar contenido de PDF con Weaviate y OpenAI

Requisitos previos
  • Clave de API de OpenAI
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "hWxVTNvDEcGofp5O",
  "meta": {
    "instanceId": "be3e0177f1eeda5879f300082f54531dfa9819a5d7441e94ea64b32f8b1fd49c",
    "templateCredsSetupCompleted": true
  },
  "name": "rag-with-weaviate",
  "tags": [],
  "nodes": [
    {
      "id": "4cfa559c-9cec-4a74-84d5-9cf4a2d7915a",
      "name": "Almacén de Vectores Weaviate",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreWeaviate",
      "position": [
        432,
        288
      ],
      "parameters": {
        "mode": "insert",
        "options": {
          "textKey": "text"
        },
        "weaviateCollection": {
          "__rl": true,
          "mode": "id",
          "value": "FileUpload"
        }
      },
      "credentials": {
        "weaviateApi": {
          "id": "qiTSL6FfsPCZLyUv",
          "name": "Weaviate Credentials account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c87c8fe2-56bf-405f-a91a-3b1af7cf2e8c",
      "name": "Cargador de Datos Predeterminado",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        512,
        496
      ],
      "parameters": {
        "options": {
          "metadata": {
            "metadataValues": [
              {}
            ]
          }
        },
        "jsonData": "={{ $json.text }}",
        "jsonMode": "expressionData"
      },
      "typeVersion": 1
    },
    {
      "id": "ac0c796a-3b1d-4ba6-83e5-23a673e4628d",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        384,
        496
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "v6dOwJXW6XXHxHQw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d89bd8be-a275-4a57-a1a6-6006302ba3dd",
      "name": "Divisor de Texto Recursivo de Caracteres1",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        544,
        656
      ],
      "parameters": {
        "options": {},
        "chunkSize": 500
      },
      "typeVersion": 1
    },
    {
      "id": "dcabfdff-749b-4442-933d-409b1479d2c8",
      "name": "Extraer desde Archivo",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -48,
        288
      ],
      "parameters": {
        "options": {
          "maxPages": 99
        },
        "operation": "pdf",
        "binaryPropertyName": "PDF_File"
      },
      "typeVersion": 1
    },
    {
      "id": "779add5c-4770-472a-a2e9-934e1e2e4569",
      "name": "Editar Campos",
      "type": "n8n-nodes-base.set",
      "position": [
        128,
        288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d719d94d-6597-402c-8958-dd270de82ce6",
              "name": "text",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "eda536c5-d88f-45e4-9505-d3b1e6c5fa27",
      "name": "Cuando se recibe mensaje de chat",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        992,
        288
      ],
      "webhookId": "683bf7e6-5f6f-43e0-afef-eb854d52ebed",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "94ed5f2b-fb86-42e8-a778-ab51d7a49d42",
      "name": "Almacén de Vectores Weaviate1",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreWeaviate",
      "position": [
        1280,
        624
      ],
      "parameters": {
        "options": {},
        "weaviateCollection": {
          "__rl": true,
          "mode": "list",
          "value": "FileUpload",
          "cachedResultName": "FileUpload"
        }
      },
      "credentials": {
        "weaviateApi": {
          "id": "qiTSL6FfsPCZLyUv",
          "name": "Weaviate Credentials account"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ae3a9b66-a5c8-4108-980c-1c3ace05e528",
      "name": "Cadena de Preguntas y Respuestas",
      "type": "@n8n/n8n-nodes-langchain.chainRetrievalQa",
      "position": [
        1168,
        288
      ],
      "parameters": {
        "text": "=Using only the attached Weaviate vector store collection (and no external knowledge), answer the following query:\n{{ $json.chatInput }}",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 1.6
    },
    {
      "id": "d9110fef-f3ae-4c3a-bfc0-b3bfe0f6fcb0",
      "name": "Recuperador de Almacén de Vectores",
      "type": "@n8n/n8n-nodes-langchain.retrieverVectorStore",
      "position": [
        1280,
        480
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "79aaa15c-f0d6-4c88-bd15-ff7835131b2b",
      "name": "Modelo de Chat OpenAI",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1152,
        480
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "v6dOwJXW6XXHxHQw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9f961ef2-5466-475d-9ccb-1436469dee00",
      "name": "Embeddings OpenAI1",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        1360,
        768
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "v6dOwJXW6XXHxHQw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d46d3a49-ec16-40aa-928e-291fc90b9f2d",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        176
      ],
      "parameters": {
        "color": 5,
        "width": 544,
        "height": 336,
        "content": "## Part 1: Manually upload data \nIn this example, we manually upload a 100+ page article from arXiv called [\"A Survey of Large Language Models\"](https://arxiv.org/pdf/2303.18223).\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_**Note: This is a simple implementation of loading data. You can replace this block with your own (more advanced) data pipeline!**_"
      },
      "typeVersion": 1
    },
    {
      "id": "9b192882-6d54-43c5-9ccb-cca0bcf456f4",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        176
      ],
      "parameters": {
        "color": 6,
        "width": 640,
        "height": 736,
        "content": "## Part 3: Perform RAG over PDF file with Weaviate\nEnter your query by running the Chat Node and get a RAG response grounded in context."
      },
      "typeVersion": 1
    },
    {
      "id": "431f55e3-9599-4de7-a363-2e82e6581101",
      "name": "Nota Adhesiva3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -256,
        -128
      ],
      "parameters": {
        "color": 4,
        "width": 992,
        "height": 288,
        "content": "# RAG over a PDF file with Weaviate\nThis workflow allows you to upload a PDF file and ask questions about it using the Question and Answer Chain and the Weaviate Vector Store nodes. \n\n## Prerequisites\n1.  **An existing Weaviate cluster.** You can view instructions for setting up a **local cluster** with Docker [here](https://weaviate.io/developers/weaviate/installation/docker-compose#starter-docker-compose-file) or a **Weaviate Cloud** cluster [here](https://weaviate.io/developers/wcs/quickstart).\n2.  **API keys** to generate embeddings and power chat models. We use [OpenAI](https://openai.com/), but feel free to switch out the models as you like.\n3.  **Self-hosted n8n instance.** See this [video](https://www.youtube.com/watch?v=kq5bmrjPPAY&t=108s) for how to get set up in just three minutes.\n\n\n💚  Sign up [here](https://console.weaviate.cloud/?utm_source=recipe&utm_campaign=n8n&utm_content=n8n_arxiv_template) for a 14-day free trial of Weaviate Cloud (no credit card required)."
      },
      "typeVersion": 1
    },
    {
      "id": "588d9eee-f769-4c6b-9b16-2b1790118a4d",
      "name": "Subir PDF",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -224,
        288
      ],
      "webhookId": "8499e732-aff6-4e0f-85ac-4c0591012616",
      "parameters": {
        "options": {},
        "formTitle": "Upload your file here",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "PDF File",
              "multipleFiles": false,
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4d4244ef-c4af-4eb1-8389-6bd95cc5613e",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        176
      ],
      "parameters": {
        "color": 3,
        "width": 624,
        "height": 688,
        "content": "## Part 2: Embed and load data into Weaviate collection\nWe generate embeddings for the full-text of the article and store them in Weaviate.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_**Note: We don't add any metadata to Weaviate in this example. To add metadata, click on the Default Data Loader node → `Add Option` → `Metadata`.**_"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "61bb6430-21b1-4443-8924-34a83eab6965",
  "connections": {
    "588d9eee-f769-4c6b-9b16-2b1790118a4d": {
      "main": [
        [
          {
            "node": "dcabfdff-749b-4442-933d-409b1479d2c8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "779add5c-4770-472a-a2e9-934e1e2e4569": {
      "main": [
        [
          {
            "node": "4cfa559c-9cec-4a74-84d5-9cf4a2d7915a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ac0c796a-3b1d-4ba6-83e5-23a673e4628d": {
      "ai_embedding": [
        [
          {
            "node": "4cfa559c-9cec-4a74-84d5-9cf4a2d7915a",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "dcabfdff-749b-4442-933d-409b1479d2c8": {
      "main": [
        [
          {
            "node": "779add5c-4770-472a-a2e9-934e1e2e4569",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "79aaa15c-f0d6-4c88-bd15-ff7835131b2b": {
      "ai_languageModel": [
        [
          {
            "node": "ae3a9b66-a5c8-4108-980c-1c3ace05e528",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "9f961ef2-5466-475d-9ccb-1436469dee00": {
      "ai_embedding": [
        [
          {
            "node": "94ed5f2b-fb86-42e8-a778-ab51d7a49d42",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "c87c8fe2-56bf-405f-a91a-3b1af7cf2e8c": {
      "ai_document": [
        [
          {
            "node": "4cfa559c-9cec-4a74-84d5-9cf4a2d7915a",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "4cfa559c-9cec-4a74-84d5-9cf4a2d7915a": {
      "main": [
        []
      ]
    },
    "d9110fef-f3ae-4c3a-bfc0-b3bfe0f6fcb0": {
      "ai_retriever": [
        [
          {
            "node": "ae3a9b66-a5c8-4108-980c-1c3ace05e528",
            "type": "ai_retriever",
            "index": 0
          }
        ]
      ]
    },
    "94ed5f2b-fb86-42e8-a778-ab51d7a49d42": {
      "ai_vectorStore": [
        [
          {
            "node": "d9110fef-f3ae-4c3a-bfc0-b3bfe0f6fcb0",
            "type": "ai_vectorStore",
            "index": 0
          }
        ]
      ]
    },
    "eda536c5-d88f-45e4-9505-d3b1e6c5fa27": {
      "main": [
        [
          {
            "node": "ae3a9b66-a5c8-4108-980c-1c3ace05e528",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d89bd8be-a275-4a57-a1a6-6006302ba3dd": {
      "ai_textSplitter": [
        [
          {
            "node": "c87c8fe2-56bf-405f-a91a-3b1af7cf2e8c",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Extracción de documentos, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos17
Categoría2
Tipos de nodos12
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Mary Newhauser

Mary Newhauser

@maryn

Machine Learning Engineer at Weaviate.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34