Noticia

Crea un chatbot RAG personalizado con n8n para optimizar tu gestión del conocimiento

Construyendo Chatbots Especializados con Generación Aumentada por Recuperación (RAG) ¿Alguna vez hemos deseado tener un chatbot que pueda responder preguntas específicas sobre nuestros datos o documentación, en lugar de ofrecer…

Crea un chatbot RAG personalizado con n8n para optimizar tu gestión del conocimiento

Construyendo Chatbots Especializados con Generación Aumentada por Recuperación (RAG)

¿Alguna vez hemos deseado tener un chatbot que pueda responder preguntas específicas sobre nuestros datos o documentación, en lugar de ofrecer respuestas genéricas y poco útiles? Con la Generación Aumentada por Recuperación (RAG), podemos construir un chatbot que realmente conozca nuestros datos y proporcione respuestas precisas y relevantes. En este artículo, exploraremos cómo RAG permite crear chatbots especializados que superan las limitaciones de las interacciones típicas.

¿Qué es la Generación Aumentada por Recuperación (RAG)?

La Generación Aumentada por Recuperación (RAG) es una técnica poderosa que combina las fortalezas de los modelos de lenguaje grandes (LLMs) con fuentes de conocimiento externas. Esto permite generar respuestas más relevantes y, lo más importante, precisas a consultas complejas. En lugar de depender únicamente de la información con la que fueron entrenados, los chatbots RAG pueden acceder a datos externos para enriquecer sus respuestas.

¿Cómo se utiliza RAG en los chatbots?

RAG se utiliza en chatbots para acceder y procesar información de diversas fuentes, incluyendo datos no estructurados como documentos de texto, páginas web y publicaciones en redes sociales, así como datos estructurados como bases de datos y gráficos de conocimiento. Esto permite a los chatbots:

  • Proporcionar respuestas más completas e informativas.
  • Personalizar la experiencia del usuario.
  • Mantenerse actualizados con la información más reciente.
  • Ofrecer respuestas basadas en documentos internos.

Diferencias entre búsqueda semántica y RAG

Aunque tanto la búsqueda semántica como RAG buscan mejorar la recuperación de información, difieren en su enfoque y capacidades. La búsqueda semántica se centra en comprender la intención y el contexto de la consulta del usuario para recuperar información relevante. Utiliza técnicas de procesamiento de lenguaje natural (NLP) para analizar el significado detrás de las palabras.

Por otro lado, RAG va más allá al incorporar un componente generativo. No solo recupera información relevante, sino que también utiliza un LLM para sintetizar y generar una respuesta completa basada en la información recuperada. Esto permite a RAG ofrecer respuestas más concisas y similares a las humanas, en comparación con simplemente presentar una lista de resultados de búsqueda.

Imaginemos que necesitamos encontrar información sobre un código de error específico en un extenso manual técnico. La búsqueda semántica nos ayudaría a localizar las secciones relevantes en el manual. RAG, en cambio, tomaría esas secciones, sintetizaría la información y nos proporcionaría una explicación concisa del error y posibles soluciones.

Ejemplos de chatbots RAG

Ahora que hemos explorado los fundamentos de RAG, veamos algunos ejemplos que pueden inspirar nuestra creatividad.

Chatbot de base de conocimiento interno

Imaginemos un flujo de trabajo que se conecta a los recursos internos de una empresa, enfocándose en documentos almacenados en Google Drive. Este flujo utiliza un mecanismo para actualizar automáticamente una base de datos vectorial de Pinecone cada vez que se añaden nuevos documentos o se modifican los existentes en carpetas designadas de Google Drive. Cuando un usuario hace una pregunta, el flujo utiliza una combinación de nodos (incluyendo búsqueda semántica con Pinecone y un LLM) para recuperar información relevante de los documentos indexados y generar una respuesta.

Por ejemplo, si un empleado pregunta: «¿Cuál es la política de la empresa sobre el trabajo remoto?», el chatbot accedería a la base de datos vectorial, recuperaría documentos relevantes y generaría un resumen de la política.

Chatbot de documentación de API

Este flujo se conecta a la documentación de API, ejemplos de código y documentación para desarrolladores. Utiliza un nodo de función para analizar las especificaciones de la API y extraer información relevante. Cuando un desarrollador pregunta sobre la API, el flujo recupera la documentación y ejemplos de código. Un LLM se utiliza para generar explicaciones concisas, proporcionar ejemplos de uso adaptados al lenguaje de programación del desarrollador e incluso generar fragmentos de código para llamadas comunes a la API.

Por ejemplo, si un desarrollador pregunta: «¿Cómo autentico a un usuario con el protocolo OAuth 2.0 en mi aplicación Node.js?», el chatbot recuperaría la documentación de la API y ejemplos de código, generando un fragmento de código en Node.js que demuestra el proceso de autenticación, junto con explicaciones y consideraciones de seguridad.

Chatbot de análisis financiero

Este flujo se integra con proveedores de datos financieros (por ejemplo, Bloomberg, Refinitiv). Utiliza nodos de solicitud HTTP para obtener datos de mercado en tiempo real, precios históricos de acciones e informes financieros de empresas. Cuando un usuario hace una pregunta financiera, el flujo recupera datos relevantes y utiliza un LLM para generar análisis perspicaces, evaluaciones de riesgo o recomendaciones de inversión.

Por ejemplo, si un analista pregunta: «¿Cuál es el sentimiento actual del mercado hacia las empresas de energía renovable y cómo se compara con el trimestre anterior?», el chatbot analizaría artículos de noticias, el sentimiento en redes sociales y datos de mercado para proporcionar una respuesta completa, potencialmente incluyendo gráficos generados con otros nodos de n8n.

Cómo construir un chatbot RAG con n8n

Ahora que hemos visto ejemplos, es hora de poner la teoría en práctica construyendo un chatbot RAG utilizando la potente automatización de flujos de trabajo visual de n8n. Crearemos un chatbot de documentación de API para la API de GitHub, demostrando cómo n8n simplifica el proceso de conexión a fuentes de datos, bases de datos vectoriales y LLMs.

Requisitos previos

Antes de comenzar a construir, asegúrate de tener lo siguiente configurado:

  • Cuenta de n8n: Necesitarás una cuenta de n8n para crear y ejecutar flujos de trabajo. Si no tienes una, puedes registrarte para una cuenta en la nube de n8n o auto-hospedar n8n.
  • Cuenta de OpenAI y clave API: Utilizaremos los modelos de OpenAI para generar embeddings y respuestas. Necesitarás una cuenta de OpenAI y una clave API. Puedes encontrar esta página de documentación sobre configuración de credenciales de OpenAI en n8n.
  • Cuenta de Pinecone y clave API: Usaremos Pinecone como nuestra base de datos vectorial para almacenar y recuperar embeddings de documentación de API. Puedes crear una cuenta gratuita en el sitio web de Pinecone y consultar la página de documentación sobre cómo configurar credenciales de Pinecone en n8n.
  • Familiaridad básica con bases de datos vectoriales: Aunque no es estrictamente necesario, entender los conceptos básicos de las bases de datos vectoriales será útil. Puedes consultar esta documentación de n8n para una introducción: uso de bases de datos vectoriales en n8n.

Una vez que tengas estos requisitos previos en su lugar, ¡estás listo para comenzar a construir tu chatbot RAG!

Paso 1: Configurar la fuente de datos y la extracción de contenido

Este flujo de trabajo consta de dos partes. La primera parte se encarga de obtener los datos y indexarlos en la base de datos vectorial de Pinecone, y la segunda parte manejará el chatbot de IA. Utilizando el nodo de solicitud HTTP, estamos obteniendo la especificación OpenAPI 3.0 desde GitHub. Simplemente usamos esta URL en crudo de GitHub para obtener el archivo JSON del repositorio. Dejamos todas las demás opciones en sus configuraciones predeterminadas.

Este nodo realiza una solicitud GET a la URL especificada, que apunta a la representación JSON en crudo de la especificación de la API de GitHub. La respuesta es el archivo completo de especificaciones OpenAPI, que se utilizará en el siguiente paso.

Paso 2: Generar embeddings

En este paso importante, transformamos los fragmentos de texto de la documentación de la API en representaciones vectoriales numéricas conocidas como embeddings. Estos embeddings capturan el significado semántico de cada fragmento de texto, lo que nos permite realizar búsquedas de similitud más adelante. Podemos hacer esto utilizando el nodo de almacenamiento vectorial de Pinecone.

Luego, necesitamos conectar un nodo de embeddings de OpenAI al nodo de almacenamiento vectorial de Pinecone.

Este nodo toma los fragmentos de texto y genera sus correspondientes embeddings vectoriales utilizando el modelo de embeddings de OpenAI. Utiliza tus credenciales de OpenAI y selecciona text-embedding-3-small como modelo.

También necesitamos conectar el nodo de cargador de datos predeterminado y conectar el nodo de divisor de texto de caracteres recursivo a ese. Puedes dejar todo como predeterminado.

Paso 3: Guardar documentos y embeddings en la base de datos vectorial de Pinecone

Ahora puedes ejecutar esta parte del flujo de trabajo. Puede tardar un tiempo en generar todos los embeddings y guardarlos en Pinecone, especialmente si el archivo de especificaciones de la API es grande. Después de que esto se complete, tu panel de control de Pinecone debería mostrar algunos datos en esa base de datos vectorial.

Paso 4: Construir la lógica central del chatbot

Con nuestra especificación de API indexada en la base de datos vectorial, ahora podemos configurar la parte de consulta y generación de respuestas del flujo de trabajo. Esto implica recibir la consulta del usuario, encontrar documentos relevantes en la base de datos vectorial y elaborar una respuesta utilizando un LLM.

Utiliza el nodo de activación de chat para recibir la entrada del usuario. Este nodo actúa como el punto de entrada para la interacción del usuario, activando el flujo de trabajo cuando se recibe un nuevo mensaje de chat. Deja todas las configuraciones como predeterminadas por ahora.

Luego, conectamos el nodo de activación de chat a un nodo de agente de IA. Este nodo orquesta los pasos de recuperación y generación. Recibe la pregunta del usuario y los documentos relevantes, y llama al LLM para producir una respuesta.

Eres un asistente útil que proporciona información sobre la API de GitHub y cómo usarla según las especificaciones de OpenAPI V3.

A continuación, conecta el nodo de agente de IA al nodo de modelo de chat de OpenAI. Este nodo es responsable de tomar la consulta del usuario, junto con los fragmentos de texto recuperados, y utilizar un LLM de OpenAI para generar una respuesta final y completa.

Selecciona tus credenciales de OpenAI y, en el menú desplegable de modelos, elige el modelo eficiente gpt-4o-mini.

Conecta el nodo de memoria de búfer de ventana al nodo de agente de IA. Este nodo proporciona memoria a corto plazo para la conversación, permitiendo que el LLM responda preguntas de seguimiento y utilice los mensajes y respuestas anteriores para mejorar sus respuestas. Puedes dejar todas las configuraciones como predeterminadas aquí.

Paso 5: Recuperar información utilizando la herramienta de almacenamiento vectorial

Ahora viene la parte crucial que transforma esto en un chatbot RAG en lugar de un chatbot de IA regular.

Conecta un nodo de herramienta de almacenamiento vectorial al nodo de agente de IA. El nodo utiliza el embedding de la consulta del usuario para realizar una búsqueda de similitud contra los embeddings de los fragmentos de especificaciones de la API indexados.

Dale a esta herramienta un nombre descriptivo y una descripción para que el LLM entienda cuándo usarla. Para este ejemplo, puedes usar la siguiente descripción:

«Usa esta herramienta para obtener información sobre la API de GitHub. Esta base de datos contiene especificaciones OpenAPI v3.»

También podemos limitar el número de resultados que recuperamos de la base de datos vectorial a los 4 más relevantes para la consulta del usuario.

Luego, conecta el nodo de almacenamiento vectorial de Pinecone, esta vez configurando el modo de operación como «Recuperar documentos (para agente/cadena)» y conecta el mismo nodo de embeddings de OpenAI que utilizamos anteriormente, asegurando que se seleccione el mismo modelo text-embedding-3-large. Esta configuración generará embeddings para la consulta del usuario, permitiendo una comparación con todos los embeddings en tu base de datos vectorial.

Finalmente, conecta otro nodo de modelo de chat de OpenAI. Este nodo resumirá los fragmentos recuperados de la base de datos, proporcionando contexto para la respuesta final.

Puedes usar el mismo modelo gpt-4o-mini aquí también.

Paso 6: Prueba tu chatbot RAG

¡Y ahí lo tienes!

Has configurado ahora los componentes centrales de tu chatbot de GitHub API potenciado por RAG.

Para probarlo, simplemente haz clic en el botón de chat ubicado en la parte inferior del editor de n8n. Esto abrirá la interfaz de chat donde puedes comenzar a interactuar con tu bot. Como pregunta de prueba, intenta preguntar: «¿Cómo creo una aplicación de GitHub a partir de un manifiesto?». Te sorprenderá ver cómo el chatbot recupera información relevante de la especificación de la API de GitHub y te proporciona una solución detallada, paso a paso, utilizando la API. Esto demuestra el poder de RAG y cómo n8n facilita la construcción de aplicaciones sofisticadas impulsadas por IA.

¿Qué sigue?

Ahora que entendemos RAG y hemos visto cómo n8n puede integrarlo todo, es hora de ponernos prácticos. Aquí hay algunas áreas en las que deberíamos enfocarnos a continuación:

Preguntas Frecuentes (FAQs)

  1. ¿Qué es RAG y cómo mejora la interacción con chatbots?
    RAG combina modelos de lenguaje con fuentes de conocimiento externas para generar respuestas más precisas y relevantes, mejorando significativamente la interacción con los usuarios.

  2. ¿Qué herramientas necesito para construir un chatbot RAG?
    Necesitarás una cuenta de n8n, una cuenta de OpenAI para acceder a modelos de lenguaje, y una cuenta de Pinecone para almacenar embeddings.

  3. ¿Cómo se diferencia RAG de la búsqueda semántica?
    RAG no solo recupera información relevante, sino que también genera respuestas completas utilizando un modelo de lenguaje, mientras que la búsqueda semántica se centra en encontrar información relacionada.

  4. ¿Es necesario tener experiencia previa en programación para usar n8n?
    No es necesario tener experiencia previa en programación, ya que n8n ofrece una interfaz visual intuitiva que facilita la creación de flujos de trabajo.

  5. ¿Puedo personalizar las respuestas de mi chatbot RAG?
    Sí, puedes ajustar los prompts y la configuración del modelo de lenguaje para personalizar las respuestas según las necesidades de tus usuarios.

Con esta guía, estamos listos para crear chatbots que no solo respondan preguntas, sino que lo hagan de manera informativa y precisa, aprovechando el poder de RAG y la flexibilidad de n8n. ¡Manos a la obra!

Escrito por Eduard Ro

marzo 4, 2025

Empecemos

¿Quieres tener contenido como este de forma 100% automática?