Resumen
En este episodio, Mati explica las estrategias para cortar documentos en chunks dentro de un sistema RAG y una técnica de rerank para mejorar la recuperación. El contexto es su proyecto de un asistente RAG para las reglas del juego de mesa Gloomhaven, donde busca alta precisión y poder verificar la fuente. Recorre cinco estrategias, de la más simple a la más compleja: por caracteres, recursiva, específica del documento, semántica y agéntica. Muestra código con LangChain, sentence-transformers y OpenAI. Concluye que ningún método corta perfecto, que conviene combinarlos y que hay que probarlos con preguntas de control, porque no existe una fórmula que diga cuál es mejor. En la parte final muestra que el rerank reordenó los 15 chunks recuperados y puso primero el que respondía la pregunta de la puerta, a cambio de más latencia y costo.
Capítulos
- 00:00Introducción y Visión General del EpisodioMati presenta el tema (chunks para RAG), nacido de un proyecto de asistente para un juego de mesa. Promete teoría, código y una parte sobre rerank si alcanzan.
- 00:43Motivación Detrás del ProyectoQuiere un RAG que le ayude con las reglas de Gloomhaven (juega con un amigo cada dos meses y olvida reglas, como cuántos objetos llevar al escenario). Necesita precisión muy alta para no tener que rechequear el manual, y por eso estudió chunks y rerank. El proyecto aún no está terminado y se ha ido en refactors.
- 03:05Manual y reglas como inputHizo la presentación con GPT a partir de la conversación (salió con errores de ortografía). Muestra que procesó a mano el manual en PDF, en inglés y en español, a un Markdown 100 % texto con comentarios de sección, revisando cada página.
- 06:46¿Qué es un RAG y cómo cortamos los documentos?Explica el flujo: pregunta, base de conocimiento en chunks guardados como vectores en una base vectorial, recuperación y respuesta del LLM. Los chunks tienen límite de tamaño, así que hay que decidir cómo cortar. Las cinco estrategias vienen de un video sobre "Five Levels of Text Splitting"; el código lo hizo él con vibe coding. Una ganancia del RAG frente a subir los documentos a ChatGPT es el control y la privacidad.
- 11:44Método de Segmentación Basado en CaracteresCorte de tamaño fijo, simple y rápido, pero rompe ideas a la mitad. Con chunk size de 500 y overlap 0 genera 296 chunks, y el overlap ayuda a mantener contexto. También prueba CharacterTextSplitter de LangChain, que usa un separador por defecto y corta más limpio. Comentan que la IA suele dar listas de tres elementos.
- 26:32Método de Segmentación RecursivaCorte en cascada con separadores por prioridad (párrafo, línea, espacio, carácter) usando RecursiveCharacterTextSplitter. En vivo prueba separadores por títulos Markdown (#), con resultados mejores. Subrayan que hay que probar con un grupo de preguntas de control, porque no hay fórmula matemática para elegir.
- 37:38Segmentación Basada en Conocimiento del DocumentoUsa la estructura del documento (en este caso Markdown) para cortar por secciones y guardar sección, subsección y página como metadata. Es lo que Mati hizo en su proyecto con código propio; los chunks pueden quedar muy largos y a veces hay que combinarlo con otro splitter. Con el splitter de Markdown de LangChain obtuvo 100 chunks.
- 43:55MemesComentan memes de la comunidad: uno sobre dar acceso a agentes de IA (recomiendan entornos aislados, no producción), un gráfico de torta 3D confuso y uno sobre rerank. Mati dice que el rerank le mejoró un caso claro, aunque aún no termina de implementarlo.
- 48:24Updates vacacionesAviso de una competencia global de machine learning (AI and Data Challenge, calidad del agua con imágenes satelitales, del 20 de enero al 13 de marzo). Conversan sobre el crucero con juegos de mesa (Dune Imperium, Architects) y sus actividades.
- 51:57Segmentación SemánticaPresenta el semantic chunking, que usa embeddings para detectar cambios de tema. Comentan la diapositiva generada por GPT, que tenía errores.
- 54:20Experimento de MatiInterludio en que Rodo y Cris debaten cómo se hace una presentación y Cris replica en vivo la diapositiva en PowerPoint, mientras Rodo recomienda generar presentaciones en HTML con Claude.
- 57:12Continuacion segmentación semánticaRepaso de embeddings y similitud coseno. Implementa el corte con all-MiniLM-L6 (sentence-transformers): separa en párrafos, compara párrafo contra párrafo y los une si son similares o si no llegan al mínimo de 300 caracteres. Genera 243 chunks; reconoce que el código permitiría chunks infinitos.
- 01:06:00Segmentación agénticaUn LLM (GPT-4.1 mini) decide los cortes con un prompt que devuelve JSON. Es el método más caro, y su implementación quedó con errores (JSON inválido, fallbacks, cortes raros). Los demás proponen ideas como resúmenes jerárquicos por capítulo, y Mati dice que valdría la pena con cientos de documentos.
- 01:20:01Explorando Técnicas de RerankEl retrieval trae 15 chunks por coseno y el reranker evalúa pares pregunta-chunk con un único score, luego devuelve solo 5. Con la pregunta "¿una invocación puede abrir una puerta?", el chunk con la respuesta estaba en 5.º lugar y el reranker lo puso primero. Su modelo de embeddings es multilingual-e5-large-instruct con base vectorial Qdrant en Docker. Discuten el costo y la latencia, y Mati quiere devolver 3 chunks como máximo para que el humano valide rápido.
- 01:37:04CierreCris agradece y quiere ver el producto final, con rerank y corte por encabezados. Comentan que la ventaja del RAG es poder citar la referencia exacta del manual, a diferencia de ChatGPT, que puede inventar la sección. Mati dice que aprendió RAG haciendo este proyecto. Se despiden.