Construir un chatbot RAG para tu sitio web con Supabase

Avanzado

Este es unSupport Chatbot, AI RAGflujo de automatización del dominio deautomatización que contiene 18 nodos.Utiliza principalmente nodos como FormTrigger, HtmlExtract, HttpRequest, ConvertToFile, Agent. Construir un chatbot de preguntas y respuestas para sitios web usando RAG, GPT-4o-mini de OpenAI y base de datos vectorial Supabase

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Clave de API de OpenAI
  • Información de conexión de la base de datos PostgreSQL
  • URL y Clave de API de Supabase
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": "klsAKNm0Q07J8RXY",
  "meta": {
    "instanceId": "fcb622cbd5234c565b9b78babeaf0ea2455df9d2aad0d1adff7c1ef99583e685",
    "templateCredsSetupCompleted": true
  },
  "name": "Build RAG Chatbot for Your Website Using Supabase",
  "tags": [],
  "nodes": [
    {
      "id": "c2c34da8-27e8-4881-a3fd-3b5f6987e0bf",
      "name": "Cuando se recibe un mensaje de chat",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        500,
        -580
      ],
      "webhookId": "dec328cc-f47e-4727-b1c5-7370be86a958",
      "parameters": {
        "mode": "webhook",
        "public": true,
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "31f5d600-1694-4d50-a581-0880f65a7755",
      "name": "Extraer HTML",
      "type": "n8n-nodes-base.htmlExtract",
      "position": [
        -460,
        -540
      ],
      "parameters": {
        "options": {},
        "extractionValues": {
          "values": [
            {
              "key": "title",
              "cssSelector": "title, h1"
            },
            {
              "key": "content",
              "cssSelector": "p, article, .content, .post-content, main"
            },
            {
              "key": "meta_description",
              "attribute": "content",
              "cssSelector": "meta[name='description']",
              "returnValue": "attribute"
            },
            {
              "key": "links",
              "attribute": "href",
              "cssSelector": "a[href]",
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d48d0d67-cfb6-4058-96e2-4198b40650bc",
      "name": "Cargador de Datos Predeterminado",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        20,
        -360
      ],
      "parameters": {
        "loader": "jsonLoader",
        "options": {
          "metadata": {
            "metadataValues": [
              {
                "name": "website_url",
                "value": "={{ $('Enter Website Url').item.json['Website Url'] }}"
              }
            ]
          }
        },
        "dataType": "binary"
      },
      "typeVersion": 1
    },
    {
      "id": "32b79786-e8d1-4083-80e9-4d2eada2c46b",
      "name": "Separador de Texto Recursivo por Caracteres",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        120,
        -160
      ],
      "parameters": {
        "options": {},
        "chunkSize": 3000,
        "chunkOverlap": 500
      },
      "typeVersion": 1
    },
    {
      "id": "b7541584-131f-4868-b8dd-053ab509ab1b",
      "name": "Almacén Vectorial Supabase",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "position": [
        -40,
        -540
      ],
      "parameters": {
        "mode": "insert",
        "options": {},
        "tableName": {
          "__rl": true,
          "mode": "list",
          "value": "documents",
          "cachedResultName": "documents"
        },
        "embeddingBatchSize": 100
      },
      "credentials": {
        "supabaseApi": {
          "id": "E3H0gensGX1OYVwU",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "7b923d0f-c803-4b3c-afd8-ee680793c955",
      "name": "Ingresar URL del Sitio Web",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -820,
        -540
      ],
      "webhookId": "b02a5096-11b0-4677-acfa-fcac5722498c",
      "parameters": {
        "options": {},
        "formTitle": "Form",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Website Url",
              "placeholder": "Enter Website Url"
            }
          ]
        },
        "formDescription": "Enter Website Url"
      },
      "typeVersion": 2.2
    },
    {
      "id": "9e961fc5-b937-4f0e-b9f5-8ada4f3598f5",
      "name": "Nota Adhesiva 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        -680
      ],
      "parameters": {
        "color": 3,
        "width": 520,
        "height": 100,
        "content": "## Generating Embeddings from Website Content"
      },
      "typeVersion": 1
    },
    {
      "id": "7f4feec8-62a8-47a0-a8d6-9bce01261b1a",
      "name": "Nota Adhesiva 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        380,
        -680
      ],
      "parameters": {
        "width": 300,
        "height": 80,
        "content": "## User-Initiated Question"
      },
      "typeVersion": 1
    },
    {
      "id": "1c11199e-d217-4f2d-8afe-913f902ef47c",
      "name": "Nota Adhesiva 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        700,
        -680
      ],
      "parameters": {
        "color": 3,
        "width": 540,
        "height": 80,
        "content": "## Vector-Based Answer Retrieval"
      },
      "typeVersion": 1
    },
    {
      "id": "ddb37d99-4e8d-4eef-83da-6b3088360062",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -840,
        -680
      ],
      "parameters": {
        "width": 640,
        "height": 100,
        "content": "## Website Data Extraction\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "eeffcae9-2e9c-48f2-ad13-2b75b7218fe2",
      "name": "Extracción de Datos del Sitio Web",
      "type": "n8n-nodes-base.httpRequest",
      "maxTries": 3,
      "position": [
        -640,
        -540
      ],
      "parameters": {
        "url": "={{ $json['Website Url'] }}",
        "options": {
          "timeout": 30000,
          "redirect": {
            "redirect": {
              "maxRedirects": 5
            }
          }
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.1
    },
    {
      "id": "df8e6032-41f2-4f95-8906-7150ce565d8a",
      "name": "Convertir a Archivo",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        -320,
        -540
      ],
      "parameters": {
        "options": {},
        "operation": "toJson"
      },
      "typeVersion": 1.1
    },
    {
      "id": "697c29c6-6bcd-4748-a874-3c754f9b034e",
      "name": "Embeddings Cohere",
      "type": "@n8n/n8n-nodes-langchain.embeddingsCohere",
      "position": [
        -100,
        -360
      ],
      "parameters": {},
      "credentials": {
        "cohereApi": {
          "id": "5VhbvbDzLliD5nO9",
          "name": "CohereApi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d8d3a79a-1ac2-42dd-b383-e39bbcbded75",
      "name": "Recuperar Pregunta y Respuesta",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        820,
        -580
      ],
      "parameters": {
        "options": {
          "systemMessage": "=# Overview  \nYou are an AI agent that responds strictly using information from stored document embeddings in a supabase vector store.  \n\n## Context  \n- The agent is designed to provide accurate, document-based answers.  \n- It must avoid using external knowledge or assumptions.  \n\n## Instructions  \n1. Analyze the user's question.  \n2. Retrieve relevant content from the document embeddings using supabase.  \n3. Construct a response only from the matching document chunks.\n## Tools  \n- Vector store containing embedded documents\n- Embeddings Cohere  \n\n## SOP (Standard Operating Procedure)  \n1. Receive user query.  \n2. Search the vector store for relevant document chunks.  \n3. Extract and synthesize an answer using only that content.  \n4. If no matches, issue fallback message.  \n\n## Final Notes  \n- Do not rely on prior training or external facts.  \n- The response must remain strictly grounded in the documents.  "
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "65d51d86-cae3-4cdb-9d95-025962195953",
      "name": "Datos del Almacén Vectorial Supabase",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
      "position": [
        1000,
        -360
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "topK": null,
        "options": {},
        "toolName": "documents_knowledge_base",
        "tableName": {
          "__rl": true,
          "mode": "list",
          "value": "documents",
          "cachedResultName": "documents"
        },
        "toolDescription": "work with documents data in Supabase vector store",
        "includeDocumentMetadata": false
      },
      "credentials": {
        "supabaseApi": {
          "id": "E3H0gensGX1OYVwU",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "6ef28803-e21f-4733-a6a9-d894b97dbb35",
      "name": "Embeddings con Cohere",
      "type": "@n8n/n8n-nodes-langchain.embeddingsCohere",
      "position": [
        1020,
        -140
      ],
      "parameters": {},
      "credentials": {
        "cohereApi": {
          "id": "5VhbvbDzLliD5nO9",
          "name": "CohereApi account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4796d1f3-ab76-4ed4-86b3-96bca2aae4e9",
      "name": "Memoria del Chat",
      "type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
      "position": [
        900,
        -320
      ],
      "parameters": {
        "tableName": "chat_memory",
        "contextWindowLength": 3
      },
      "credentials": {
        "postgres": {
          "id": "lf7D6rk7s95k7I12",
          "name": "Postgres account 2"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2ce21a19-e586-4cc6-88ed-b1957b04a06a",
      "name": "Modelo de Chat OpenAI",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        760,
        -340
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "FWzCPYhm2kVkOjE5",
          "name": "OpenAi account 7"
        }
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1fe65722-2127-4e4c-8af6-d8c967259653",
  "connections": {
    "4796d1f3-ab76-4ed4-86b3-96bca2aae4e9": {
      "ai_memory": [
        [
          {
            "node": "d8d3a79a-1ac2-42dd-b383-e39bbcbded75",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "31f5d600-1694-4d50-a581-0880f65a7755": {
      "main": [
        [
          {
            "node": "df8e6032-41f2-4f95-8906-7150ce565d8a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "df8e6032-41f2-4f95-8906-7150ce565d8a": {
      "main": [
        [
          {
            "node": "b7541584-131f-4868-b8dd-053ab509ab1b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "697c29c6-6bcd-4748-a874-3c754f9b034e": {
      "ai_embedding": [
        [
          {
            "node": "b7541584-131f-4868-b8dd-053ab509ab1b",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "7b923d0f-c803-4b3c-afd8-ee680793c955": {
      "main": [
        [
          {
            "node": "eeffcae9-2e9c-48f2-ad13-2b75b7218fe2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2ce21a19-e586-4cc6-88ed-b1957b04a06a": {
      "ai_languageModel": [
        [
          {
            "node": "d8d3a79a-1ac2-42dd-b383-e39bbcbded75",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "d48d0d67-cfb6-4058-96e2-4198b40650bc": {
      "ai_document": [
        [
          {
            "node": "b7541584-131f-4868-b8dd-053ab509ab1b",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "6ef28803-e21f-4733-a6a9-d894b97dbb35": {
      "ai_embedding": [
        [
          {
            "node": "65d51d86-cae3-4cdb-9d95-025962195953",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "eeffcae9-2e9c-48f2-ad13-2b75b7218fe2": {
      "main": [
        [
          {
            "node": "31f5d600-1694-4d50-a581-0880f65a7755",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c2c34da8-27e8-4881-a3fd-3b5f6987e0bf": {
      "main": [
        [
          {
            "node": "d8d3a79a-1ac2-42dd-b383-e39bbcbded75",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "65d51d86-cae3-4cdb-9d95-025962195953": {
      "ai_tool": [
        [
          {
            "node": "d8d3a79a-1ac2-42dd-b383-e39bbcbded75",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "32b79786-e8d1-4083-80e9-4d2eada2c46b": {
      "ai_textSplitter": [
        [
          {
            "node": "d48d0d67-cfb6-4058-96e2-4198b40650bc",
            "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 - Chatbot de soporte, RAG de IA

¿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 nodos18
Categoría2
Tipos de nodos13
Descripción de la dificultad

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

Autor
InfyOm Technologies

InfyOm Technologies

@infyom

We are an AI Automation Agency focusing on various AI Automation Services like, workflow automation, shopify automation, chatbot developerment, custom ai agent development and more.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34