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:37,299 --> 00:00:38,920 Hola de nuevo a un episodio más de 8 00:00:38,920 --> 00:00:40,100 BIMPRAXIS. 9 00:00:40,200 --> 00:00:43,359 Hoy traemos para este episodio 52, dentro de 10 00:00:43,359 --> 00:00:45,579 nuestra serie dedicada a los RAG, a los 11 00:00:45,579 --> 00:00:49,899 Retrieval Augmented Generation, todo un hallazgo súper potente. 12 00:00:49,939 --> 00:00:52,420 Los grafos como estrategia para estructurar la base 13 00:00:52,420 --> 00:00:53,619 de conocimiento. 14 00:00:53,780 --> 00:00:55,039 La idea de partida, la verdad, es de 15 00:00:55,039 --> 00:00:56,299 esas que te atrapan. 16 00:00:56,299 --> 00:00:58,460 Y si pudiéramos coger un montón de texto 17 00:00:58,460 --> 00:01:02,679 desestructurado, un libro entero, un fajo de artículos, 18 00:01:02,679 --> 00:01:05,219 una página de Wikipedia, y casi por arte 19 00:01:05,219 --> 00:01:08,400 de magia, transformarlo en un mapa visual, un 20 00:01:08,400 --> 00:01:10,459 mapa que nos muestre cómo está todo conectado. 21 00:01:10,859 --> 00:01:12,980 Vamos, parece ciencia ficción. 22 00:01:12,959 --> 00:01:14,420 Pero es que ya está aquí. 23 00:01:14,420 --> 00:01:16,819 Y el objetivo de hoy es precisamente ese, 24 00:01:16,819 --> 00:01:20,180 analizar cómo esta tecnología, que ha recibido un 25 00:01:20,180 --> 00:01:22,879 impulso brutal gracias a los grandes modelos del 26 00:01:22,879 --> 00:01:25,799 lenguaje, está cambiando las reglas del juego. 27 00:01:26,019 --> 00:01:27,920 Y en particular, ¿cómo puede llevar a los 28 00:01:27,920 --> 00:01:31,060 sistemas RAG que venimos explorando a un nivel, 29 00:01:31,060 --> 00:01:33,480 bueno, a un nivel completamente nuevo? 30 00:01:33,459 --> 00:01:35,640 Pues empecemos por lo más básico, porque el 31 00:01:35,640 --> 00:01:38,400 término grafo de conocimiento puede sonar un poco 32 00:01:38,400 --> 00:01:39,599 intimidante. 33 00:01:39,840 --> 00:01:41,340 A mí se me ocurre una analogía que 34 00:01:41,340 --> 00:01:42,879 creo que ayuda mucho a visualizarlo. 35 00:01:43,280 --> 00:01:45,379 Imagina que tienes que explicarle la trama de 36 00:01:45,379 --> 00:01:47,099 Juego de Tronos a alguien. 37 00:01:46,939 --> 00:01:47,939 ¡Uf, qué reto! 38 00:01:48,000 --> 00:01:49,060 Menudo reto. 39 00:01:49,060 --> 00:01:51,040 Podrías darle un resumen de mil páginas o 40 00:01:51,040 --> 00:01:53,780 podrías mostrarle un mapa con los personajes, las 41 00:01:53,780 --> 00:01:56,859 casas, sus alianzas, sus traiciones, las batallas. 42 00:01:57,620 --> 00:01:58,239 Claro. 43 00:01:58,340 --> 00:02:00,599 Con un solo vistazo, esa persona entendería la 44 00:02:00,599 --> 00:02:02,980 red de relaciones que es, en realidad, el 45 00:02:02,980 --> 00:02:04,459 corazón de la historia. 46 00:02:04,219 --> 00:02:05,540 Es la analogía perfecta. 47 00:02:05,540 --> 00:02:08,500 Porque eso es, en esencia, un grafo de 48 00:02:08,500 --> 00:02:09,520 conocimiento. 49 00:02:09,639 --> 00:02:13,520 Formalmente, diríamos que es una representación de entidades, 50 00:02:13,520 --> 00:02:15,840 que son los nodos, y las relaciones que 51 00:02:15,840 --> 00:02:17,659 hay entre ellas, que son las aristas. 52 00:02:18,379 --> 00:02:20,759 Pero en la práctica es exactamente eso, un 53 00:02:20,759 --> 00:02:22,539 mapa de conexiones. 54 00:02:22,539 --> 00:02:25,080 Un nodo puede ser Jaime Lannister, otro Cersei 55 00:02:25,080 --> 00:02:27,439 Lannister, y la arista que los une es 56 00:02:27,439 --> 00:02:31,460 la relación hermano de, y también amante de. 57 00:02:31,460 --> 00:02:34,180 Es una forma increíblemente intuitiva de representar el 58 00:02:34,180 --> 00:02:35,280 conocimiento. 59 00:02:34,979 --> 00:02:37,699 Espera, que aquí me surge la primera duda. 60 00:02:37,939 --> 00:02:39,840 A primera vista, esto me suena a una 61 00:02:39,840 --> 00:02:42,599 base de datos relacional de toda la vida, 62 00:02:42,639 --> 00:02:44,240 pero muy compleja. 63 00:02:44,680 --> 00:02:46,919 ¿Qué es lo que realmente lo diferencia? 64 00:02:47,039 --> 00:02:49,860 ¿No podríamos con suficientes tablas y uniones conseguir 65 00:02:49,860 --> 00:02:51,080 algo parecido? 66 00:02:51,180 --> 00:02:53,319 Sospecho que la respuesta es no, pero no 67 00:02:53,319 --> 00:02:55,460 veo claramente dónde está el límite. 68 00:02:54,659 --> 00:02:57,659 Es la pregunta clave, y la diferencia es 69 00:02:57,659 --> 00:02:58,819 fundamental. 70 00:02:59,159 --> 00:03:02,379 Las bases de datos tradicionales, con sus tablas, 71 00:03:02,379 --> 00:03:05,159 filas y columnas, son una estructura que llamamos 72 00:03:05,159 --> 00:03:06,180 plana. 73 00:03:06,020 --> 00:03:09,280 Son fantásticas para almacenar datos muy estructurados, como 74 00:03:09,280 --> 00:03:11,199 un listado de clientes, por ejemplo. 75 00:03:12,039 --> 00:03:15,500 Pero cuando intentas modelar relaciones complejas y, sobre 76 00:03:15,500 --> 00:03:18,639 todo, heterogéneas como las de Juego de Tronos, 77 00:03:18,740 --> 00:03:19,800 la cosa se dispara. 78 00:03:19,979 --> 00:03:23,580 Necesitarías decenas de tablas, uniones complejísimas y las 79 00:03:23,580 --> 00:03:26,699 consultas se volverían lentísimas e inmanejables. 80 00:03:26,379 --> 00:03:27,719 Se convertiría en un monstruo. 81 00:03:27,879 --> 00:03:28,780 Un monstruo, exactamente. 82 00:03:29,520 --> 00:03:32,879 Un grafo, en cambio, nace para representar redes. 83 00:03:32,419 --> 00:03:35,479 Su estructura nativa son los nodos y las 84 00:03:35,479 --> 00:03:36,319 conexiones. 85 00:03:36,319 --> 00:03:38,539 Esto no solo lo hace más visual, sino 86 00:03:38,539 --> 00:03:42,020 computacionalmente mucho más eficiente para responder a ciertas 87 00:03:42,020 --> 00:03:42,759 preguntas. 88 00:03:42,759 --> 00:03:43,659 Preguntas como ¿cuáles? 89 00:03:43,900 --> 00:03:45,840 Pues preguntas como ¿cuál es el camino más 90 00:03:45,840 --> 00:03:48,419 corto entre este personaje y este otro? 91 00:03:48,680 --> 00:03:50,979 O ¿quién es la persona más influyente de 92 00:03:50,979 --> 00:03:53,840 esta red, la que tiene más conexiones importantes? 93 00:03:54,780 --> 00:03:57,120 Esas son operaciones matemáticas que en un grafo 94 00:03:57,120 --> 00:03:59,620 son naturales y en una base de datos 95 00:03:59,620 --> 00:04:02,400 tradicional una auténtica pesadilla. 96 00:04:02,419 --> 00:04:03,780 Entendido. 97 00:04:03,780 --> 00:04:06,199 O sea, el grafo piensa en relaciones, la 98 00:04:06,199 --> 00:04:08,199 base de datos en registros. 99 00:04:08,199 --> 00:04:09,840 Y lo curioso es que, aunque suene a 100 00:04:09,840 --> 00:04:12,460 tecnología de nicho, la estamos usando todos los 101 00:04:12,460 --> 00:04:14,300 días sin darnos cuenta. 102 00:04:14,300 --> 00:04:16,240 El ejemplo más claro es Google. 103 00:04:16,240 --> 00:04:18,800 Buscas Albert Einstein y a la derecha no 104 00:04:18,800 --> 00:04:21,366 solo te salen enlaces, te aparece esa caja 105 00:04:21,366 --> 00:04:22,546 de información. 106 00:04:22,546 --> 00:04:23,806 ¿El Knowledge Panel? 107 00:04:23,686 --> 00:04:24,346 Sí. 108 00:04:24,526 --> 00:04:27,326 Exacto, con su foto, fechas y lo más 109 00:04:27,326 --> 00:04:31,106 importante, datos conectados, su conyugue, sus hijos, los 110 00:04:31,106 --> 00:04:34,386 premios que ganó, las universidades donde trabajó. 111 00:04:34,166 --> 00:04:35,246 Totalmente. 112 00:04:35,246 --> 00:04:37,706 Esa caja es la punta del iceberg del 113 00:04:37,706 --> 00:04:40,746 gigantesco grafo de conocimiento de Google. 114 00:04:40,846 --> 00:04:42,966 Es lo que le permite entender que Einstein 115 00:04:42,966 --> 00:04:45,886 no es solo una cadena de texto, sino 116 00:04:45,886 --> 00:04:49,046 una entidad conectada a teoría de la relatividad, 117 00:04:49,046 --> 00:04:50,986 premio Nobel y física teórica. 118 00:04:50,926 --> 00:04:53,946 Le permite dar respuestas factuales y con contexto, 119 00:04:53,946 --> 00:04:55,966 no solo una lista de páginas que contienen 120 00:04:55,966 --> 00:04:56,886 una palabra. 121 00:04:57,226 --> 00:04:59,066 Y ver cómo Google lo usa para conectar 122 00:04:59,066 --> 00:05:01,186 hechos me lleva directamente a los problemas que 123 00:05:01,186 --> 00:05:02,746 hemos visto en los RAG tradicionales. 124 00:05:03,386 --> 00:05:05,346 Un RAG estándar es como un bibliotecario muy 125 00:05:05,346 --> 00:05:06,126 rápido. 126 00:05:06,326 --> 00:05:07,766 Le pides algo sobre Apple Inc. 127 00:05:07,766 --> 00:05:09,706 y te trae todos los documentos que lo 128 00:05:09,706 --> 00:05:10,246 mencionan. 129 00:05:10,186 --> 00:05:12,946 Es útil, sí, pero si le pides algo 130 00:05:12,946 --> 00:05:16,006 como, ¿cuáles son los cinco temas estratégicos principales 131 00:05:16,006 --> 00:05:18,266 de Apple discutidos en estos informes anuales de 132 00:05:18,266 --> 00:05:18,926 la última década? 133 00:05:18,926 --> 00:05:20,186 Se queda en blanco. 134 00:05:20,186 --> 00:05:21,566 No puede sintetizar. 135 00:05:21,566 --> 00:05:22,486 No ve el bosque. 136 00:05:22,566 --> 00:05:23,446 Exacto. 137 00:05:23,446 --> 00:05:27,046 El RAG tradicional es bueno encontrando agujas en 138 00:05:27,046 --> 00:05:29,926 un pajar, pero no puede decirte cómo se 139 00:05:29,926 --> 00:05:32,726 relacionan todas las agujas entre sí. 140 00:05:32,726 --> 00:05:35,866 Se le escapan esas consultas que requieren conectar 141 00:05:35,866 --> 00:05:38,666 ideas o eventos a través de múltiples documentos. 142 00:05:38,186 --> 00:05:39,366 documentos. 143 00:05:39,366 --> 00:05:41,546 Entonces, es aquí donde los grafos entran como 144 00:05:41,546 --> 00:05:44,626 el súper bibliotecario que sí ve el panorama 145 00:05:44,626 --> 00:05:45,506 completo. 146 00:05:45,506 --> 00:05:46,826 Precisamente. 147 00:05:46,826 --> 00:05:49,826 Aquí es donde nace el concepto de GraphRag. 148 00:05:49,826 --> 00:05:52,746 El proceso cambia por completo. 149 00:05:52,746 --> 00:05:55,046 En lugar de limitarnos a indexar fragmentos de 150 00:05:55,046 --> 00:05:57,746 texto, el primer paso es construir un grafo 151 00:05:57,746 --> 00:06:00,906 de conocimiento a partir de toda la documentación. 152 00:06:00,906 --> 00:06:03,986 Un LLM lee todos los informes, artículos y 153 00:06:03,986 --> 00:06:08,826 noticias e identifica automáticamente las entidades clave, personas, 154 00:06:08,826 --> 00:06:12,506 productos, empresas, tecnologías, y extrae las relaciones entre 155 00:06:12,506 --> 00:06:12,906 ellas. 156 00:06:13,366 --> 00:06:16,206 O sea, que extrae cosas como Steve Jobs 157 00:06:16,206 --> 00:06:19,826 cofundó Apple o Apple adquirió Next. 158 00:06:19,806 --> 00:06:21,046 Justo. 159 00:06:21,046 --> 00:06:24,306 O el iPhone revolucionó la industria móvil. 160 00:06:24,306 --> 00:06:25,346 Todas esas conexiones. 161 00:06:25,786 --> 00:06:28,486 O sea, primero creamos ese mapa de Juego 162 00:06:28,486 --> 00:06:30,586 de Tronos, pero con los datos de la 163 00:06:30,586 --> 00:06:31,386 empresa. 164 00:06:30,906 --> 00:06:32,326 Exacto. 165 00:06:32,326 --> 00:06:34,706 Y una vez tienes ese mapa, el juego 166 00:06:34,706 --> 00:06:35,766 cambia. 167 00:06:35,766 --> 00:06:38,826 Cuando un usuario pregunta por Apple, el sistema 168 00:06:38,826 --> 00:06:41,286 ya no busca solo la palabra Apple. 169 00:06:41,286 --> 00:06:43,466 Recupera el nodo Apple Inc. 170 00:06:43,466 --> 00:06:45,906 y todo el subgrafo de información que está 171 00:06:45,906 --> 00:06:47,146 conectado a él. 172 00:06:46,906 --> 00:06:47,986 Ah, claro. 173 00:06:48,026 --> 00:06:50,666 El LLM ya no recibe fragmentos de texto 174 00:06:50,666 --> 00:06:54,286 sueltos, sino que recibe un contexto ya estructurado. 175 00:06:54,286 --> 00:06:56,786 Se ancla, por así decirlo, en la estructura 176 00:06:56,786 --> 00:06:57,786 del grafo. 177 00:06:57,606 --> 00:06:59,606 Y supongo que eso le permite responder a 178 00:06:59,606 --> 00:07:02,026 esas preguntas complejas que antes no podía. 179 00:07:02,066 --> 00:07:03,726 De forma espectacular. 180 00:07:03,726 --> 00:07:05,926 Para responder a tu pregunta de cuáles son 181 00:07:05,926 --> 00:07:09,006 los cinco temas principales, el sistema puede analizar 182 00:07:09,006 --> 00:07:11,906 el grafo, ver los clústeres o comunidades de 183 00:07:11,906 --> 00:07:12,946 nodos más densos. 184 00:07:13,226 --> 00:07:13,966 Clústeres. 185 00:07:13,906 --> 00:07:17,366 Sí, grupos de nodos muy interconectados. 186 00:07:17,366 --> 00:07:20,786 Podría encontrar un clúster sobre litigios de patentes, 187 00:07:20,786 --> 00:07:23,286 otro sobre la cadena de suministro en China, 188 00:07:23,286 --> 00:07:25,766 otro sobre el desarrollo del Vision Pro, y 189 00:07:25,766 --> 00:07:28,666 a partir de ahí sintetizar una respuesta coherente 190 00:07:28,666 --> 00:07:29,506 y estructurada. 191 00:07:29,886 --> 00:07:30,746 Ya veo. 192 00:07:30,746 --> 00:07:33,186 Pasamos de la recuperación de información a la 193 00:07:33,186 --> 00:07:34,846 síntesis de conocimiento. 194 00:07:34,846 --> 00:07:36,966 Es un salto cualitativo brutal. 195 00:07:36,926 --> 00:07:39,246 Suena increíble en teoría, pero también me parece 196 00:07:39,246 --> 00:07:41,686 que podría ser computacionalmente carísimo. 197 00:07:41,866 --> 00:07:44,006 Construir y luego consultar un grafo así no 198 00:07:44,006 --> 00:07:45,906 es mucho más lento que una simple búsqueda 199 00:07:45,906 --> 00:07:46,846 semántica. 200 00:07:45,986 --> 00:07:48,626 Es una objeción muy razonable. 201 00:07:48,726 --> 00:07:51,846 La construcción inicial del grafo, el parsing de 202 00:07:51,846 --> 00:07:54,606 todos los documentos, es un proceso intensivo que 203 00:07:54,606 --> 00:07:56,346 se hace una sola vez o de forma 204 00:07:56,346 --> 00:07:56,866 periódica. 205 00:07:57,566 --> 00:08:00,006 Pero una vez construido, las consultas sobre el 206 00:08:00,006 --> 00:08:02,946 grafo son, para muchas de estas preguntas complejas, 207 00:08:02,926 --> 00:08:05,606 muchísimo más rápidas y eficientes que intentar que 208 00:08:05,606 --> 00:08:08,506 un LLM razone sobre miles de fragmentos de 209 00:08:08,506 --> 00:08:10,306 texto inconexos en tiempo real. 210 00:08:10,366 --> 00:08:13,146 O sea, inviertes más al principio para ganar 211 00:08:13,146 --> 00:08:14,706 velocidad y precisión después. 212 00:08:15,166 --> 00:08:15,766 Exacto. 213 00:08:15,766 --> 00:08:17,666 Y no solo se aplica a RAH. 214 00:08:17,826 --> 00:08:20,106 Piensa en la detección de fraude, analizando redes 215 00:08:20,106 --> 00:08:23,286 de transacciones para encontrar patrones anómalos, o en 216 00:08:23,286 --> 00:08:26,546 el descubrimiento de fármacos, mapeando las relaciones entre 217 00:08:26,546 --> 00:08:29,206 genes, proteínas y enfermedades. 218 00:08:29,146 --> 00:08:31,766 Si son tan potentes, la pregunta es obligada. 219 00:08:31,846 --> 00:08:33,506 ¿Por qué estamos hablando de esto como una 220 00:08:33,506 --> 00:08:34,566 revolución ahora? 221 00:08:35,147 --> 00:08:36,826 ¿Por qué no se usaban de forma masiva 222 00:08:36,826 --> 00:08:37,566 hace 10 años? 223 00:08:38,086 --> 00:08:40,293 Porque antes, construir uno era un trabajo de 224 00:08:40,293 --> 00:08:41,193 chinos. 225 00:08:41,193 --> 00:08:43,173 Era un proceso casi artesanal. 226 00:08:43,253 --> 00:08:45,933 Requería equipos de expertos en un dominio concreto, 227 00:08:45,933 --> 00:08:50,433 historiadores, biólogas, financieros, leyendo miles de documentos y 228 00:08:50,433 --> 00:08:53,873 extrayendo manualmente cada entidad y cada relación. 229 00:08:53,973 --> 00:08:56,113 Un cuello de botella carísimo en tiempo y 230 00:08:56,113 --> 00:08:56,933 dinero. 231 00:08:56,953 --> 00:08:59,053 Se intentarían crear atajos, supondo. 232 00:08:59,053 --> 00:08:59,833 Claro. 233 00:08:59,833 --> 00:09:02,233 Primero con sistemas basados en reglas, pero eran 234 00:09:02,233 --> 00:09:03,213 muy rígidos. 235 00:09:02,953 --> 00:09:05,353 Si cambiaba un poco el formato del texto, 236 00:09:05,353 --> 00:09:06,233 todo se rompía. 237 00:09:06,273 --> 00:09:07,113 Frágiles. 238 00:09:07,093 --> 00:09:08,353 Muy frágiles. 239 00:09:08,513 --> 00:09:11,893 Luego llegaron los primeros modelos de Machine Learning, 240 00:09:11,853 --> 00:09:14,053 que mejoraron las cosas, pero tenían un alcance 241 00:09:14,053 --> 00:09:15,073 limitado. 242 00:09:15,113 --> 00:09:17,913 Funcionaban bien para textos muy específicos, casi siempre 243 00:09:17,913 --> 00:09:20,273 en inglés, y se perdían con la ambigüedad 244 00:09:20,273 --> 00:09:22,053 y los matices del lenguaje. 245 00:09:21,973 --> 00:09:25,693 Y entonces llegaron los LLMS modernos y lo 246 00:09:25,693 --> 00:09:26,833 cambiaron todo. 247 00:09:26,933 --> 00:09:29,173 Cambiaron las reglas del juego por completo. 248 00:09:28,693 --> 00:09:32,893 Un modelo como GPT-4O puede leer texto en 249 00:09:32,893 --> 00:09:37,093 múltiples idiomas, entender el contexto, el sarcasmo, las 250 00:09:37,093 --> 00:09:40,153 relaciones implícitas y hacer ese trabajo de extracción 251 00:09:40,153 --> 00:09:42,413 de forma automática y a una escala que 252 00:09:42,413 --> 00:09:43,733 antes era impensable. 253 00:09:43,713 --> 00:09:45,013 Es que esto es lo que lo cambia 254 00:09:45,013 --> 00:09:45,553 todo. 255 00:09:45,533 --> 00:09:46,613 Totalmente. 256 00:09:46,613 --> 00:09:48,893 Recuerdo haber intentado hacer algo parecido hace años 257 00:09:48,893 --> 00:09:52,493 para un proyecto personal, mapeando personajes de novelas. 258 00:09:52,453 --> 00:09:54,513 Fue un trabajo manual de semanas y lo 259 00:09:54,513 --> 00:09:56,453 abandoné por pura extenuación. 260 00:09:56,453 --> 00:09:57,793 Ver que ahora se puede hacer con un 261 00:09:57,793 --> 00:10:00,433 clic es un poco deprimente y alucinante a 262 00:10:00,433 --> 00:10:00,853 la vez. 263 00:10:00,853 --> 00:10:02,653 Te entiendo perfectamente. 264 00:10:02,653 --> 00:10:05,313 Vi una demostración con una herramienta de NeoFatch 265 00:10:05,313 --> 00:10:07,653 que era casi insultante, de lo fácil que 266 00:10:07,653 --> 00:10:08,573 parecía. 267 00:10:08,813 --> 00:10:10,513 Se pegaba el texto de la Wikipedia de 268 00:10:10,513 --> 00:10:12,533 Juego de Tronos y al instante tenías en 269 00:10:12,533 --> 00:10:14,553 pantalla un grafo interactivo. 270 00:10:14,613 --> 00:10:17,113 En el centro, Juego de Tronos, y conectados 271 00:10:17,113 --> 00:10:18,793 a él nodos de colores con datos. 272 00:10:18,833 --> 00:10:23,813 el número de episodios, los premios, los libros. 273 00:10:23,913 --> 00:10:26,173 Se podía explorar toda la saga visualmente. 274 00:10:26,153 --> 00:10:26,893 Era una pasada. 275 00:10:26,973 --> 00:10:29,573 Esa demostración es el ejemplo perfecto de la 276 00:10:29,573 --> 00:10:31,713 democratización de esta tecnología. 277 00:10:31,993 --> 00:10:34,093 Lo que antes costaba meses de trabajo de 278 00:10:34,093 --> 00:10:36,893 un equipo de doctorandos, ahora se puede prototipar 279 00:10:36,893 --> 00:10:39,533 en segundos con las herramientas adecuadas. 280 00:10:39,573 --> 00:10:41,513 Vale, pues vamos a meternos un poco más 281 00:10:41,033 --> 00:10:43,473 en la parte técnica para quienes les gusta 282 00:10:43,233 --> 00:10:45,053 trastear con el código. 283 00:10:45,193 --> 00:10:47,733 El proceso de convertir, por ejemplo, el primer 284 00:10:47,733 --> 00:10:50,153 párrafo de la Wikipedia de Einstein en un 285 00:10:50,153 --> 00:10:51,173 grafo. 286 00:10:51,173 --> 00:10:52,613 ¿Cómo funciona por debajo? 287 00:10:52,653 --> 00:10:55,313 Pues mira, principalmente hay dos maneras de pedirle 288 00:10:55,313 --> 00:10:56,833 a un LLM que haga esto. 289 00:10:56,833 --> 00:10:58,553 La primera es la más directa. 290 00:10:58,553 --> 00:11:01,693 Le escribes un prompt muy detallado pidiéndole extrae 291 00:11:01,693 --> 00:11:04,333 todas las personas, lugares y conceptos de este 292 00:11:04,333 --> 00:11:07,233 texto y devuélvemelos en formato JSON con nodos 293 00:11:06,753 --> 00:11:08,393 y relaciones. 294 00:11:08,393 --> 00:11:09,733 Es el enfoque basado en prompts. 295 00:11:10,253 --> 00:11:11,153 ¿Y el problema es? 296 00:11:11,553 --> 00:11:13,273 Que los LLMs a veces son un poco 297 00:11:13,273 --> 00:11:15,113 creativos, digamos. 298 00:11:14,813 --> 00:11:15,773 Exacto. 299 00:11:15,393 --> 00:11:17,373 No tienes ninguna garantía de que la salida 300 00:11:17,373 --> 00:11:19,313 sea siempre un JSON válido y con la 301 00:11:19,313 --> 00:11:21,293 estructura exacta que necesitas. 302 00:11:21,373 --> 00:11:23,873 A veces puede añadir un comentario, olvidar una 303 00:11:23,873 --> 00:11:26,193 coma y tu código se rompe. 304 00:11:26,153 --> 00:11:27,593 Es inconsistente. 305 00:11:27,573 --> 00:11:28,773 ¿Y la alternativa más robusta? 306 00:11:29,213 --> 00:11:31,773 La alternativa es el enfoque de salida estructurada, 307 00:11:31,773 --> 00:11:33,433 o lo que a veces se llama function 308 00:11:33,433 --> 00:11:35,593 calling, que soportan los modelos más avanzados. 309 00:11:36,173 --> 00:11:38,513 Es la diferencia entre dar instrucciones vagas y 310 00:11:38,513 --> 00:11:40,353 entregar un plano detallado. 311 00:11:40,153 --> 00:11:42,633 A ver, en lugar de pedirle un texto, 312 00:11:42,633 --> 00:11:44,453 defines un esquema formal. 313 00:11:44,153 --> 00:11:47,453 La salida debe ser una lista de objetos 314 00:11:47,453 --> 00:11:51,113 nodo y cada nodo debe tener un ID 315 00:11:51,113 --> 00:11:53,913 de tipo string y un tipo de tipo 316 00:11:53,913 --> 00:11:54,333 string. 317 00:11:55,013 --> 00:11:56,313 Y lo mismo para las relaciones. 318 00:11:56,653 --> 00:11:57,073 Ah, vale. 319 00:11:57,073 --> 00:11:59,373 O sea, obligas al modelo a rellenar tu 320 00:11:59,373 --> 00:12:00,373 plantilla. 321 00:12:00,033 --> 00:12:00,453 Justo. 322 00:12:00,453 --> 00:12:02,793 Lo fuerzas a seguir tu esquema. 323 00:12:03,053 --> 00:12:06,393 El resultado es una salida increíblemente fiable y 324 00:12:06,393 --> 00:12:09,273 consistente, lista para ser usada por tu programa 325 00:12:09,273 --> 00:12:11,413 sin miedo a errores de formato. 326 00:12:11,573 --> 00:12:13,293 Siempre que se pueda, es el camino a 327 00:12:13,293 --> 00:12:13,673 seguir. 328 00:12:13,593 --> 00:12:15,493 Para los que no queremos pelearnos con todo 329 00:12:15,493 --> 00:12:19,033 eso, existen librerías como Landchain con herramientas como 330 00:12:19,033 --> 00:12:22,313 el LLM Graph Transformer, que básicamente es una 331 00:12:22,313 --> 00:12:23,913 caja negra a la que le das texto 332 00:12:23,913 --> 00:12:25,593 y te devuelve el grafo ya hecho. 333 00:12:25,593 --> 00:12:27,253 Es una maravilla de abstracción. 334 00:12:27,253 --> 00:12:30,353 Esa herramienta mira qué LLM estás usando y 335 00:12:30,353 --> 00:12:31,793 decide por ti. 336 00:12:31,793 --> 00:12:34,373 Si soporta salida estructurada, la usa. 337 00:12:34,373 --> 00:12:36,593 Si no, utiliza un sistema de prompts muy 338 00:12:36,593 --> 00:12:38,093 robusto por debajo. 339 00:12:38,093 --> 00:12:39,853 Te quita toda la complejidad. 340 00:12:39,653 --> 00:12:40,973 O sea que el proceso es tan simple 341 00:12:40,973 --> 00:12:43,053 como… ¿Cómo lo describes? 342 00:12:43,253 --> 00:12:46,613 Instalas las librerías, configuras tu LLM con tu 343 00:12:46,613 --> 00:12:48,813 clave de API, le pasas el texto de 344 00:12:48,813 --> 00:12:51,213 Einstein al transformador y ya está. 345 00:12:51,073 --> 00:12:52,273 Y lo que te devuelve es una lista 346 00:12:52,273 --> 00:12:55,873 de nodos como Albert Einstein, tipo persona, y 347 00:12:55,873 --> 00:12:59,700 una lista de relaciones como sujeto Albert Einstein, 348 00:12:59,700 --> 00:13:03,580 relación, desarrolló objeto, teoría de la relatividad. 349 00:13:03,580 --> 00:13:06,180 Exacto, y con eso ya puedes usar una 350 00:13:06,180 --> 00:13:09,040 librería como PyBIS para pintar ese mapa interactivo 351 00:13:09,040 --> 00:13:11,240 de la vida de Einstein, con las personas 352 00:13:11,240 --> 00:13:13,640 en azul, las organizaciones en verde. 353 00:13:13,640 --> 00:13:15,380 Es cuando lo ves visualmente que el concepto 354 00:13:15,380 --> 00:13:17,160 realmente hace clic, lo que me lleva a 355 00:13:17,160 --> 00:13:19,000 un problema práctico. 356 00:13:19,000 --> 00:13:21,240 El primer grafo que generé para probar esto, 357 00:13:21,240 --> 00:13:24,340 sobre Einstein, era un poco caótico. 358 00:13:24,340 --> 00:13:26,580 Una bola de pelo, como se suele decir, 359 00:13:26,580 --> 00:13:29,500 de nodos y líneas, con muchísima información. 360 00:13:29,500 --> 00:13:31,480 ¿Qué pasa si solo me interesan, por ejemplo, 361 00:13:31,480 --> 00:13:34,840 sus afiliaciones académicas y no su vida personal? 362 00:13:34,840 --> 00:13:36,620 ¿Cómo evitamos que el grafo se llene de 363 00:13:36,620 --> 00:13:37,400 ruido? 364 00:13:37,760 --> 00:13:39,740 Es un punto fundamental. 365 00:13:39,740 --> 00:13:41,860 Un grafo no es mejor por tener más 366 00:13:41,860 --> 00:13:42,780 nodos. 367 00:13:42,780 --> 00:13:44,860 Es mejor por tener los nodos y relaciones 368 00:13:44,860 --> 00:13:47,360 correctos para tu objetivo. 369 00:13:47,360 --> 00:13:50,660 La solución es guiar y restringir al LLM 370 00:13:50,200 --> 00:13:51,800 durante la extracción. 371 00:13:52,280 --> 00:13:52,960 ¿Cómo? 372 00:13:53,460 --> 00:13:55,780 ¿Añadiendo más instrucciones al prompt? 373 00:13:56,220 --> 00:13:57,420 Exactamente. 374 00:13:57,420 --> 00:13:59,940 En herramientas como la de LandChain puedes pasarle 375 00:13:59,940 --> 00:14:01,500 parámetros muy específicos. 376 00:14:01,840 --> 00:14:04,160 Por ejemplo, una lista de Allowed Nodes. 377 00:14:05,080 --> 00:14:06,340 ¿Nodos permitidos? 378 00:14:06,340 --> 00:14:06,760 Vale. 379 00:14:06,780 --> 00:14:09,540 Y ahí le dices, solo me interesan los 380 00:14:09,540 --> 00:14:13,100 nodos de tipo persona, universidad y publicación. 381 00:14:13,940 --> 00:14:15,680 Todo lo demás lo ignoras. 382 00:14:16,340 --> 00:14:18,460 Y puedes ser aún más precisa con las 383 00:14:18,460 --> 00:14:18,980 relaciones. 384 00:14:19,760 --> 00:14:23,320 Puedes definir una lista de Allowed Relationships y 385 00:14:23,320 --> 00:14:25,140 especificar patrones completos. 386 00:14:25,380 --> 00:14:28,340 Por ejemplo, solo quiero relaciones que sigan la 387 00:14:28,340 --> 00:14:32,460 estructura Persona trabajó en universidad o Persona publicó 388 00:14:32,460 --> 00:14:33,200 publicación. 389 00:14:33,660 --> 00:14:35,040 Ah, claro. 390 00:14:35,040 --> 00:14:37,540 De esa forma, en lugar del mapa completo 391 00:14:37,540 --> 00:14:39,860 de la vida de Einstein, creas un grafo 392 00:14:39,860 --> 00:14:43,560 específico y enfocado en su carrera académica, mucho 393 00:14:43,560 --> 00:14:45,360 más limpio y útil. 394 00:14:44,880 --> 00:14:46,560 Precisamente. 395 00:14:46,560 --> 00:14:48,920 Y para un sistema RAG, este paso de 396 00:14:48,920 --> 00:14:51,600 refinamiento es absolutamente crucial. 397 00:14:51,920 --> 00:14:54,360 Si alimentas al RAG con un grafo ruidoso 398 00:14:54,360 --> 00:14:57,800 y lleno de conexiones irrelevantes, sus respuestas serán 399 00:14:57,800 --> 00:15:00,120 igual de ruidosas y desenfocadas. 400 00:15:00,460 --> 00:15:02,760 Curar el grafo es curar la calidad de 401 00:15:02,760 --> 00:15:04,020 las respuestas futuras. 402 00:15:03,960 --> 00:15:07,300 Entonces, si recapitulamos el viaje, hemos pasado de 403 00:15:07,300 --> 00:15:09,140 un simple bloque de texto a un mapa 404 00:15:08,640 --> 00:15:13,020 de conocimiento estructurado, interactivo y, sobre todo, útil. 405 00:15:13,020 --> 00:15:14,860 Y esto no es solo un adorno visual, 406 00:15:14,700 --> 00:15:17,640 Es una forma radicalmente más potente de estructurar 407 00:15:17,640 --> 00:15:20,100 el conocimiento para que sistemas de IA como 408 00:15:20,100 --> 00:15:22,300 los RAG puedan razonar sobre él. 409 00:15:23,240 --> 00:15:25,620 Si lo conectamos con la idea general, estamos 410 00:15:25,620 --> 00:15:28,340 presenciando el paso de la recuperación de información 411 00:15:28,340 --> 00:15:30,160 a la síntesis de conocimiento. 412 00:15:30,940 --> 00:15:34,700 Ya no buscamos documentos, buscamos respuestas, conexiones, patrones. 413 00:15:35,420 --> 00:15:39,000 Estamos construyendo un cerebro digital sobre nuestros datos, 414 00:15:39,000 --> 00:15:41,240 una capa de inteligencia que entiende las relaciones 415 00:15:41,240 --> 00:15:42,400 que hay en ellos. 416 00:15:42,120 --> 00:15:45,540 Construir un cerebro digital sobre nuestros datos es 417 00:15:45,540 --> 00:15:46,900 una idea muy potente. 418 00:15:46,880 --> 00:15:49,460 Y nos deja con una reflexión final. 419 00:15:49,460 --> 00:15:52,240 Si esta técnica nos permite mapear los conceptos 420 00:15:52,240 --> 00:15:53,780 de un libro o de todo un campo 421 00:15:53,780 --> 00:15:56,920 científico, ¿qué pasaría si la aplicáramos a nuestros 422 00:15:56,920 --> 00:15:57,660 propios datos? 423 00:15:58,200 --> 00:16:00,980 A nuestras notas personales, a los correos electrónicos 424 00:16:00,980 --> 00:16:03,260 del trabajo, a los documentos de un proyecto. 425 00:16:03,860 --> 00:16:07,200 ¿Qué conexiones ocultas sobre nuestras propias ideas, sobre 426 00:16:07,200 --> 00:16:09,920 la forma en que colaboramos, podríamos descubrir? 427 00:16:10,120 --> 00:16:12,300 Quizás el próximo gran avance no venga de 428 00:16:12,300 --> 00:16:15,380 encontrar nueva información, sino de entender por fin 429 00:16:15,380 --> 00:16:18,400 las relaciones profundas que ya existen en la 430 00:16:18,400 --> 00:16:20,380 información que generamos cada día. 431 00:16:20,460 --> 00:16:22,140 Llegamos al final por hoy. 432 00:16:22,140 --> 00:16:25,020 El podcast BIMPRAXIS está dirigido por un humano, 433 00:16:25,020 --> 00:16:25,920 Julio Pablo Vázquez. 434 00:16:26,580 --> 00:16:28,280 Os esperamos en el próximo episodio. 435 00:16:39,800 --> 00:16:41,940 Y hasta aquí el episodio de hoy. 436 00:16:41,940 --> 00:16:43,520 Muchas gracias por tu atención. 437 00:16:53,280 --> 00:16:55,500 Esto es BIMPRAXIS. 438 00:16:55,500 --> 00:16:57,640 Nos escuchamos en el próximo episodio. 439 00:17:18,740 --> 00:17:18,800 ¡Suscríbete al canal!