Resumen
En este episodio, Cristian (con Rodrigo como coanfitrión; Mati no pudo asistir por enfermedad) explica qué implica llevar una aplicación de GenAI, en concreto un RAG sobre un PDF, desde una prueba de concepto a un entorno productivo. Parte de la demo del capítulo 66, que dejó de funcionar porque OpenAI, LangChain, LlamaIndex y Chroma DB cambiaron sus APIs. Plantea tres frentes de dificultad: infraestructura, código y calidad del resultado. En su comparación de modelos sobre un libro de Daniel H. Pink, Gemini 1.5 Pro da el mejor resultado (a un costo de unos 0,86 USD por consulta), seguido de ChatGPT, GPT-3.5 Turbo y Llama 3. Repasa las métricas que guían las decisiones (latencia, throughput y costo), las bases vectoriales (Pinecone, Chroma DB, MongoDB, Weaviate, Milvus, Faiss) y los frameworks (LangChain, LlamaIndex, Haystack). Cierra con una demo de un RAG más complejo, con monitoreo en Traceloop y MLflow. Su conclusión es que no hay un ganador claro y que, a futuro, los modelos con mucho contexto podrían volver innecesario el RAG.
Capítulos
- 00:00IntroBienvenida; Rodrigo explica qué es un RAG (Retrieval Augmented Generation): traer información extra de una base de datos de PDFs o texto para aumentar lo que sabe el modelo. Cristian cuenta que en su trabajo evalúa aplicaciones sobre LLM y que el desafío es escalarlas.
- 01:50Qué tanto cambia una prueba de concepto a productivo?Una prueba de concepto de chat con PDF funciona con pocas líneas de código, pero pasarla a productivo es un desafío similar al de ML Ops. Rodrigo menciona LLM Ops, el equivalente para modelos de lenguaje. Se presenta la agenda: simple RAG, escalado en infraestructura, datos y código, y un RAG complejo.
- 03:36Repaso de caso de uso: RAG con PDFSe repasa el flujo: documentos pasados a texto, embeddings (vectores) guardados en una base vectorial como Chroma DB, y búsqueda de vectores similares cuyos fragmentos (chunks) se entregan a un LLM como GPT para redactar la respuesta. Rodrigo aclara que el "entender" del modelo es en realidad cálculo de probabilidades. La demo original usaba Streamlit, la API de OpenAI, LlamaIndex, Chroma DB y un embedding de Hugging Face.
- 08:55Escalar a productivoSe plantean los requisitos: carga de grandes volúmenes de PDF (agregar, quitar y actualizar), al menos 10 usuarios que interactúan 7 veces al día con 10 preguntas cada una, respuestas de calidad (concisas y completas) con referencia de la fuente. El caso de uso es extraer los libros recomendados en "A Whole New Mind" de Daniel H. Pink, elegido porque Cristian lo conoce y puede validar el resultado.
- 11:47Expectativa versus realidadLa expectativa era una lista ordenada de libros por capítulo; la realidad fueron errores. En cinco meses cambiaron las APIs de OpenAI, LangChain, LlamaIndex y Chroma DB (funciones deprecadas), y reconfigurar le tomó horas. Explica LangChain como un middleware o framework (librería de Python) para programar agentes y conectar modelos y bases vectoriales.
- 17:18Qué modelo fue el mejor?Ranking: Gemini 1.5 Pro (por lejos), luego ChatGPT, GPT-3.5 Turbo y Llama 3. Gemini entregó la lista completa y bien formateada desde el PDF; GPT solo dio unas cinco referencias y hubo que insistirle. Se destaca que el usuario final hace el mínimo esfuerzo, por lo que conviene enriquecer la pregunta o repreguntar. El RAG casero dio un resultado malo. Gemini es caro: unos 0,86 USD por dos o tres consultas.
- 22:15Corte de luzInterrupción por corte de energía; al volver se retoma la comparación de costos: con OpenAI las pruebas costaron cerca de 0,01 USD y Llama 3 solo implica el costo de energía local.
- 23:12Detalles de los cobros de OpenAIEn la plataforma de OpenAI se ven los cobros: GPT-3.5 Turbo 0,01 USD (recomendado para pruebas por ser barato), pocas iteraciones con GPT-4 Turbo y el embedding Ada. Cristian lo toma como esperanza de poder construir algo similar a Gemini a menor costo.
- 23:46Metricas a considerarThroughput, latencia y costo guían dónde poner el esfuerzo, según el caso de uso y el caso de negocio. Un usuario interno tolera más latencia a cambio de calidad; un servicio comercial puede justificar un modelo caro como Gemini 1.5 Pro si deja margen.
- 25:55Conceptos en la infraestructuraLista de elementos: application serving, balanceador, monitoreo de CPU y RAM, observación del modelo, contenedores, API, autoescalado, bases de datos de usuarios y conversaciones, base vectorial y orquestación. Rodrigo define escalamiento vertical (más RAM, CPU o GPU) y horizontal (más máquinas o contenedores en paralelo). Cristian se enfocará en la base vectorial y el servicio del modelo, y explica la diferencia entre un servicio pagado (como los GPTs personalizados de ChatGPT, más fácil pero menos flexible) y construir con LangChain (gratis pero requiere programar).
- 30:58Segundo corte de luz xDNuevo corte; la transmisión continúa solo con audio.
- 31:16Conceptos en la construcción de RAGPara optimizar un RAG hay un conjunto amplio de temas: búsqueda y filtrado por metadatos, re-ranking, small to big, fine tuning, agentes multi-documento, bases vectoriales, latencia, accuracy e índices. Lo compara con el trabajo del data scientist para mejorar un modelo (feature engineering, otros modelos). Duda si será necesario todo esto cuando los LLM lean documentos completos.
- 32:55Explorando las alternativasLa infraestructura la resuelve otro equipo; el rol de IA generativa es elegir el modelo, la base vectorial y configurar el agente y el prompt. Se menciona que Claude tiene una ventana de contexto muy buena para documentación, aunque hay comentarios de que no siempre da buenos resultados.
- 34:48Componentes de inteligencia artificialEl foco está en la configuración del modelo y la base de datos dentro del esquema general. Hay que probar varios LLM, modelos de embeddings y bases vectoriales, y frameworks como LangChain o LlamaIndex permiten cambiar de modelo (OpenAI, Llama 3) cambiando una función para medir métricas del caso de uso.
- 36:32Algunas bases de datos vectorialesCompara cómo se venden: Pinecone (barato, latencia promedio de 51 ms, 2 USD por millón de escrituras y 8,20 por millón de lecturas), Chroma DB (open source Apache 2.0, gratis, integraciones), MongoDB (orientado a gerentes: seguridad, serverless, menor complejidad; caro), Weaviate (orientado a desarrolladores) y Milvus (open source). Faiss, de Facebook, es una librería de búsqueda vectorial que usan varias de ellas por debajo. En Reddit hay quien critica que las bases vectoriales no son necesarias.
- 42:13FrameworksLangChain es el más popular, con LangSmith (observabilidad) y un servicio de deployment, pero en Reddit lo critican (no escala bien, mala documentación, cambios constantes). LlamaIndex se enfoca en integrar fuentes de datos y modelos; Haystack gana fuerza. También reflexiona sobre que las empresas open source deben cobrar por servicios para sostenerse mientras la inversión en GenAI pide retornos.
- 45:36Un complejo RAGSu caso en construcción usa Mistral, OpenAI y Llama; Chroma DB; LlamaIndex y Ollama para descargar modelos. También Docker, Docker Compose, MLflow, MinIO (similar a S3 pero open source), Traceloop y Streamlit. Menciona la necesidad de un equipo con conocimientos de infraestructura (Kubernetes, APIs, front, servidores).
- 47:34Demo de la aplicaciónSe pueden elegir modelos (GPT Turbo, Llama 3, GPT-4 Turbo, GPT-4) y embeddings (Ada de OpenAI y Nomic). Con GPT-4 y el embedding de OpenAI la respuesta es una lista más clara que la de la presentación. Con Llama 3 y Nomic la respuesta recomienda otros libros y la latencia es más alta, aunque el prompt mejorado ayudó a obtener una lista.
- 51:00TraceloopPermite monitorear tokens por minuto, solicitudes por minuto y costos: Llama 3 cuesta 0, GPT Turbo 0,01 USD y GPT-4 acumula 0,03 USD. El embedding del libro consume cerca de 100.000 tokens. Tiene versión gratis sin tarjeta de crédito.
- 52:14MLFlowRegistra métricas de los experimentos: el texto del libro tiene cerca de 400.000 caracteres (la métrica decía "palabras" por error), el embedding con Nomic local tardó 20 segundos frente a 6 con Ada de OpenAI. Las consultas tardaron 6,8 s con GPT-4, 2,7 s con GPT-4 Turbo y entre 7 y 34 s con Llama 3.
- 53:54CierreCristian resume que la primera parte cubrió las bases y lo que hay que considerar, y que como data scientist se enfoca en elegir modelo, base vectorial y configuración del agente. No hay un ganador final entre las herramientas. La segunda parte compararía métricas de modelos, bases vectoriales y embeddings, con el objetivo de lograr el rendimiento de Gemini a bajo costo. El tema de la próxima semana será preparar clases con Quarto.