Es por eso que, sabes, esto es, creo que esta imagen encaja aquí. Estás, estás pasando en, tienes una cosa original aquí, que estaba en tu base de datos vectorial database, y estás pasando, estás buscando, sabes, estás haciendo una búsqueda de similitud en una operación de estilo de consulta, va a encontrar esa coincidencia y saber que ese vector es el que estamos, que estamos interesados en, en usar. Y probablemente encontrará un par de otros similares también. Si tu, si tu, si tu tamaño de contexto es, es grande. Sí. Así que, tuve que, tuve que incluir este. Tienes que, tienes que decirlo bien, ¿verdad? El círculo de las lay-i's. El tipo de operación constante y flujo de información en estos diferentes componentes es, es básicamente, el entrenamiento activo es una forma, o incluso simplemente como el reentrenamiento de modelos antiguos funciona. Así que, tenemos nuestro modelo original, o tal vez estamos, tal vez estamos creándolo por primera vez. Estamos simplemente precediéndolo con data original, pero tenemos un modelo donde estamos, estamos usando los nuevos data entrantes para aumentar continuamente ese modelo. Miramos los nuevos data que entran y es un paso llamado, creo que se llama atención, donde dices, es esto, es esto, es esta nueva información digna de mantener o, o, o, o usar como, como futura información de entrenamiento. Y puedes usar, puedes usar el ciclo de como modelo a entrada, a almacenar data, a, sabes, relevancia, relevancia /, sabes, si vale la pena mantenerlo, que puede ser un paso manual pero se convierte en este círculo de, creo que puedes, puedes usar esa información para luego mejorar aún más tu modelo. Así que, puedes, puedes básicamente refinar con el tiempo, y alimentar nueva información en este, en este proceso a través de una operación normal de, de estas diferentes piezas del rompecabezas aquí. Y de nuevo, eso es lo que se llama aprendizaje activo. Creo que aprender es un poco más difícil porque requiere un poco de un ciclo de retroalimentación. Pero, también puedes, sabes, alimentar esa información de nuevo en como viejo, viejas versiones de cosas también. O lo siento, como, como, como los, los viejos, o sigo diciendo viejo, los modelos base por ahí, o los que están publicados públicamente, no, no están aprendiendo activamente más, porque, sabes, son públicos y cosas así. Pero estos modelos están cambiando constantemente con el tiempo, y siendo reentrenados con nuevos data. Es sólo a un ritmo mucho más lento que como, un sistema de aprendizaje activo real sería. Genial. Y ahora, esto es, esto es algo que vamos, sabes, vamos a estar construyendo una aplicación RAG aquí en un ratito. Pero tal vez vale la pena tocar en qué, qué es RAG. Así que, RAG significa Generación Aumentada por Recuperación. Y se parece mucho a lo que acabamos de hablar en ese círculo de la vida, cosa de la vida. Así que tenemos, sabes, si estamos usando como un modelo base para hacer nuestra inicial, sabes, generación de incrustaciones y cosas así, eso funciona, sabes, hasta, hasta que tenemos algo nuevo información que como, normalmente, puedes haber, puedes haber intentado usar chat GTP, y dice, Oh, hey, lo siento, mi fecha de corte fue, sabes, no sé qué es estos días, pero diremos como, 17 de julio de 2023. Así que, no tengo ninguna nueva información desde entonces. A veces, la información que está actualmente en tu modelo no es suficiente, y quieres realmente darle más contexto. Así que tiene información que no tenía antes. Este es el, este es el verdadero punto de venta de la Generación Aumentada por Recuperación. Y es real, sabes, sus dos, dos grandes puntos. El texto es, sabes, generación de texto, eso no es único para RAGs necesariamente, eso sucede con cualquier modelo. Pero cualquier cosa que hace la recuperación de información, es realmente donde RAGs tipo de, vienen a, vienen a, vienen a jugar. Y a veces esta información intrival se llama contexto. Así que, cuando pensamos en como, donde podríamos usar algo que también tiene como contextual información relevante para cosas que queremos, a menudo se utiliza para como, pregunta, o respuesta basada en indicaciones, motores de recomendación, sabes, puede ser adaptado a como un tienda específica, o sabes, estoy seguro de que Amazon usa mucho de esto para su tipo de configuración. Resumen de documentos, si estás usando el RAG para buscar información de documentos, puede entonces usar esos como fuentes de contexto para resumir. Y de nuevo, realmente cualquier cosa que necesita acceso a información local que puede no estar ya presente dentro del modelo original. Así que, sé que estamos entrando en las hierbas aquí un poco, pero prometí que iba a mostrar tú tipo de qué incrustaciones y cosas parecen. Aquí es lo que, sabes, digamos que queremos añadir alguna información a un modelo existente que estamos usando. Y no sabe, sabes, qué regalos típicos se compran el Día de San Valentín. Así que, lo que he hecho aquí es, sabes, le doy una entrada y digo que los regalos tradicionales en el Día de San Valentín incluyen, y, sabes, sigo y sigo sobre flores y, sabes, animales de peluche, lo que sea que te guste. Y eso lo alimentaríamos en nuestro LLM, nuestro modelo. Aquí di, como, este es un ejemplo, no tiene que ser este, pero sabes, es lo que tenemos aquí. Ahora, ese LLM, este tokenizador vive dentro del LLM. Pero hay un paso en el proceso llamado tokenización, donde estamos descomponiendo la entrada en, eso no es la forma de decirlo, tokens, que son este concepto nebuloso en AI y ML. Pero esencialmente, es una forma, está tratando de, como, segmentar tus data de entrada en piezas más pequeñas que luego puede usar para generar las incrustaciones. Así que, depende un poco de, como, en el modelo que uses en cómo este tokenizador funciona, pero está tratando de encontrar qué piezas de información aquí pueden ser descompuestas a una incrustación que luego puede ser almacenada. Así que, en este caso, esto es, fui a abrir AI y escribir esto en, y tienen, como, un tokenizador en línea. Este sería el recuento de tokens para lo que esto parece. Y creo que la orientación general que dan es que, como, aproximadamente cuatro caracteres se supone que es un token, pero podemos ver aquí que está bastante por todas partes. Así que, de nuevo, dado estos es, no tienes que preocuparte por esto demasiado. Todo esto sucede un poco detrás de las escenas. Pero pensé que valía la pena, vale la pena mencionar, al menos sólo desde que estamos tipo de entrar en las hierbas aquí un poco. De esos tokens que se generan, entonces pasamos en nuestro generador de incrustaciones, y esto es lo que realmente convierte los tokens en flotantes numéricos que representan los vectores. Y, de nuevo, estamos diciendo que los vectores representan la relativa de cada punto particular dentro de este conjunto de dimensionalidad que tenemos aquí, que es, de nuevo, entrenado contra todos los parámetros y características que juntamos del modelo en sí. Estos flotantes suelen estar entre 1 y 0, aunque no tienen que ser. Ayuda un poco para algunas de las métricas de distancia si están entre 1 y 0. Así que, a veces es posible que quieras normalizar, como, muchos modelos realmente los normalizarán para ti. A veces es posible que tengas que hacerlo tú mismo si te importa la métrica de distancia que hace necesita estar entre 1 y 0, pero, de nuevo, no vas a tener que preocuparte por esa parte demasiado mucho. Es sólo, esto todo tipo de sucede para ti. Y estas incrustaciones se almacenan en el vector database, que acabamos de hablar, y eventualmente, esto es como una tienda de contexto, y cada una de las filas en aquí tienen este array de flotantes de n dimensiones. Así que, de nuevo, todo el proceso por el que estamos trabajando aquí es que queremos tomar este información y almacenarla en la base de datos vectorial database para que podamos usarla para luego hacer la búsqueda de similitud en más tarde. Así que, este es el proceso de añadir información a nuestra tienda. La consulta utiliza una configuración bastante similar aquí, donde consultamos, de nuevo, generamos nuestra incrustación, y luego esa incrustación va a la base de datos vectorial database y encuentra los k más relevantes, dependiendo de lo que hayamos establecido para ese valor, basado en nuestro espacio de dimensionalidad aquí.
Comments