{"id":2152,"date":"2024-09-04T10:30:00","date_gmt":"2024-09-04T08:30:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2152"},"modified":"2026-08-05T17:23:03","modified_gmt":"2026-08-05T15:23:03","slug":"agente-rag-n8n-supabase","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/es\/2024\/09\/04\/agente-rag-n8n-supabase\/","title":{"rendered":"Agente RAG sin c\u00f3digo: combinar n8n y Supabase de forma productiva"},"content":{"rendered":"<p>La mayor\u00eda de los tutoriales de RAG que circulan por la red muestran siempre el mismo juguete: &#8220;converse con su PDF&#8221;. Lo que rara vez se menciona es que esas demos est\u00e1n muy lejos de un uso productivo. En cuanto la base de conocimiento crece, se actualizan documentos o los usuarios hacen preguntas que nadie prob\u00f3, empiezan los problemas. Justo ah\u00ed es donde entra el enfoque que se describe aqu\u00ed.<\/p>\n<p>En su v\u00eddeo, Cole Medin muestra c\u00f3mo construir con dos herramientas \u2014 <strong>n8n<\/strong> (automatizaci\u00f3n de flujos de trabajo, comparable a Make.com o Zapier) y <strong>Supabase<\/strong> (plataforma de base de datos con soporte vectorial mediante PG Vector) \u2014 un agente de IA con RAG m\u00e1s cercano a la pr\u00e1ctica que muchas otras gu\u00edas. La promesa: sin c\u00f3digo, con un esfuerzo abarcable y con un montaje que crece junto con la base de conocimiento. Para quienes deciden en pymes resulta interesante sobre todo porque permite hacer buscables documentos internos, actas o manuales sin mantener un equipo de desarrollo.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\">\n<strong>Lo esencial en breve<\/strong><\/p>\n<ul>\n<li>RAG (Retrieval Augmented Generation) conecta un modelo de lenguaje con una base de conocimiento propia, de modo que el agente accede a sus documentos en lugar de solo a lo aprendido en el entrenamiento.<\/li>\n<li>n8n se encarga de la automatizaci\u00f3n; Supabase sirve a la vez como memoria del chat y como base de datos vectorial.<\/li>\n<li>Todo el montaje funciona sin programaci\u00f3n y, seg\u00fan el v\u00eddeo, queda configurado en menos de 15 minutos.<\/li>\n<li>Dos detalles distinguen este enfoque de los tutoriales superficiales: un almacenamiento escalable del historial de chat y el borrado de vectores obsoletos para evitar duplicados.<\/li>\n<li>El nivel gratuito de Supabase basta perfectamente para empezar, seg\u00fan el v\u00eddeo.<\/li>\n<\/ul>\n<\/div>\n<figure style=\"margin:28px 0;\"><img decoding=\"async\" src=\"https:\/\/pletzenauer.com\/wp-content\/uploads\/2026\/06\/1486-1.png\" alt=\"Comparaci\u00f3n a dos columnas: a la izquierda, los tutoriales t\u00edpicos de RAG centrados en la demo y con almacenamiento local; a la derecha, el enfoque apto para la pr\u00e1ctica con memoria en Supabase y borrado de vectores obsoletos.\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">Dos detalles que suelen pasarse por alto deciden si un agente RAG sigue siendo \u00fatil cuando crece la base de conocimiento.<\/figcaption><\/figure>\n<h2>Qu\u00e9 logra el agente en la pr\u00e1ctica<\/h2>\n<p>El funcionamiento se muestra en el v\u00eddeo con un ejemplo sencillo. Al principio la base de conocimiento est\u00e1 vac\u00eda y la tabla correspondiente en Supabase no contiene registros. Una pregunta de prueba sobre las tareas de una reuni\u00f3n no puede, l\u00f3gicamente, ser respondida por el agente.<\/p>\n<p>A continuaci\u00f3n se deposita un documento con notas de reuni\u00f3n como Google Doc en una carpeta vigilada. En aproximadamente un minuto se ejecuta en segundo plano un workflow de n8n que procesa el archivo y lo inserta en la base de conocimiento. Despu\u00e9s aparece en Supabase un registro nuevo con el contenido de la p\u00e1gina, los metadatos (entre otros, el ID del archivo de Google Drive) y el llamado vector de embedding. Si se repite la misma pregunta, el agente entrega ahora la respuesta correcta a partir del documento. Las actualizaciones del archivo tambi\u00e9n se detectan y se incorporan.<\/p>\n<h2>El montaje de un vistazo<\/h2>\n<p>El workflow consta de dos partes: el agente de chat propiamente dicho y un recorrido aparte que incorpora documentos a la base de conocimiento de forma autom\u00e1tica. Seg\u00fan el v\u00eddeo, una plantilla JSON lista para usar se descarga desde un repositorio de GitHub y se carga en la propia instancia de n8n mediante &#8220;Import from file&#8221;. Despu\u00e9s solo hay que a\u00f1adir las credenciales propias y la carpeta deseada.<\/p>\n<h3>Preparar Supabase<\/h3>\n<p>Supabase se configura con una cuenta de GitHub. Dos secciones de los ajustes del proyecto proporcionan las credenciales necesarias:<\/p>\n<ul>\n<li><strong>Database:<\/strong> host, nombre de la base de datos, puerto, usuario y contrase\u00f1a para la conexi\u00f3n con Postgres. Estos datos se usan para la memoria del chat.<\/li>\n<li><strong>API:<\/strong> la URL espec\u00edfica del proyecto y el service role secret. Estos datos se necesitan para la base de datos vectorial.<\/li>\n<\/ul>\n<p>Para la b\u00fasqueda vectorial, n8n ofrece en su documentaci\u00f3n c\u00f3digo SQL ya preparado. Se ejecuta una sola vez en el editor SQL de Supabase y crea autom\u00e1ticamente la extensi\u00f3n PG Vector, la tabla de documentos y la funci\u00f3n de matching para RAG. No hace falta escribir c\u00f3digo propio.<\/p>\n<h3>El agente de chat<\/h3>\n<p>El agente se inicia con un trigger &#8220;When a chat message is received&#8221;. Este ofrece a la vez una ventana de chat dentro de n8n con la que se puede probar el agente sin desplegar nada. Si se desea, esa misma interfaz se integra en un sitio web con un c\u00f3digo de incrustaci\u00f3n ya preparado. Al agente se conectan tres piezas:<\/p>\n<ul>\n<li><strong>Modelo de chat:<\/strong> en el ejemplo, GPT-4o mini, conectado mediante la clave de API de OpenAI. Como alternativa tambi\u00e9n es posible Anthropic.<\/li>\n<li><strong>Memoria del chat:<\/strong> aqu\u00ed se usa deliberadamente Postgres a trav\u00e9s de Supabase en lugar del habitual almacenamiento local por ventana. El almacenamiento local carga el servidor de n8n y escala mal. La tabla necesaria la crea n8n por s\u00ed mismo cuando hace falta.<\/li>\n<li><strong>Herramienta RAG:<\/strong> el tool &#8220;retrieve documents&#8221; con Supabase como almac\u00e9n vectorial, configurado con el nombre de la tabla y la funci\u00f3n de consulta.<\/li>\n<\/ul>\n<h3>Incorporar documentos autom\u00e1ticamente<\/h3>\n<p>La segunda parte del workflow mantiene actualizada la base de conocimiento. Un trigger de Google Drive comprueba con regularidad si hay archivos nuevos o modificados en una carpeta definida. El resto del proceso:<\/p>\n<ul>\n<li>Se extrae el ID del archivo y se pasa a los pasos siguientes.<\/li>\n<li>Los vectores existentes con ese mismo ID de archivo se borran en Supabase (m\u00e1s sobre esto abajo).<\/li>\n<li>Se descarga el archivo; los documentos se convierten a texto y las hojas de Google Sheets a CSV, para obtener el contenido textual puro.<\/li>\n<li>El texto se inserta en la base de datos vectorial. En archivos peque\u00f1os se prescinde de dividirlo en fragmentos; en los dem\u00e1s casos se emplea un text splitter recursivo sencillo.<\/li>\n<\/ul>\n<h2>Dos detalles que deciden la utilidad pr\u00e1ctica<\/h2>\n<p>El art\u00edculo destaca dos puntos que faltan en muchos tutoriales y que causan problemas justo donde la cosa se pone seria.<\/p>\n<h3>Memoria de chat escalable<\/h3>\n<p>El historial de una conversaci\u00f3n se guarda a menudo de forma local en la instancia de n8n porque es lo m\u00e1s sencillo. Justamente eso sobrecarga el servidor a medida que crece el uso. Trasladarlo a una base de datos Postgres en Supabase es el paso que hace al agente realmente robusto.<\/p>\n<h3>Borrar vectores obsoletos<\/h3>\n<p>El punto m\u00e1s importante son las actualizaciones. Las opciones de vectores en n8n no funcionan como &#8220;Upsert&#8221;: al volver a insertar, un vector existente no se sustituye, sino que se duplica, porque el ID del archivo no se usa como ID del vector. Si se actualiza el mismo archivo varias veces, se acumulan duplicados y la calidad de las respuestas se resiente. La soluci\u00f3n dentro del workflow: antes de cada inserci\u00f3n se borran todos los vectores cuyos metadatos llevan el ID del archivo del documento actual de Google Drive. Solo despu\u00e9s se inserta la versi\u00f3n nueva y actualizada. As\u00ed se conserva exactamente un registro vigente por documento.<\/p>\n<h2>Valoraci\u00f3n para quienes deciden<\/h2>\n<p>El montaje que se muestra est\u00e1 pensado expl\u00edcitamente como un punto de partida s\u00f3lido, no como una soluci\u00f3n final. Ampliaciones como una mejor b\u00fasqueda sem\u00e1ntica o una b\u00fasqueda adicional por palabras clave son posibles, pero se dejan deliberadamente abiertas. Aun as\u00ed, el enfoque es viable para una primera base de conocimiento cercana a producci\u00f3n.<\/p>\n<p>Llama la atenci\u00f3n el aspecto de los costes: seg\u00fan el v\u00eddeo, el nivel gratuito de Supabase basta para empezar, y pasar al plan de pago solo compensa al escalar. Quien ya trabaje con n8n puede montar el agente con sus propios documentos en poco tiempo, sin encargar desarrollo externo.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>El art\u00edculo muestra de forma sobria y comprensible c\u00f3mo implementar un agente de IA con RAG usando n8n y Supabase sin programar. El valor real no est\u00e1 en el efecto r\u00e1pido de la demo, sino en dos detalles que suelen pasarse por alto: una memoria de chat escalable y la eliminaci\u00f3n sistem\u00e1tica de vectores obsoletos. Precisamente esos puntos deciden si un agente sigue siendo \u00fatil cuando crece la base de conocimiento o si con el tiempo se vuelve poco fiable. Quien quiera hacer buscables sus documentos internos encuentra aqu\u00ed un plano pragm\u00e1tico que puede ampliarse paso a paso.<\/p>\n<p><strong>Fuente:<\/strong> Cole Medin, &#8220;This RAG AI Agent with n8n + Supabase is the Real Deal&#8221;, <a href=\"https:\/\/www.youtube.com\/watch?v=PEI_ePNNfJQ\">https:\/\/www.youtube.com\/watch?v=PEI_ePNNfJQ<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As\u00ed construye un agente de IA con RAG listo para producci\u00f3n usando n8n y Supabase, sin c\u00f3digo: base de conocimiento, b\u00fasqueda vectorial y actualizaci\u00f3n autom\u00e1tica de documentos.<\/p>\n","protected":false},"author":0,"featured_media":1506,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2152","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts\/2152","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/comments?post=2152"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts\/2152\/revisions"}],"predecessor-version":[{"id":2592,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts\/2152\/revisions\/2592"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/media\/1506"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/media?parent=2152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/categories?post=2152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/tags?post=2152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}