Construir un chatbot RAG para tu sitio web con Supabase
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
- •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
Nodos utilizados (18)
Categoría
{
"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
}
]
]
}
}
}¿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.
Flujos de trabajo relacionados recomendados
InfyOm Technologies
@infyomWe are an AI Automation Agency focusing on various AI Automation Services like, workflow automation, shopify automation, chatbot developerment, custom ai agent development and more.
Compartir este flujo de trabajo