Saltar al contenido
hg.Héctor GarridoCiencia de datos y economía
Volver al cuaderno

Portafolio RAG

Serie sobre la construcción de este portafolio profesional con motor RAG, Django, React y Vertex AI.

Explorar el repositorio

Cómo Construí Mi Blog Personal con Django y React desde Cero

Este artículo describe el proceso de creación de un blog personal desde cero utilizando Django y React. El autor explica la motivación detrás de esta decisión, optando por una arquitectura desacoplada para tener control total sobre la experiencia del usuario y la escalabilidad. Se detalla la estructura del proyecto, la elección de tecnologías como Django REST Framework para el backend y React con Material UI para el frontend, y los trade-offs de esta arquitectura. El lector aprenderá sobre la configuración inicial del backend con Django, incluyendo la definición de modelos de datos y la creaci

Portafolio RAG

De Búsqueda por Keywords a RAG: Cómo le Enseñé a Mi Blog a Entender Preguntas

Este artículo técnico describe cómo se implementó un motor de búsqueda semántica para un blog personal, superando las limitaciones de la búsqueda por keywords tradicional. Se explica el concepto de embeddings, la similitud coseno y la transición de un modelo local (SBERT) a Vertex AI `text-embedding-005`. El lector aprenderá sobre el pipeline de indexación, la justificación para usar `pickle` en lugar de `pgvector` y los desafíos de convertir texto en representaciones numéricas significativas para mejorar la experiencia de búsqueda.

Portafolio RAG

Desplegar en Google Cloud: Crónica de 4 Pull Requests y Muchos Errores

Este artículo relata la experiencia de desplegar un blog personal en Google Cloud, detallando los desafíos y soluciones encontradas. Inicialmente se intentó un pipeline CI/CD con GitHub Actions, pero se descartó por costos y complejidad. Se describe la configuración de Cloud Run, incluyendo la ejecución de scripts de seeding de datos y manejo de credenciales. El lector aprenderá sobre las complejidades del despliegue en la nube y la importancia de adaptar las soluciones a las necesidades del proyecto.

Portafolio RAG

# Despliegue Full-Stack Serverless en Google Cloud Platform

Este artículo detalla el despliegue de una aplicación full-stack serverless en Google Cloud Platform. Se describe la arquitectura, que incluye un frontend React en Cloud Run, un backend Django con DRF también en Cloud Run, una base de datos PostgreSQL en Cloud SQL con pgvector, y Vertex AI para embeddings y generación de lenguaje. Aprenderás a configurar el proyecto en GCP, habilitar las APIs necesarias, configurar las credenciales y crear una instancia de PostgreSQL en Cloud SQL. Se explica la migración a Neon PostgreSQL serverless.

Portafolio RAG

Caché Semántico, Signals y las Mil Batallas de las Imágenes en GCS

Este artículo técnico aborda el problema de la lentitud en un chatbot RAG debido a la necesidad de recalcular respuestas a preguntas repetidas. Se presenta `RAGQueryCache`, un caché semántico que utiliza embeddings para identificar preguntas similares y reutilizar respuestas almacenadas, mejorando significativamente el rendimiento. Además, se explica el uso de Django Signals para automatizar la indexación de posts en el motor de búsqueda, evitando errores manuales. Aprenderás sobre caché semántico, embeddings, cosine similarity y Django Signals.

Portafolio RAG

Vertex AI Exclusivo, Resiliencia y la Última Milla: Paginación

Este artículo describe la migración de un motor RAG desde una arquitectura multi-proveedor (SBERT, Ollama y Vertex AI) a una solución exclusiva con Vertex AI, explicando las razones detrás de esta decisión y el refactor resultante. Además, aborda un problema intermitente de carga de datos en la página de inicio debido a cold starts de Cloud Run. La solución implementada involucra un mecanismo de retry con exponential backoff en el cliente API (JavaScript/Axios). Aprenderás sobre las ventajas de simplificar la arquitectura, el manejo de cold starts y la implementación de retries.

Portafolio RAG

# La Verdad Incómoda de Cloud SQL: Por Qué Tu Base de Datos Vacía Cuesta Más que Todo tu Stack

Este artículo técnico revela la verdad oculta sobre los costos de Cloud SQL, especialmente cuando se utiliza para proyectos pequeños. Explica cómo, a diferencia de servicios como Cloud Run, Vertex AI y Cloud Storage que cobran por uso, Cloud SQL cobra por la instancia activa 24/7, incluso si la base de datos está casi vacía. Se analiza el desglose de costos de cada servicio en Google Cloud y se explica por qué Cloud SQL puede ser una opción costosa para aplicaciones de bajo tráfico. El lector aprenderá a identificar cuándo Cloud SQL es la opción correcta y cuándo es mejor buscar alternativas m

Portafolio RAG

Migración de Cloud SQL a Neon: Cómo Ahorré $115/Año en 20 Minutos

Este artículo detalla la migración de una base de datos PostgreSQL de Cloud SQL a Neon para reducir costos. Se explica cómo crear un proyecto en Neon, habilitar la extensión pgvector, exportar la base de datos de Cloud SQL usando `gcloud`, importarla a Neon con `psql`, y finalmente, actualizar la configuración de Cloud Run para apuntar a la nueva base de datos. El lector aprenderá a migrar bases de datos entre plataformas cloud y a optimizar costos de infraestructura.

Portafolio RAG

Mejoras al Motor RAG: Restricción de Contenido, Resiliencia y LaTeX

Este artículo técnico aborda tres problemas comunes en la implementación de un motor RAG (Retrieval-Augmented Generation). Primero, cómo evitar que el modelo responda con conocimiento general en lugar de basarse en el contexto recuperado. Segundo, cómo manejar errores transitorios de la API de Vertex AI para evitar cachear respuestas fallidas. Tercero, cómo mejorar la selección de fuentes relevantes. Se implementan restricciones en el prompt, lógica de reintentos con backoff exponencial y un sistema dinámico de selección de fuentes. El lector aprenderá técnicas para construir sistemas RAG más

Portafolio RAG

Optimización de Rendimiento Frontend: Code Splitting, Pre-renderizado y Caché Docker

Este artículo técnico aborda la optimización del rendimiento frontend en una aplicación React, resolviendo problemas de carga inicial lenta y uso ineficiente de la caché. Se implementa *code splitting* con `React.lazy()` para reducir el tamaño del bundle inicial y se configura una estrategia de caché en Nginx para servir archivos estáticos de manera eficiente. Aprenderás a mejorar significativamente los tiempos de carga y la experiencia del usuario, optimizando tanto el código JavaScript como la configuración del servidor web.

Portafolio RAG

Debugging react-snap en CI/CD: Cuando Puppeteer Se Niega a Terminar

Este artículo técnico detalla la resolución de problemas al usar react-snap en un entorno CI/CD, específicamente cuando Puppeteer no finaliza la pre-renderización. Se exploran tres causas principales: llamadas API pendientes que impiden que Puppeteer considere la página como inactiva, bucles infinitos de `requestAnimationFrame` que mantienen el thread principal ocupado y el crawling automático de react-snap que reintroduce rutas problemáticas. Aprenderás a diagnosticar y solucionar estos problemas, optimizando la configuración de react-snap para un pre-renderizado exitoso en CI/CD.

Portafolio RAG

De Blog Personal a Portafolio Profesional: Por Qué y Cómo

Este artículo aborda la transformación de un blog personal en un portafolio profesional enfocado en data science y machine learning. Se describe cómo reestructurar la página principal (Home.js) para destacar habilidades, proyectos y experiencia relevante para reclutadores. Se discuten decisiones de diseño como la creación de una página `/projects` dedicada y la selección de proyectos clave. El lector aprenderá a priorizar la información, implementar un "hero section" con métricas verificables y mostrar un stack tecnológico visible, utilizando React y componentes MUI.

Portafolio RAG

Dominio Propio en Cloud Run: hectorgarrido.cl Paso a Paso

Este artículo detalla el proceso para configurar un dominio propio (`hectorgarrido.cl`) en Cloud Run, desde la compra del dominio en NIC Chile hasta la configuración del DNS. Aprenderás a crear una zona administrada en Cloud DNS, mapear el dominio a tu servicio de Cloud Run y actualizar los nameservers en el registrador del dominio. Se utiliza la herramienta `gcloud` para interactuar con Google Cloud y se explica la arquitectura DNS involucrada, permitiendo a los lectores tener control total sobre sus dominios y una integración fluida con Cloud Run.

Portafolio RAG

Conectar un Formulario de Contacto con Gmail en Django + React

Este artículo técnico explica cómo conectar un formulario de contacto creado con React a Gmail utilizando Django. Se detalla la configuración de Django para enviar correos electrónicos a través de SMTP de Gmail, incluyendo la creación de una App Password para mayor seguridad. Aprenderás a configurar las variables de entorno necesarias, a implementar una vista en Django que envíe el correo electrónico al recibir un nuevo mensaje del formulario y a manejar errores en caso de que la configuración sea incorrecta. El flujo es sincrónico, ideal para sitios de bajo tráfico.

Portafolio RAG

Por Qué Implementé Tests Automáticos en Mi Portafolio (Django + React)

Este artículo explica la implementación de tests automáticos en un portafolio personal desarrollado con Django y React. Se detalla cómo se utilizan herramientas como `django.test`, `rest_framework.test`, Jest y `@testing-library/react` para asegurar la calidad del código tanto en el backend como en el frontend. Se describe la arquitectura de testing, integrada en el pipeline de GitHub Actions, garantizando que ningún código llegue a producción sin pasar las pruebas. El lector aprenderá sobre las estrategias de testing para modelos, APIs y componentes, así como el mockeo de servicios externos.

Portafolio RAG

Analytics de Comportamiento: Entendiendo Cómo Navegan los Usuarios Mi Portafolio

Este artículo técnico te guía en la implementación de analytics de comportamiento en tu portafolio web, desde lo básico hasta lo avanzado. Aprenderás a usar Google Analytics 4 (GA4) para métricas de página y eventos personalizados con `react-ga4` en React. Profundizarás con heatmaps y grabaciones de sesión usando Microsoft Clarity para entender la experiencia del usuario. Finalmente, se introduce PostHog para un análisis de producto completo, permitiéndote optimizar la interacción y el rendimiento de tu portafolio.

Portafolio RAG

Cinco Bugs en Cadena: Una Noche Arreglando el Admin de Django en Producción

Este artículo técnico detalla la resolución de cinco bugs críticos encontrados en el panel de administración de Django en un entorno de producción. El primer bug, un error 503, se debió a una señal sincrónica que bloqueaba Gunicorn al interactuar con Vertex AI. La solución implicó el uso de `transaction.on_commit()` y hilos daemon. El segundo bug, también un error 503, fue causado por un fallo en la verificación CSRF debido a un problema de parsing en GitHub Actions. Aprenderás sobre el manejo de señales en Django, la configuración de Gunicorn y la depuración de errores en entornos de producc

Portafolio RAG

Bugs de Producción: Cold Start, el Cuerpo Vacío del SPA y la configuración de nginx

Este artículo técnico aborda el problema del "cold start" en una aplicación SPA (Single Page Application) desplegada en Cloud Run, donde la primera carga tras un período de inactividad es excesivamente lenta. Se identifican tres causas principales: el escalado a cero de Cloud Run, el bloqueo del renderizado por una llamada a la API y la falta de un mecanismo de "warm-up". Se implementan soluciones como mantener una instancia activa en Cloud Run, desacoplar el contenido estático del estado de carga y usar `--cpu-boost`. Aprenderás a optimizar el rendimiento de tu SPA y mejorar la experiencia de

Portafolio RAG

De GitHub Copilot a Claude Code: Automatizando la Documentación del Proyecto

Este artículo describe cómo automatizar la documentación de un proyecto usando Claude Code, explorando sus ventajas sobre GitHub Copilot. Se introduce el archivo `CLAUDE.md` para proporcionar contexto persistente al modelo, mejorando la comprensión del proyecto. Se detalla la creación de un management command de Django, `sync_dev_posts`, para sincronizar archivos `.md` con la base de datos y corregir automáticamente los links de navegación en los posts. Aprenderás a usar LLMs para automatizar tareas de documentación y mantener la consistencia entre el código y el contenido del blog.

Portafolio RAG

Pipeline Multi-Ambiente: Staging Antes de Producción

Este artículo aborda el problema de desplegar cambios directamente a producción, introduciendo un entorno de staging para pruebas previas. Se implementa un pipeline CI/CD multi-ambiente con GitHub Actions y Cloud Run, gestionando las diferencias de configuración entre staging y producción. El lector aprenderá a configurar un workflow para desplegar a múltiples entornos, obtener dinámicamente URLs de servicios en Cloud Run y configurar CORS dinámicamente.

Portafolio RAG

sync_dev_posts: Creación Automática de Posts y Metadata con Gemini

Este artículo describe la actualización del comando `sync_dev_posts` para sincronizar posts de desarrollo desde archivos Markdown a una base de datos. La nueva versión elimina el encabezado duplicado, usa el slug de la categoría para la estructura de carpetas y crea posts automáticamente si no existen. Además, integra Gemini para generar excerpts y tags automáticamente, mejorando la metadata y la organización del contenido. Aprenderás sobre manipulación de archivos, interacción con bases de datos y el uso de Gemini para tareas de generación de contenido.

Portafolio RAG

SEO para LLMs: llms.txt y Atom Feed en un portafolio React + Django

Este artículo técnico aborda la optimización SEO para LLMs (Large Language Models) como ChatGPT y Gemini. Explica cómo mejorar la visibilidad de un sitio web ante estos sistemas utilizando dos estrategias clave: la implementación del archivo `llms.txt`, un estándar emergente para comunicar la estructura del sitio a los LLMs, y la creación de un feed Atom dinámico servido desde un backend Django. El lector aprenderá a generar estos elementos en un portafolio React, aprovechando el pre-renderizado HTML, Schema.org y sitemaps existentes.

Portafolio RAG

Búsqueda Híbrida en RAG: BM25, HyDE, Query Expansion y Rank Fusion

Este artículo técnico aborda las limitaciones de la búsqueda puramente vectorial en sistemas RAG, especialmente con keywords exactas, entidades raras y preguntas cortas. Presenta una solución de búsqueda híbrida que combina la búsqueda semántica con la búsqueda léxica, utilizando técnicas como BM25 para la recuperación de información basada en frecuencias de términos. Explica la implementación de BM25 en Python con la librería `rank-bm25` y cómo se integra en un índice personalizado. Además, introduce Reciprocal Rank Fusion (RRF) para combinar los resultados de diferentes métodos de ranking, m

Portafolio RAG

Cómo Rescaté el Chatbot: Reverts, Streaming SSE y Conversaciones Multi-turno

Este artículo relata la depuración de un chatbot que fallaba en producción tras la implementación de conversaciones multi-turno. Se describe cómo un simple revert inicial permitió aislar una serie de problemas subyacentes, desde errores de CORS y health checks mal configurados hasta el manejo incorrecto de streams SSE y la respuesta de la API de Vertex AI. El lector aprenderá sobre estrategias de depuración en producción, la importancia de un buen manejo de errores en streams y cómo solucionar problemas comunes al integrar APIs de LLMs.

Portafolio RAG