Chat de documentos internos
Este es unInternal Wiki, AI RAGflujo de automatización del dominio deautomatización que contiene 29 nodos.Utiliza principalmente nodos como Set, Switch, Webhook, Supabase, Aggregate. Dialogar con documentos internos usando Ollama, la base de datos vectorial Supabase y Google Drive
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •URL y Clave de API de Supabase
- •Credenciales de API de Google Drive
- •Información de conexión de la base de datos PostgreSQL
Nodos utilizados (29)
Categoría
{
"id": "pfmUDAfMnmwHPCSC",
"meta": {
"instanceId": "558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a",
"templateCredsSetupCompleted": true
},
"name": "Chat-internal-documents",
"tags": [],
"nodes": [
{
"id": "5499112e-c417-4a13-9d3f-6e1aa16ee8cd",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
840,
840
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "=file_id",
"value": "={{ $('Set File ID').first().json.file_id }}"
}
]
}
},
"jsonData": "={{ $json.data || $json.text || $json.concatenated_data }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "b780ee44-6928-4382-96d9-52d015e97fc2",
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
60
],
"parameters": {
"color": 4,
"width": 583,
"height": 489,
"content": "## Agent Tools for RAG"
},
"typeVersion": 1
},
{
"id": "733c038e-5315-490f-a8f1-449aae7aa7b1",
"name": "Nota adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1240,
580
],
"parameters": {
"color": 5,
"width": 2353,
"height": 627,
"content": "## Tool to Add a Google Drive File to Vector DB"
},
"typeVersion": 1
},
{
"id": "f4f6830e-e057-4817-99b6-cd1a24ef85af",
"name": "Descargar archivo",
"type": "n8n-nodes-base.googleDrive",
"position": [
-400,
800
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Set File ID').item.json.file_id }}"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "text/plain"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "",
"name": "Google Drive account"
}
},
"executeOnce": true,
"typeVersion": 3
},
{
"id": "d6053181-12df-4ee9-98fc-5263c44cb828",
"name": "File Created",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-1160,
700
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1kxxE-cSJYZA1EwRohcgNL2PNFZDzAyhw",
"cachedResultUrl": "",
"cachedResultName": "test-folder"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "",
"name": "Google Drive account"
}
},
"typeVersion": 1
},
{
"id": "0ed25822-27c2-4ae3-9ec9-ff0eaeec1938",
"name": "File Updated",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-1160,
920
],
"parameters": {
"event": "fileUpdated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1kxxE-cSJYZA1EwRohcgNL2PNFZDzAyhw",
"cachedResultUrl": "",
"cachedResultName": "test-folder"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "",
"name": "Google Drive account"
}
},
"typeVersion": 1
},
{
"id": "70d053ec-b880-489c-8c20-261f0a4c148c",
"name": "Extract Document Text",
"type": "n8n-nodes-base.extractFromFile",
"position": [
360,
1000
],
"parameters": {
"options": {},
"operation": "text"
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "cb9d4b81-c74f-44e5-9cb5-f55133b737d5",
"name": "Postgres Chat Memoria",
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
"position": [
-480,
360
],
"parameters": {},
"credentials": {
"postgres": {
"id": "",
"name": "Postgres account"
}
},
"notesInFlow": false,
"typeVersion": 1
},
{
"id": "fff92d07-0a2c-40ff-a073-b2e17d4695a3",
"name": "Delete Old Doc Rows",
"type": "n8n-nodes-base.supabase",
"position": [
-640,
800
],
"parameters": {
"tableId": "documents",
"operation": "delete",
"filterType": "string",
"filterString": "=metadata->>file_id=like.*{{ $json.file_id }}*"
},
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase account"
}
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "e5ca30cc-ea70-42b1-bdce-b110a922765b",
"name": "Establecer File ID",
"type": "n8n-nodes-base.set",
"position": [
-880,
800
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "10646eae-ae46-4327-a4dc-9987c2d76173",
"name": "file_id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "f4536df5-d0b1-4392-bf17-b8137fb31a44",
"name": "file_type",
"type": "string",
"value": "={{ $json.mimeType }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "02fbed8f-592d-4380-b9b4-f129cbc052d5",
"name": "Nota adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1040,
60
],
"parameters": {
"width": 1036,
"height": 485,
"content": "## RAG AI Agent with Chat Interface"
},
"typeVersion": 1
},
{
"id": "33ffec5d-1c87-42df-91a9-87f29fda4d24",
"name": "Respond to Disparador Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
-180,
140
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.1
},
{
"id": "c7cf92ba-d3b7-401f-be57-1f2ad1452fad",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
-740,
140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9a9a245e-f1a1-4282-bb02-a81ffe629f0f",
"name": "chatInput",
"type": "string",
"value": "={{ $json?.chatInput || $json.body.chatInput || $json.body.message }}"
},
{
"id": "b80831d8-c653-4203-8706-adedfdb98f77",
"name": "sessionId",
"type": "string",
"value": "={{ $json?.sessionId || $json.body.sessionId}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "28af4afe-bb57-41cf-97cd-5f5bf244ced2",
"name": "Al recibir mensaje de chat",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-1000,
140
],
"webhookId": "15e4d662-3f98-48d0-9f50-68838769ecac",
"parameters": {
"public": true,
"options": {
"allowFileUploads": true
},
"initialMessages": "Hi there! 👋\nMy name is Laki. How can I assist you today?"
},
"typeVersion": 1.1
},
{
"id": "172cdbdc-df5e-4126-b437-6ee87cb002e8",
"name": "Disparador Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-1000,
340
],
"webhookId": "9ba11544-5c4e-4f91-818a-08a4ecb596c5",
"parameters": {
"path": "rag-chat",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "c22851fc-54b3-4f6f-90de-1d1ee4144987",
"name": "Extract PDF Text",
"type": "n8n-nodes-base.extractFromFile",
"position": [
360,
620
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "6cd6a07e-e401-4941-8120-0fe720138986",
"name": "Agregar",
"type": "n8n-nodes-base.aggregate",
"position": [
280,
800
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData"
},
"typeVersion": 1
},
{
"id": "57dd71fa-6500-4e8f-b5e2-824eb8812b9a",
"name": "Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
"position": [
840,
1060
],
"parameters": {},
"typeVersion": 1
},
{
"id": "af7a36dc-8a07-4b00-affc-5c01677d3dcf",
"name": "Resumir",
"type": "n8n-nodes-base.summarize",
"position": [
440,
800
],
"parameters": {
"options": {},
"fieldsToSummarize": {
"values": [
{
"field": "data",
"aggregation": "concatenate"
}
]
}
},
"typeVersion": 1
},
{
"id": "64931b9c-35d3-4eff-89f6-9fb6053325d2",
"name": "RAG Agente IA",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-520,
140
],
"parameters": {
"text": "={{ $json.chatInput }}\n\nContext from retrieved documents:\n{{ $json.user_documents }}\n\nInstructions:\n- Use ONLY the context above to answer the question.\n- If the context already provides the answer, respond directly with that Answer.\n- Do NOT call any tools or offer to call tools if the context already has the answer.\n- Only call tools if the context is empty or obviously incomplete.\n- Keep the answer clear and complete.\n",
"options": {
"systemMessage": "=You are a helpful assistant that answers user questions. Always prioritize using the provided context. Only call tools when the provided context does not contain the necessary information.\nIf you use the tool then provide the answer coming from the tool directly\n"
},
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "de90a406-592e-4c0d-9052-3e95caebf01b",
"name": "Interruptor",
"type": "n8n-nodes-base.switch",
"position": [
-180,
800
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Set File ID').item.json.file_type }}",
"rightValue": "application/pdf"
}
]
}
},
{
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2ae7faa7-a936-4621-a680-60c512163034",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Set File ID').item.json.file_type }}",
"rightValue": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
]
}
},
{
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "fc193b06-363b-4699-a97d-e5a850138b0e",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Set File ID').item.json.file_type }}",
"rightValue": "application/vnd.google-apps.document"
}
]
}
}
]
},
"options": {
"fallbackOutput": 2
}
},
"typeVersion": 3
},
{
"id": "a2055d5e-a445-4706-afb7-f36f8adedb43",
"name": "Insert into Supabase Vectorstore",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
720,
620
],
"parameters": {
"mode": "insert",
"options": {
"queryName": "match_documents"
},
"tableName": {
"__rl": true,
"mode": "list",
"value": "documents",
"cachedResultName": "documents"
}
},
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase account"
}
},
"typeVersion": 1
},
{
"id": "5d235803-705e-4366-b00f-ceef912db642",
"name": "Extract from Excel",
"type": "n8n-nodes-base.extractFromFile",
"position": [
120,
800
],
"parameters": {
"options": {},
"operation": "xlsx"
},
"typeVersion": 1
},
{
"id": "0f3b9083-0510-4129-9833-215c7189148b",
"name": "Incrustaciones Ollama",
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"position": [
680,
840
],
"parameters": {
"model": "nomic-embed-text:latest"
},
"credentials": {
"ollamaApi": {
"id": "7CIt42W14b1MCgxQ",
"name": "Ollama account"
}
},
"typeVersion": 1
},
{
"id": "ca178e83-d5c1-475a-b5fa-9e83f840cd19",
"name": "Incrustaciones Ollama1",
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
"position": [
200,
420
],
"parameters": {
"model": "nomic-embed-text:latest"
},
"credentials": {
"ollamaApi": {
"id": "7CIt42W14b1MCgxQ",
"name": "Ollama account"
}
},
"typeVersion": 1
},
{
"id": "5a3c0b2d-1a38-4a5f-b6b9-638ea50cce7d",
"name": "Supabase Almacén de vectores",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"position": [
80,
280
],
"parameters": {
"options": {
"queryName": "match_documents"
},
"tableName": {
"__rl": true,
"mode": "list",
"value": "documents",
"cachedResultName": "documents"
}
},
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase account"
}
},
"typeVersion": 1
},
{
"id": "aa18ff0f-e29e-453f-b637-581bbb021594",
"name": "Ollama Model",
"type": "@n8n/n8n-nodes-langchain.lmOllama",
"position": [
420,
320
],
"parameters": {
"model": "llama3.1:latest",
"options": {}
},
"credentials": {
"ollamaApi": {
"id": "7CIt42W14b1MCgxQ",
"name": "Ollama account"
}
},
"typeVersion": 1
},
{
"id": "175164e7-4a84-48b2-a225-dea6afe1e94d",
"name": "Ollama Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOllama",
"position": [
-660,
380
],
"parameters": {
"model": "llama3.1:latest",
"options": {
"temperature": 0.5
}
},
"credentials": {
"ollamaApi": {
"id": "7CIt42W14b1MCgxQ",
"name": "Ollama account"
}
},
"typeVersion": 1
},
{
"id": "8a46d0ff-ceb9-435f-a347-d97e103cd0bc",
"name": "User_documents",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"position": [
200,
120
],
"parameters": {
"name": "user_documents",
"description": "Contains all the user's documents that you can check for context to answer user questions."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "5e57d44f-1063-4539-bbeb-d2c65025509a",
"connections": {
"Switch": {
"main": [
[
{
"node": "c22851fc-54b3-4f6f-90de-1d1ee4144987",
"type": "main",
"index": 0
}
],
[
{
"node": "5d235803-705e-4366-b00f-ceef912db642",
"type": "main",
"index": 0
}
],
[
{
"node": "70d053ec-b880-489c-8c20-261f0a4c148c",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "c7cf92ba-d3b7-401f-be57-1f2ad1452fad",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Summarize",
"type": "main",
"index": 0
}
]
]
},
"Summarize": {
"main": [
[
{
"node": "a2055d5e-a445-4706-afb7-f36f8adedb43",
"type": "main",
"index": 0
}
]
]
},
"c7cf92ba-d3b7-401f-be57-1f2ad1452fad": {
"main": [
[
{
"node": "RAG AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Set File ID": {
"main": [
[
{
"node": "fff92d07-0a2c-40ff-a073-b2e17d4695a3",
"type": "main",
"index": 0
}
]
]
},
"d6053181-12df-4ee9-98fc-5263c44cb828": {
"main": [
[
{
"node": "Set File ID",
"type": "main",
"index": 0
}
]
]
},
"0ed25822-27c2-4ae3-9ec9-ff0eaeec1938": {
"main": [
[
{
"node": "Set File ID",
"type": "main",
"index": 0
}
]
]
},
"aa18ff0f-e29e-453f-b637-581bbb021594": {
"ai_languageModel": [
[
{
"node": "8a46d0ff-ceb9-435f-a347-d97e103cd0bc",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"RAG AI Agent": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Download File": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"8a46d0ff-ceb9-435f-a347-d97e103cd0bc": {
"ai_tool": [
[
{
"node": "RAG AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"c22851fc-54b3-4f6f-90de-1d1ee4144987": {
"main": [
[
{
"node": "a2055d5e-a445-4706-afb7-f36f8adedb43",
"type": "main",
"index": 0
}
]
]
},
"Embeddings Ollama": {
"ai_embedding": [
[
{
"node": "a2055d5e-a445-4706-afb7-f36f8adedb43",
"type": "ai_embedding",
"index": 0
}
]
]
},
"175164e7-4a84-48b2-a225-dea6afe1e94d": {
"ai_languageModel": [
[
{
"node": "RAG AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Embeddings Ollama1": {
"ai_embedding": [
[
{
"node": "Supabase Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"5d235803-705e-4366-b00f-ceef912db642": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"5499112e-c417-4a13-9d3f-6e1aa16ee8cd": {
"ai_document": [
[
{
"node": "a2055d5e-a445-4706-afb7-f36f8adedb43",
"type": "ai_document",
"index": 0
}
]
]
},
"fff92d07-0a2c-40ff-a073-b2e17d4695a3": {
"main": [
[
{
"node": "Download File",
"type": "main",
"index": 0
}
]
]
},
"Postgres Chat Memory": {
"ai_memory": [
[
{
"node": "RAG AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"70d053ec-b880-489c-8c20-261f0a4c148c": {
"main": [
[
{
"node": "a2055d5e-a445-4706-afb7-f36f8adedb43",
"type": "main",
"index": 0
}
]
]
},
"Supabase Vector Store": {
"ai_vectorStore": [
[
{
"node": "8a46d0ff-ceb9-435f-a347-d97e103cd0bc",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"57dd71fa-6500-4e8f-b5e2-824eb8812b9a": {
"ai_textSplitter": [
[
{
"node": "5499112e-c417-4a13-9d3f-6e1aa16ee8cd",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "c7cf92ba-d3b7-401f-be57-1f2ad1452fad",
"type": "main",
"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 - Wiki interno, 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
Compartir este flujo de trabajo