1 00:00:10,000 --> 00:00:15,800 Buenas, esto es BIMPRAXIS, el podcast donde el 2 00:00:15,800 --> 00:00:17,920 BIM se encuentra con la inteligencia artificial. 3 00:00:20,519 --> 00:00:23,620 Exploramos la ciencia, la tecnología y el futuro 4 00:00:23,620 --> 00:00:26,559 desde el enfoque de la arquitectura, ingeniería y 5 00:00:26,559 --> 00:00:27,179 construcción. 6 00:00:28,859 --> 00:00:29,519 ¡Empezamos! 7 00:00:30,000 --> 00:00:39,859 Hola humanas y humanos, aquí estamos con un 8 00:00:39,859 --> 00:00:42,039 episodio nuevo de BIMPRAXIS. 9 00:00:42,039 --> 00:00:44,460 En el episodio de hoy, el número 53, 10 00:00:44,460 --> 00:00:46,520 seguimos profundizando en el uso de grafos para 11 00:00:46,520 --> 00:00:48,719 mejorar la calidad de los sistemas de generación 12 00:00:48,719 --> 00:00:51,740 aumentada por recuperación, o RAG para los amigos. 13 00:00:51,740 --> 00:00:54,439 Ya sabéis, dentro de nuestra serie dedicada a 14 00:00:54,439 --> 00:00:55,399 los RAG. 15 00:00:55,399 --> 00:00:57,219 Hoy venimos con un paper académico y varias 16 00:00:57,240 --> 00:01:00,899 fuentes expertas que explican una técnica, bueno, fascinante,arxiv 17 00:01:00,899 --> 00:01:02,020 llamada GraphRAG. 18 00:01:02,020 --> 00:01:04,700 Vamos a desgranar de qué va todo esto. 19 00:01:04,700 --> 00:01:06,420 Para empezar, y para que todo el mundo 20 00:01:06,420 --> 00:01:08,859 se sitúe, recordemos un poco cómo funciona un 21 00:01:08,859 --> 00:01:10,540 sistema RAG básico. 22 00:01:10,540 --> 00:01:13,400 El proceso habitual, según explican las fuentes, es 23 00:01:13,400 --> 00:01:15,980 coger un montón de documentos, partirlos en trocitos 24 00:01:15,980 --> 00:01:19,180 más pequeños, en chunks, sí, eso es, y 25 00:01:19,180 --> 00:01:22,180 luego convertirlos en vectores, en números, y guardarlos 26 00:01:22,180 --> 00:01:24,000 en una base de datos vectorial. 27 00:01:24,000 --> 00:01:26,319 Y cuando alguien pregunta algo, pues el sistema 28 00:01:26,319 --> 00:01:28,560 busca los trozos más parecidos y con eso 29 00:01:28,560 --> 00:01:29,859 genera la respuesta. 30 00:01:29,819 --> 00:01:30,239 Exacto. 31 00:01:30,239 --> 00:01:33,340 Es un sistema de recuperación de información muy 32 00:01:33,340 --> 00:01:34,620 potente, la verdad. 33 00:01:34,879 --> 00:01:37,540 Pero tiene una limitación fundamental. 34 00:01:37,840 --> 00:01:40,000 Y el paper From Local to Global la 35 00:01:40,000 --> 00:01:42,079 identifica muy, muy claramente. 36 00:01:42,340 --> 00:01:45,680 Falla estrepitosamente con lo que llaman preguntas globales. 37 00:01:46,359 --> 00:01:47,379 ¿Preguntas globales? 38 00:01:47,379 --> 00:01:48,799 ¿A qué se refieren con eso? 39 00:01:48,920 --> 00:01:50,859 Pues mira, es una pregunta que no busca 40 00:01:50,859 --> 00:01:53,480 un dato concreto, un trocito de información. 41 00:01:53,000 --> 00:01:56,680 busca una comprensión del conjunto de datos entero. 42 00:01:56,799 --> 00:01:59,420 Por ejemplo, una pregunta como ¿cuáles son los 43 00:01:59,420 --> 00:02:02,900 temas principales de este corpus de documentos? 44 00:02:02,959 --> 00:02:03,760 Ah, claro. 45 00:02:03,799 --> 00:02:06,560 Un RAG convencional buscará fragmentos que tengan las 46 00:02:06,560 --> 00:02:10,060 palabras temas o principales y, bueno, seguramente da 47 00:02:10,060 --> 00:02:13,819 una respuesta bastante pobre o directamente irrelevante, porque 48 00:02:13,819 --> 00:02:15,900 es una tarea de resumen, no de recuperación 49 00:02:15,900 --> 00:02:16,860 pura y dura. 50 00:02:16,819 --> 00:02:18,120 Vale, entiendo. 51 00:02:18,099 --> 00:02:20,000 O sea que el RAG tradicional se queda 52 00:02:20,000 --> 00:02:23,020 corto para entender el bosque, se centra demasiado 53 00:02:23,020 --> 00:02:24,240 en los árboles. 54 00:02:24,280 --> 00:02:26,360 Y es aquí, supondo, donde entra la propuesta 55 00:02:26,360 --> 00:02:27,020 de las fuentes. 56 00:02:27,699 --> 00:02:28,740 GraphRAG. 57 00:02:29,000 --> 00:02:31,599 Lo describen como un proceso en dos pasos. 58 00:02:31,479 --> 00:02:31,639 Sí. 59 00:02:31,639 --> 00:02:34,080 El primer paso es la indexación. 60 00:02:34,740 --> 00:02:36,960 Ahí se usa un modelo de lenguaje grande, 61 00:02:36,960 --> 00:02:40,207 un LLM, para crear un grafo de conocimiento 62 00:02:40,207 --> 00:02:42,487 a partir de todos los datos. 63 00:02:42,707 --> 00:02:44,667 Y el segundo paso es, una vez tienes 64 00:02:44,667 --> 00:02:47,847 ese grafo, usarlo para organizar una recuperación de 65 00:02:47,847 --> 00:02:51,507 información que es muchísimo más inteligente. 66 00:02:51,527 --> 00:02:52,787 Grafo de conocimiento. 67 00:02:52,787 --> 00:02:55,547 Es un término que impone un poco. 68 00:02:55,527 --> 00:02:57,307 Bueno, pero es más sencillo de lo que 69 00:02:57,307 --> 00:02:58,127 parece. 70 00:02:57,967 --> 00:02:58,527 A ver. 71 00:02:58,427 --> 00:03:00,527 A diferencia de una base de datos normal, 72 00:03:00,527 --> 00:03:03,027 con sus filas y columnas, un grafo de 73 00:03:03,027 --> 00:03:05,627 conocimiento tiene nodos y aristas. 74 00:03:06,127 --> 00:03:06,587 Vale. 75 00:03:06,667 --> 00:03:11,007 Los nodos son las entidades, personas, empresas, conceptos. 76 00:03:11,427 --> 00:03:13,607 Y las aristas son las relaciones entre esos 77 00:03:13,607 --> 00:03:14,387 nodos. 78 00:03:14,407 --> 00:03:16,367 Y lo interesante es que tanto los nodos 79 00:03:16,367 --> 00:03:19,227 como las aristas pueden guardar información. 80 00:03:19,267 --> 00:03:21,327 O sea, la línea que los une también 81 00:03:21,327 --> 00:03:22,227 tiene datos. 82 00:03:22,487 --> 00:03:23,207 Exacto. 83 00:03:23,647 --> 00:03:25,487 Un ejemplo que hemos visto todos es la 84 00:03:25,487 --> 00:03:27,567 tarjeta de información que sale en Google o 85 00:03:27,567 --> 00:03:29,847 en Bing cuando buscas una persona famosa. 86 00:03:29,867 --> 00:03:31,127 Ah, la ficha de la derecha. 87 00:03:31,367 --> 00:03:32,307 Esa misma. 88 00:03:32,307 --> 00:03:34,987 Eso se extrae de un grafo de conocimiento. 89 00:03:34,707 --> 00:03:36,687 Aquí es donde la cosa se pone, para 90 00:03:36,687 --> 00:03:38,427 mí, realmente interesante. 91 00:03:39,487 --> 00:03:42,427 La clave de GraphRag no es solo identificar 92 00:03:42,427 --> 00:03:45,467 las entidades en un texto, sino entender las 93 00:03:45,467 --> 00:03:47,687 relaciones que hay entre ellas. 94 00:03:47,687 --> 00:03:49,047 Y una de las fuentes da un ejemplo 95 00:03:49,047 --> 00:03:49,727 que es buenísimo. 96 00:03:50,367 --> 00:03:53,487 La frase es, la líder del PEO, Silvia 97 00:03:53,487 --> 00:03:56,727 Mar, subió al escenario con Luke Jack, fundador 98 00:03:56,727 --> 00:03:58,047 de Save Our Wildlands. 99 00:03:58,607 --> 00:04:02,467 Vale, un sistema normal identificaría a Silvia Mar, 100 00:04:02,467 --> 00:04:06,627 PEO, Luke Jack y Save Our Wildlands, cuatro 101 00:04:06,627 --> 00:04:07,547 entidades. 102 00:04:07,867 --> 00:04:10,607 Pero aquí un modelo como GPT-4 va mucho 103 00:04:10,607 --> 00:04:11,067 más allá. 104 00:04:11,907 --> 00:04:15,187 Entiende la semántica, entiende que la relación entre 105 00:04:15,187 --> 00:04:18,427 Silvia Mar y el PEO es fuerte porque 106 00:04:18,427 --> 00:04:19,587 es la líder. 107 00:04:19,747 --> 00:04:21,547 Claro, es una relación estructural. 108 00:04:21,627 --> 00:04:22,547 Eso es. 109 00:04:22,547 --> 00:04:25,127 En cambio, su relación con Save Our Wildlands 110 00:04:25,127 --> 00:04:29,087 es débil, es circunstancial, solo comparte escenario con 111 00:04:29,087 --> 00:04:30,247 su fundador. 112 00:04:30,247 --> 00:04:31,587 ¡Ostras, qué bueno! 113 00:04:31,027 --> 00:04:34,247 Esto lo que crea es un grafo ponderado, 114 00:04:34,247 --> 00:04:36,727 con relaciones que tienen distinta fuerza. 115 00:04:36,947 --> 00:04:38,687 Y eso es mucho más rico que una 116 00:04:38,687 --> 00:04:41,487 simple red de palabras que aparecen juntas. 117 00:04:41,787 --> 00:04:44,107 Y después, sobre este grafo se aplican técnicas 118 00:04:44,107 --> 00:04:46,927 de Machine Learning de grafos para agrupar los 119 00:04:46,927 --> 00:04:49,087 nodos en comunidades semánticas. 120 00:04:49,507 --> 00:04:50,687 Vale, espera. 121 00:04:50,687 --> 00:04:51,827 Comunidades semánticas. 122 00:04:51,827 --> 00:04:52,447 Sí. 123 00:04:52,447 --> 00:04:55,527 Básicamente agrupa los conceptos que están muy relacionados 124 00:04:55,527 --> 00:04:58,407 entre sí, creando como temas o clústeres. 125 00:04:58,847 --> 00:05:00,827 Y eso te da una estructura jerárquica que 126 00:05:00,827 --> 00:05:03,007 te permite hacer consultas a distintos niveles de 127 00:05:03,007 --> 00:05:03,907 detalle. 128 00:05:03,667 --> 00:05:05,687 La teoría suena muy bien, pero vamos a 129 00:05:05,687 --> 00:05:06,607 la práctica. 130 00:05:06,607 --> 00:05:09,327 Las fuentes incluyen demostraciones que muestran la diferencia 131 00:05:09,327 --> 00:05:11,467 de una forma, bueno, espectacular. 132 00:05:11,747 --> 00:05:13,927 La primera usa un conjunto de 3.000 artículos 133 00:05:13,927 --> 00:05:16,035 sobre el conflicto entre Rusia y Ucrania. 134 00:05:16,715 --> 00:05:18,415 Un tema muy denso, sí. 135 00:05:18,415 --> 00:05:21,035 Y la pregunta es, ¿qué es Novorossia y 136 00:05:21,035 --> 00:05:22,815 cuáles son sus objetivos? 137 00:05:23,115 --> 00:05:25,515 Los resultados aquí son reveladores. 138 00:05:25,515 --> 00:05:28,395 Un RAG básico, sin más, falla. 139 00:05:28,395 --> 00:05:30,215 No sabe qué responder. 140 00:05:30,475 --> 00:05:34,435 Un RAG que llaman mejorado o afinado, responde 141 00:05:34,435 --> 00:05:36,135 a la primera parte, te explica qué es 142 00:05:36,135 --> 00:05:38,575 Novorossia, pero no llega a la segunda. 143 00:05:38,495 --> 00:05:39,315 ¿Y Graf RAG? 144 00:05:39,735 --> 00:05:41,255 La diferencia es abismal. 145 00:05:41,255 --> 00:05:43,695 No solo explica qué es Novorossia, sino que 146 00:05:43,695 --> 00:05:46,195 da una lista de objetivos súper específicos que 147 00:05:46,195 --> 00:05:47,455 ha sacado de los documentos. 148 00:05:47,735 --> 00:05:48,135 ¿Ah, sí? 149 00:05:48,135 --> 00:05:48,695 ¿Como cuáles? 150 00:05:49,155 --> 00:05:51,955 Pues mira, la Compañía Nacional de Televisión de 151 00:05:51,955 --> 00:05:55,775 Ucrania, una emisora de radio, un banco privado, 152 00:05:55,775 --> 00:05:58,295 propiedades de Roshan e incluso planes de ataques 153 00:05:58,295 --> 00:05:59,235 en Odessa. 154 00:05:59,315 --> 00:05:59,995 ¡Guau! 155 00:05:59,995 --> 00:06:02,235 Y supongo que lo más importante es que 156 00:06:02,235 --> 00:06:04,955 puedes rastrear de dónde saca cada cosa. 157 00:06:04,835 --> 00:06:05,995 Para evitar alucinaciones. 158 00:06:06,335 --> 00:06:07,855 Totalmente. 159 00:06:07,855 --> 00:06:10,275 Cada afirmación está vinculada al fragmento de texto 160 00:06:10,275 --> 00:06:11,295 original. 161 00:06:11,295 --> 00:06:13,615 Esto te permite verificar la información, que es 162 00:06:13,615 --> 00:06:14,255 crucial. 163 00:06:14,255 --> 00:06:15,715 Y esto nos lleva de vuelta a las 164 00:06:15,715 --> 00:06:18,255 preguntas globales, al gran problema. 165 00:06:18,255 --> 00:06:21,235 Le preguntaron al sistema, ¿cuáles son los cinco 166 00:06:21,235 --> 00:06:23,055 temas principales de los datos? 167 00:06:23,055 --> 00:06:26,695 Y aquí, el RAG básico dio respuestas genéricas, 168 00:06:26,695 --> 00:06:28,895 cosas como, estado de la economía rusa. 169 00:06:28,895 --> 00:06:31,915 ¿Cuándo el 80% de los artículos iban sobre 170 00:06:31,935 --> 00:06:33,275 el conflicto. 171 00:06:33,275 --> 00:06:34,195 Exacto. 172 00:06:34,195 --> 00:06:36,055 Ignoró el tema principal. 173 00:06:36,055 --> 00:06:38,875 GraphRAG, en cambio, identificó el conflicto como el 174 00:06:38,875 --> 00:06:40,335 tema central, sin dudarlo. 175 00:06:40,335 --> 00:06:43,135 Claro, porque tiene esa visión de conjunto. 176 00:06:43,135 --> 00:06:44,835 Hay una contrapartida, eso sí. 177 00:06:44,835 --> 00:06:47,555 GraphRAG es más costoso computacionalmente. 178 00:06:47,555 --> 00:06:48,375 Mucho más. 179 00:06:48,375 --> 00:06:50,995 En el ejemplo, usó 50.000 tokens y tardó 180 00:06:50,995 --> 00:06:52,555 71 segundos. 181 00:06:52,555 --> 00:06:55,855 El RAG básico, 5.000 tokens y 8 segundos. 182 00:06:55,855 --> 00:06:58,155 Uf, es bastante diferencia. 183 00:06:58,155 --> 00:07:00,835 Sí, pero la calidad y la corrección de 184 00:07:00,835 --> 00:07:04,015 la respuesta son inmensamente superiores. 185 00:07:04,015 --> 00:07:05,435 Al final es un trade-off. 186 00:07:05,475 --> 00:07:07,775 ¿Quieres rapidez o quieres precisión? 187 00:07:07,775 --> 00:07:10,675 Hay otra demostración que me pareció muy visual. 188 00:07:10,675 --> 00:07:12,975 Se hizo con las transcripciones del podcast Behind 189 00:07:12,975 --> 00:07:14,535 the Tech de Kevin Scott. 190 00:07:14,535 --> 00:07:16,935 Sí, ese caso es fascinante. 191 00:07:16,955 --> 00:07:19,535 Ahí el LLM construyó el grafo de conocimiento 192 00:07:19,535 --> 00:07:20,655 desde cero. 193 00:07:20,655 --> 00:07:23,175 En la visualización, cada nodo era una entidad 194 00:07:23,175 --> 00:07:26,835 y los colores representaban, digamos, los temas, las 195 00:07:26,835 --> 00:07:28,515 particiones semánticas. 196 00:07:28,515 --> 00:07:31,515 Y lo fascinante es cómo agrupó las cosas. 197 00:07:31,515 --> 00:07:34,555 Sí, porque identificó una comunidad semántica sobre biología 198 00:07:34,435 --> 00:07:36,595 y en el mismo clúster, en el mismo 199 00:07:36,595 --> 00:07:39,275 grupo, junto a dos expertos diferentes. 200 00:07:39,275 --> 00:07:40,535 Drew Endy y David Baker. 201 00:07:40,915 --> 00:07:42,775 Vale, ¿y qué tiene eso de especial? 202 00:07:42,775 --> 00:07:45,095 Pues que aparecieron en episodios distintos. 203 00:07:45,095 --> 00:07:46,675 Nunca hablaron entre ellos. 204 00:07:46,675 --> 00:07:48,955 Espera, ¿me estás diciendo que el sistema los 205 00:07:48,955 --> 00:07:50,655 agrupó solo porque se dio cuenta de que 206 00:07:50,655 --> 00:07:52,783 los dos hablaban de lo mismo, aunque fuera 207 00:07:52,263 --> 00:07:55,543 en momentos diferentes y sin mencionarse? 208 00:07:55,543 --> 00:07:57,003 Exactamente eso. 209 00:07:57,003 --> 00:07:58,983 No se basó en que sus nombres aparecieran 210 00:07:58,983 --> 00:07:59,923 juntos. 211 00:07:59,923 --> 00:08:02,643 Se basó en que entendió las conexiones temáticas 212 00:08:02,643 --> 00:08:05,023 que había debajo de sus conversaciones. 213 00:08:05,023 --> 00:08:06,563 Es la prueba de que de verdad entiende 214 00:08:06,563 --> 00:08:07,303 el contenido. 215 00:08:07,303 --> 00:08:08,383 Desde luego. 216 00:08:08,383 --> 00:08:10,843 Demuestra que no solo recupera, sino que comprende. 217 00:08:10,843 --> 00:08:13,623 Entonces, después de ver todo esto, ¿qué significa? 218 00:08:13,623 --> 00:08:15,263 ¿Cuál es la gran conclusión? 219 00:08:15,263 --> 00:08:18,163 Significa que GraphIRG no es sólo una mejora 220 00:08:18,163 --> 00:08:20,363 incremental, es un cambio de paradigma. 221 00:08:20,363 --> 00:08:21,003 ¿De qué manera? 222 00:08:21,003 --> 00:08:23,323 Pasamos de la recuperación local de fragmentos de 223 00:08:23,323 --> 00:08:25,183 texto, que es lo que teníamos, a la 224 00:08:25,183 --> 00:08:28,343 creación de una memoria estructurada, una comprensión global 225 00:08:28,343 --> 00:08:29,543 de todo un corpus. 226 00:08:29,543 --> 00:08:31,083 ¿De lo local a lo global, como el 227 00:08:31,083 --> 00:08:31,763 título del paper? 228 00:08:31,763 --> 00:08:34,463 Justo eso, es exactamente lo que resume. 229 00:08:34,463 --> 00:08:37,623 Esto plantea una pregunta interesante, creo. 230 00:08:37,623 --> 00:08:39,563 Todo esto se basa en que un LLM 231 00:08:39,563 --> 00:08:42,883 construye estos grafos de forma autónoma, Pero para 232 00:08:42,883 --> 00:08:45,303 dominios de alto riesgo como la medicina o 233 00:08:45,303 --> 00:08:47,923 el derecho, ¿podríamos fiarnos de un sistema así? 234 00:08:48,883 --> 00:08:51,043 Esa es la gran pregunta. 235 00:08:51,043 --> 00:08:53,483 ¿Podemos ver sistemas híbridos en el futuro? 236 00:08:53,703 --> 00:08:55,783 Sistemas que combinen la escala de la IA 237 00:08:55,783 --> 00:08:58,683 con la precisión y la verificación del conocimiento 238 00:08:58,683 --> 00:08:59,543 humano. 239 00:08:59,543 --> 00:09:00,523 ¿Cómo funcionaría eso? 240 00:09:01,343 --> 00:09:04,143 Pues imagina un sistema donde el LLM propone 241 00:09:04,143 --> 00:09:06,763 un primer borrador del grafo y luego expertos 242 00:09:06,763 --> 00:09:10,863 humanos, médicos o abogados lo revisan, lo curan… 243 00:09:10,423 --> 00:09:11,923 Lo validan. 244 00:09:11,783 --> 00:09:12,923 Exacto. 245 00:09:12,923 --> 00:09:15,663 Creando sistemas RAG que serían aún más fiables 246 00:09:15,663 --> 00:09:16,883 y robustos. 247 00:09:16,883 --> 00:09:18,243 Podría ser el siguiente paso. 248 00:09:18,303 --> 00:09:20,823 Bueno, pues con esa reflexión nos despedimos por 249 00:09:20,823 --> 00:09:20,983 hoy. 250 00:09:20,983 --> 00:09:23,163 No sin antes recordar que las voces que 251 00:09:23,163 --> 00:09:25,923 escuchas son generadas por una IA, por Notebook 252 00:09:25,923 --> 00:09:26,963 LM. 253 00:09:26,963 --> 00:09:28,463 Pero el podcast no se genera de forma 254 00:09:28,463 --> 00:09:29,443 automática. 255 00:09:29,443 --> 00:09:30,983 Detrás de todo lo que escuchas hay un 256 00:09:30,983 --> 00:09:32,523 humano, que os manda saludos. 257 00:09:32,523 --> 00:09:35,443 Se llama Julio Pablo Azquez y está encantado 258 00:09:35,443 --> 00:09:36,983 de que el podcast cada vez tiene más 259 00:09:36,983 --> 00:09:38,043 suscriptores. 260 00:09:38,043 --> 00:09:39,803 Muchas gracias y hasta el próximo episodio. 261 00:09:51,343 --> 00:09:53,463 Y hasta aquí el episodio de hoy. 262 00:09:53,463 --> 00:09:55,063 Muchas gracias por tu atención. 263 00:10:04,823 --> 00:10:07,043 Esto es BIMPRAXIS. 264 00:10:07,043 --> 00:10:09,183 Nos escuchamos en el próximo episodio. 265 00:10:29,963 --> 00:10:30,003 SUSCRÍBETE 🙏