Resumen
Mati presenta un prototipo de asistente de reglas para el juego de mesa Gloomhaven, construido con RAG en una hora y media (con ayuda de GPT) y conectado a Discord como bot. El prototipo responde bien en inglés, pero falla en español porque usa el manual en inglés y un embedding multilingüe. El mensaje central es que un prototipo no equivale a un producto real: la mayor dificultad no es el RAG, sino conseguir y parsear bien los documentos (PDF en español con errores, imágenes, tablas, foros de BoardGameGeek). Se comparan parsers (lectura simple de PDF vs. Docling) y se concluye que digitalizar el manual a mano puede rendir más que algoritmos complejos. También se discuten la evaluación con un set de preguntas etiquetadas, las técnicas de chunking y metadatos, RAG frente a subir el PDF completo a un LLM, y la elección de herramientas. Conclusión: "el problema siempre son los datos".
Capítulos
- 00:00IntroSe presenta el episodio 148: Mati trabaja en un asistente para las reglas de Gloomhaven, un juego con un manual extenso de unas 50 páginas.
- 00:14Visión General de GloomhavenSe presenta el juego y el bot de Discord que Mati armó en una hora y media. Mati le pregunta cuántas cartas se juegan al iniciar el turno, y el bot responde bien (dos cartas, una define la iniciativa). Muestra además los chunks usados para responder.
- 00:55Intro a Rule BotMati demuestra el bot y aclara que es un prototipo hecho casi 100 % con "vibe coding". Explica que un bot de Discord es un usuario con privilegios distintos, que corre en su PC y que usa la API de OpenAI porque no tiene VRAM suficiente para un LLM local. Para los vectores usa FAISS, elegido por ser lo más simple que sugirió GPT.
- 04:58Qué es Gloomhaven?Describe la caja (unos 8 kg), el manual de 52 páginas y el libro de escenarios de unos 150 páginas. El juego está entre los mejor rankeados de BoardGameGeek. Una partida dura unas 3 a 4 horas, y de ahí nace la necesidad de consultar reglas rápido. Explica RAG como buscar en documentos y armar la respuesta con un LLM.
- 10:36Problemas detectadoEl bot no sabe responder "¿cómo es el movimiento de una invocación?" en español. En inglés sí responde, porque los chunks están en inglés y el embedding multilingüe no encuentra bien los de español. Mati explica el esquema básico de RAG (embeddings, base vectorial, retrieval) y que las demos de IA que ocultan las complicaciones "venden algo".
- 15:40Dificultades en problemas realesConseguir los documentos ya es un desafío: el manual en español no oficial está con errores y hay un FAQ oficial larguísimo en BoardGameGeek que requiere scraping (ya lo tiene en JSON). Mati compara su bot con ChatGPT con el mismo PDF y sin él. Sin PDF, ChatGPT inventó la página 53 de un manual de 52 páginas. Con el PDF respondió mejor, y lo que más importa es el formato del input.
- 28:05Análisis del Documento y problemas de parseoUn Markdown bien parseado, con páginas y secciones como metadatos, hace que el bot responda mejor. El manual en inglés en Markdown lo subió otra persona, pero en español no existe. Lo clave es tener los documentos parseados a la perfección, con técnicas de parseo y chunking.
- 33:13Soluciones Manuales vs AutomatizadasSe debate traducir el Markdown, usar OCR sobre fotos o transcribir a mano. Mati quiere los términos exactos del manual en español y por eso traducir no le sirve. La opción manual (copiar y pegar) gana terreno.
- 34:44Explorando Librerías de PDFMati prueba una librería simple de Python que lee el PDF por bloques. El resultado trae mucha basura de las imágenes (números, textos de cartas). Un asistente del chat sugiere Mechanical Turk de AWS para trabajo manual.
- 40:31Desafíos de Aplicación en la Vida RealDiscuten automatizar frente a copiar y pegar a mano ("así es como un programador convierte una tarea en..."). Una solución intermedia puede resolver el 80 % de las páginas. OpenAI tiene equipos dedicados al parseo. Mati prueba Docling (con GPU), que convierte el PDF a Markdown. Quita gran parte de la basura y parsea bien las tablas, pero se queda corto con tantas imágenes. El PDF en español viene bugueado desde la página 4, porque no incluye la fuente. Mati lo reconstruyó cortando páginas con una librería.
- 50:21Prototipado y Soluciones PrácticasEl mensaje de Mati: montar un RAG toma una hora, pero lograr que responda con precisión lleva mucho más. Alguien tiene que digitalizar los documentos a un formato amigable, y eso mejora más el rendimiento que cualquier técnica de chunking. El prototipo tiene 99 líneas de código y ningún control de errores, y Mati lo pidió así a GPT.
- 55:08MemesSección de memes de la comunidad: la confianza ciega en OpenAI, el setup de Linus Torvalds frente al de un influencer, y un meme sobre Gloomhaven (los elementos no se pueden usar en el mismo turno que se crean, la iniciativa y la mala comunicación del equipo). Se prueba el bot con una pregunta sobre comunicación entre jugadores, y falla. Mati resume que su RAG prototipo es hoy peor que subir el documento a GPT.
- 01:03:20Métricas y EvaluaciónRespondiendo a una pregunta de Vic sobre cómo saber si el producto B es mejor que el A, Mati propone un set de preguntas con respuesta etiquetadas a mano como correcta o incorrecta, y comparar la tasa de acierto. Piensa pedir ayuda a la comunidad de BoardGameGeek para etiquetarlas. Manolo cuenta que agregar de tres a cinco preguntas típicas por página mejoró la documentación de onboarding de su empresa.
- 01:08:56Otras Técnicas de parseo para mejorar performanceExplica embeddings y chunking. Usó el más simple (chunks de 1000 caracteres con overlap de 200). Existen técnicas recursivas y semánticas, y chunking con un LLM, más costosas pero precisas. Los chunks deberían llevar metadatos (página, sección). Se menciona un video de YouTube con ocho técnicas. Un participante señala que GPT funciona bien por su ventana de contexto grande (200 mil tokens, hasta 1 millón en otros modelos), pero que RAG es más barato porque no carga todo en cada consulta.
- 01:15:34Consideraciones de Idioma y MetadatosMati quiere separar bases de datos por idioma (español e inglés) con metadatos correlacionados, y un paso previo que detecte el idioma de la pregunta. Piensa agregar un diccionario de cartas en español e inglés. Recorre el código: carga de chunks, FAISS, embeddings de Hugging Face, retriever y QA con GPT-4o mini, y el bot de Discord que solo responde al ser etiquetado. Las pruebas gastaron unos 20.000 tokens.
- 01:28:13CierreConclusión: la dificultad está en los datos, no en el RAG ni en Discord, y hacen falta dos perfiles (experto del dominio y data scientist). Se comenta que Grok 4 limpiaría datos con Grok 3. Se responde cómo un agente consulta sensores vía API con funciones y MCP, y se recomienda elegir herramientas maduras entendiendo los tradeoffs. Mati cierra diciendo que aprende más con problemas reales y que publicará el código en su GitHub.