{"id":775,"date":"2025-07-04T13:05:46","date_gmt":"2025-07-04T11:05:46","guid":{"rendered":"https:\/\/germanmallo.com\/?p=775"},"modified":"2026-10-05T08:15:53","modified_gmt":"2026-10-05T06:15:53","slug":"asistente-virtual-personal-rag","status":"publish","type":"post","link":"https:\/\/germanmallo.com\/en\/asistente-virtual-personal-rag\/","title":{"rendered":"Mi Chatbot Personal con RAG"},"content":{"rendered":"<p>\u00bfAlguna vez has pensado en crear un asistente virtual que responda preguntas sobre ti de manera inteligente y contextual? Eso es exactamente lo que he desarrollado y quiero compartir contigo c\u00f3mo funciona por dentro.<\/p>\n<p><!--more--><\/p>\n<h3 id=\"el-proyecto-un-asistente-virtual-personal\">El Proyecto: Un Asistente Virtual Personal<\/h3>\n<p>He creado un chatbot que funciona como mi representante digital. No es solo otro bot que da respuestas gen\u00e9ricas, sino un asistente entrenado espec\u00edficamente con informaci\u00f3n sobre mi experiencia profesional, proyectos y conocimientos. Y lo mejor de todo: est\u00e1 disponible 24\/7 en <a href=\"https:\/\/germanmallo.com\/en\/\">mi sitio web<\/a>.<\/p>\n<h3>La Arquitectura: RAG en Acci\u00f3n<\/h3>\n<h4 id=\"-qu-es-rag-\">\u00bfQu\u00e9 es RAG?<\/h4>\n<p>RAG (Retrieval-Augmented Generation) es una t\u00e9cnica que combina la b\u00fasqueda de informaci\u00f3n relevante con la generaci\u00f3n de respuestas coherentes. En lugar de depender \u00fanicamente del conocimiento preentrenado del modelo, RAG busca informaci\u00f3n espec\u00edfica en una base de datos y la utiliza para generar respuestas m\u00e1s precisas y contextuales.<\/p>\n<h3>El Backend: El Cerebro del Sistema<\/h3>\n<h4><strong>FastAPI como Columna Vertebral<\/strong><\/h4>\n<p>Eleg\u00ed FastAPI por su velocidad, facilidad de uso y excelente soporte para APIs as\u00edncronas. La estructura del backend est\u00e1 organizada en:<\/p>\n<pre><code>app\/\n\u251c\u2500\u2500 main.py              # Punto de entrada\n\u251c\u2500\u2500 config.py            # Configuraci\u00f3n\n\u251c\u2500\u2500 routes\/              # Endpoints\n\u251c\u2500\u2500 services\/            # L\u00f3gica de negocio\n\u251c\u2500\u2500 models\/              # Modelos de datos\n\u2514\u2500\u2500 dependencies\/        # Autenticaci\u00f3n y dependencias\n<\/code><\/pre>\n<h4><strong>El Flujo de RAG Paso a Paso<\/strong><\/h4>\n<ol>\n<li><strong>Ingesta de Documentos<\/strong>: Los documentos PDF y TXT se procesan y dividen en chunks (fragmentos) sem\u00e1nticamente coherentes usando LangChain.<\/li>\n<li><strong>Embeddings<\/strong>: Cada chunk se convierte en un vector num\u00e9rico usando OpenAI Embeddings, capturando el significado sem\u00e1ntico del texto.<\/li>\n<li><strong>Almacenamiento en Pinecone<\/strong>: Los vectores se almacenan en Pinecone, una base de datos vectorial especializada en b\u00fasquedas sem\u00e1nticas ultrarr\u00e1pidas.<\/li>\n<li><strong>B\u00fasqueda Sem\u00e1ntica<\/strong>: Cuando llega una pregunta, se convierte en embedding y se buscan los chunks m\u00e1s similares en Pinecone.<\/li>\n<li><strong>Generaci\u00f3n Contextual<\/strong>: Los chunks relevantes se env\u00edan junto con la pregunta a GPT-3.5-turbo para generar una respuesta fundamentada.<\/li>\n<\/ol>\n<p><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/germanmallo.com\/wp-content\/uploads\/2025\/07\/Advanced-RAG.png\" alt=\"Advanced RAG: Architecture, Techniques, Applications and Use Cases and Development\" width=\"898\" height=\"506\" \/><\/p>\n<h3>El Frontend: React con Material-UI<\/h3>\n<p>El frontend est\u00e1 construido con React y TypeScript, ofreciendo una interfaz moderna y responsive. Utiliza Material-UI para un dise\u00f1o consistente y profesional.<\/p>\n<h4>Caracter\u00edsticas Destacadas:<\/h4>\n<ul>\n<li><strong>Chat en tiempo real<\/strong> con indicadores de escritura<\/li>\n<li><strong>Modo p\u00e1gina completa<\/strong> para conversaciones extensas<\/li>\n<li><strong>Panel de administraci\u00f3n<\/strong> para gesti\u00f3n de documentos<\/li>\n<li><strong>Tema personalizado<\/strong> que refleja mi identidad visual<\/li>\n<li><strong>Responsivo<\/strong> para una experiencia \u00f3ptima en cualquier dispositivo<\/li>\n<\/ul>\n<h4>Despliegue y Producci\u00f3n<\/h4>\n<p><strong>Backend<\/strong>: Desplegado en Heroku con configuraci\u00f3n Docker<br \/>\n<strong>Frontend<\/strong>: Desplegado en Netlify con integraci\u00f3n continua desde GitHub<br \/>\n<strong>Base de Datos Vectorial<\/strong>: Pinecone en la nube<br \/>\n<strong>Modelo de IA<\/strong>: OpenAI GPT-3.5-turbo<\/p>\n<h3>\u00bfPor Qu\u00e9 Este Enfoque?<\/h3>\n<ol>\n<li><strong>Precisi\u00f3n<\/strong>: RAG asegura que las respuestas est\u00e9n fundamentadas en informaci\u00f3n real y espec\u00edfica<\/li>\n<li><strong>Escalabilidad<\/strong>: Pinecone maneja millones de vectores con b\u00fasquedas en milisegundos<\/li>\n<li><strong>Flexibilidad<\/strong>: Puedo actualizar la base de conocimiento sin reentrenar el modelo<\/li>\n<li><strong>Costo-eficiencia<\/strong>: Usar GPT-3.5-turbo en lugar de modelos m\u00e1s grandes mantiene los costos bajos<\/li>\n<\/ol>\n<h3>Resultados y Aprendizajes<\/h3>\n<p>El chatbot no solo responde preguntas sobre mi experiencia, sino que lo hace de manera conversacional y contextual. Algunos ejemplos de lo que puede hacer:<\/p>\n<ul>\n<li>Explicar proyectos espec\u00edficos con detalles t\u00e9cnicos<\/li>\n<li>Recomendar mi perfil para roles espec\u00edficos<\/li>\n<li>Proporcionar informaci\u00f3n de contacto y disponibilidad<\/li>\n<li>Discutir habilidades t\u00e9cnicas y experiencias relevantes<\/li>\n<\/ul>\n<h3>\u00bfQuieres Probarlo?<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/germanmallo.com\/wp-content\/uploads\/2025\/07\/2.jpg\" alt=\"\" width=\"1280\" height=\"720\" \/><\/p>\n<p>Puedes interactuar con mi asistente virtual directamente en <a href=\"https:\/\/germanmallo.com\/en\/\">germanmallo.com<\/a>. Preg\u00fantale sobre mis proyectos, experiencia en Data Science, o cualquier aspecto de mi perfil profesional.<\/p>\n<hr \/>\n<p>\u00bfTe ha inspirado este proyecto? \u00bfTienes preguntas t\u00e9cnicas sobre la implementaci\u00f3n? \u00a1D\u00e9jame un comentario o mejor a\u00fan, preg\u00fantale directamente a mi chatbot! \ud83d\ude04<\/p>\n<p><strong>Stack completo<\/strong>: Python, FastAPI, LangChain, OpenAI, Pinecone, React, TypeScript, Material-UI, Docker, Heroku, Netlify.<\/p>\n<p><em>\u00bfQuieres implementar algo similar? Estar\u00e9 encantado de ayudarte. <a href=\"https:\/\/germanmallo.com\/en\/contacto\/\" target=\"_blank\" rel=\"noopener\">Conectemos<\/a> y hablemos sobre c\u00f3mo la IA puede potenciar tu presencia digital.<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>\u00bfAlguna vez has pensado en crear un asistente virtual que responda preguntas sobre ti de manera inteligente y contextual? Eso es exactamente lo que he desarrollado y quiero compartir contigo c\u00f3mo funciona por dentro.<\/p>","protected":false},"author":2,"featured_media":997,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[76],"tags":[257,271,214,127],"class_list":["post-775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ia","tag-apis","tag-chatbots","tag-proyectos-personales","tag-rag"],"acf":[],"_links":{"self":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/comments?post=775"}],"version-history":[{"count":2,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/775\/revisions"}],"predecessor-version":[{"id":4508,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/posts\/775\/revisions\/4508"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/media\/997"}],"wp:attachment":[{"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/media?parent=775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/categories?post=775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/germanmallo.com\/en\/wp-json\/wp\/v2\/tags?post=775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}