Loading video player...
Hola a todos, gracias por acompañar
nuestra sesión de hoy. Me llamo Larisa,
soy coordinador de eventos en Reactor y
les saludo desde Brasil. Antes de
empezar tengo información rápida que
compartir. Por favor, tómese un momento
para leer nuestro código de conducta.
Buscamos promover un ambiente respetuoso
tanto para nuestra audiencia como para
los presentadores. Le pedimos que sea
cuidadoso con sus comentarios, que se
mantenga profesional y centrado en el
tema.
Estén atentos al chat, les compartiremos
enlaces y revisaremos las preguntas para
que sean contestadas en la sesión.
La sesión se está grabando y estará
disponible para verla en 48 horas aquí
en nuestro canal de YouTube. Ahora le
cedo la palabra a nuestra presentadora
de hoy.
Entonces les damos la bienvenida aquí a
Hola, hola, hola. ¿Qué tal? ¿Cómo
estamos? Saludos, gente, aquí viendo el
chat. Saludos Buenos Aires, Perú. ¿Qué
más? ¿Qué más? ¿Qué más está por aquí?
España, Chile. Qué genial. Venezuela,
más Argentina, genial. Costa Rica, qué
bien. Saludos Ecuador. Saludos a Mitr,
saludos Cuenca, saludos Medellín.
¿Qué más hay por acá? México,
California.
A ver, El Salvador. Qué bien, qué bien.
Un saludo muy especial para los los
ecuatorianos aquí desde otra
ecuatoriana, ¿no? Saludos, Cuenca.
Saludos Universidad de la SUA.
Bueno, para hoy tenemos la segunda
sesión de la serie de Python más AI que
estamos haciendo aquí de manera oficial
con Microsoft. Lo estamos haciendo en
inglés, que son las sesiones que estamos
dando por la mañana. Bueno, depende de
dónde estén, pero eso fue por la mañana.
Y lo mismo, pero en español,
que sería esta sesión de ahí, bueno,
esta serie de sesión de ahora, ¿no?
Hicimos, empezamos ayer con LLM hablando
de modelos.
Hoy día tenemos eh los vectores o lo que
se conoce como vectoriales. Mañana
tenemos modelos de visión. La semana que
viene tenemos rag, salidas
estructuradas, calidad de seguridad. Y
para la tercera y última semana, ah,
llamadas de herramientas o tool calling,
como se conoce, agentes y model
protocol, que es lo más popular en esas
dos últimas, creo que es son temas muy
muy populares en este estos dos tr meses
que han pasado, ¿no?
Y entonces antes de empezar, yo sé que
me van a pedir las grabaciones,
diapositivas, todo eso. Entonces, acá
tenemos este link. Ahí les tengo un un
post con una tablita que tiene todo lo
que necesitan.
También les pido que le den like al
stream para que nos ayuda ahí con los
metrics.
Y también tenemos un Discord acá abajo,
este link al esquina inferior derecho
porque van a tener preguntas, a lo mejor
no nos quede tiempo para responder a
todas, pero ahí en es el Discord tenemos
un canal que se llama español y estamos
ahí respondiendo todas sus preguntas,
charla más casual.
Ayer compartimos muchos recursos,
libros. Alguien estaba pidiendo
recomendaciones de libros acerca de
matemáticas en cuanto a temas de de AI y
bueno, compartimos mucho por ahí, así
que vayan por allá, dicen, "Hola, ¿cómo
están? Soy tal tal tal desde tal y ya,
genial ahí con nuestra comunidad. Si es
que quieren hacerme preguntas
directamente, yo estoy en Discord, si no
LinkedIn o también en YouTube, tengo ahí
mi canal con más tutoriales de Python y
Ea. Okay, empecemos. ¿Qué vamos a cubrir
hoy?
Eh, los vectorings,
¿qué son y para qué sirven? ¿Cómo se
generan? ¿Cómo medimos? ¿Qué tan
parecidos son? ¿Cómo encontramos lo más
parecido? Y técnicas para optimizar
edings. ¿Okay?
A ver,
solo para darles una
un aviso
que vamos a meternos un poquito a la
matemática hoy, solo un poco, solo la
versión anterior que hicimos de esta
sesión en marzo había mucho más y la
gente se estaba confundiendo demasiado.
Entonces lo revisamos y esta vez lo
cambiamos a hacer un poco más práctico y
menos teoría.
Pero todavía hay un poco de matemática
porque, bueno, eso es la inteligencia
artificial, especialmente cuando estamos
trabajando cons, hay matrices y todo
eso ¿no?
Tenemos entornos.
Este es otro diferente al que utilizamos
ayer. Lo pueden acceder con este enlace
de acá arriba. Ahí va a haber un botón
que dice code y pueden dar clic en
create code space on main. Esperan unos
minutitos porque ahí tiene que
configurarse el entorno, pero todo esto
es dentro del navegador,
par minutitos dependiendo de su red y de
ahí pueden utilizar todo, ¿no? Si es que
aún se confunde, yo tengo un video ahí
guía acá abajo, pueden dar clic ahí,
revisar, me ayudan con un like en ese
video también. Ya, genial. Okay,
empecemos. ¿Qué son y para qué sirven?
La clave para entender
los vector embedings o los vectores
los embedings vectoriales
es que nosotros como humanos
hablamos con con palabras, ¿no es
cierto? Yo les hablo a ustedes, digo,
"Hola, ¿cómo están?" Ustedes me dicen,
"Todo bien, genial, estamos aquí en
clase, ¿no es cierto?"
Pero cuando estamos
teniendo interacciones con un modelo,
¿no es cierto? Como cuando van a
chatpt.com o cloud.ai o Gemini, lo que
sea lo que estén utilizando, el modelo
en sí puede interpretar
lo que están diciendo, pero tiene que
primero
hacer una conversión de esas palabras a
números, porque para ellos su lenguaje
son números. Solo nosotros interactuamos
y y vemos los resultados en palabras,
pero todo el proceso
que pasa por medio de lo que ustedes
dicen y lo que se les retorna pasa en
números y esos números se conocen como
estos
vectores, ¿no es cierto? Esa es toda la
magia. Okay, entiendan eso, ¿no?
Entonces, los vector embeding
representan nuestro lenge en el mundo
numérico de la inteligencia artificial.
logran no solamente capturar las letras,
pero también el significado de las
palabras, porque, por ejemplo, yo digo
hola. Hola no solamente es H o la A,
también significa significa que un
saludo. Estoy saludando, ¿no es cierto?
Entonces estos números logran capturar
eso y son muchos, muchos números, no
simplemente son tres de aquí, ¿no?
Y también permiten buscar no por cómo se
escribe una palabra, sino por lo que
significa y es un es muy importante y es
uno de los avances muy importantes de
esa tecnología que no simplemente hola
es muy similar a otras palabras que
tengan cuatro letras que empiecen con h
que terminen con a, sino por el
significado, ¿no es cierto? Y todo esto
es gracias a que podemos capturar el
significado de las palabras en estos
números. ¿Okay?
¿Y para qué sirven? Ustedes dirán, pues,
okay obviamente
entienden números, pero y aquí a mí,
¿por qué me importa eso? No,
en las aplicaciones
se usan estos números para mejorar la
búsqueda y las respuestas. Recuerden,
porque todo eso tiene significado. Para
los modelos es mucho más eficiente
comparar números con números que letras
con letras, porque ellos entienden los
números, ¿no es cierto?
Entienden la pregunta del usuario por
significado, no por palabras exactas.
Encuentran los fragmentos más relev
relevantes en los documentos largos y le
dan contexto al modelo generativo para
responder con precisión y citas.
Entonces, por ejemplo, si por eso es que
yo voy y busco en una página para hacer
compras o lo que sea, iPad para niños,
obviamente aquí en las opciones que me
sale no hay iPads, pero hay, por
ejemplo, este tablet aquí, esta otra
tablet acá, esta otra tablet de acá y
esto es gracias a porque cuando yo hago
la búsqueda, el modelo entiende, okay,
tengo ahora estas palabras, lo convierto
a números y en estos números tengo este
significado y significado cabe con el
significado representado por los números
de estos artículos aquí, ¿okay? Y por
eso nosotros nos conviene, ustedes van a
utilizar mucho, mucho, mucho los estos
números, vectors embedings en sus
aplicaciones. Entonces, sabemos qué son,
sabemos por qué importan, pero cómo se
generan, ¿no es cierto? Lo bueno es que
ayer vimos que podemos interactuar con
un par de líneas con modelos para
obtener esto de los chat completions,
¿no es cierto? y no es tan diferente a a
cómo se podría hacer algo así con al
estos números, ¿no?
Pero ayer cuando hicimos esos ejemplos
estábamos trabajando con otro tipo de
modelo, un modelo que su caso de uso o
su o su propósito es generar esos esas
respuestas y devolverlos. Hay modelos
específicamente
entrenados para este caso de uso que son
para crear estos números, ¿no es cierto?
Los embedings vectoriales se generan
usando modelos entrenados que convierten
texto o imágenes en vectores. A lo mejor
ustedes han visto que se puede hacer una
búsqueda por imágenes, toman una foto
ahí con el con su móvil, quizás lo
mandan a Google o lo que sea y pueden
hacer búscas en vez de mandar texto, ¿no
es cierto? en chachi pit también lo
pueden hacer, ¿no?
Lo que está pasando por debajo de ahí es
que la aplicación toma la imagen y dice,
"Bueno, lo tengo que convertir a
números. Si es texto, lo tengo que
convertir a números. Si es un PDF, lo
tengo que convertir a números. Si es lo
que audio, lo que sea, lo primer paso es
siempre convertir a números, ¿no es
cierto?
Entonces, como habíamos visto antes,
un, si yo digo un perro grande, por
medio de aquí hay un modelo, aunque yo
le estoy mandando eso, que es un modelo
debedings,
solo te enfoca en
generar estos números y ahora el modelo
tiene que aquí tengo los números,
¿cierto?
Si nos pasamos a un ejemplo que tenemos
nosotros, yo me voy a pasar directo al
al repositorio acá que lo tengo abierto.
Este es el ejemplo que se llama generate
a guion bajo en bettings. A ver,
generate gu bajo en bettings. Genial. Lo
voy a hacer un poquito más grande.
A ver qué me dice el chat.
Con los vector btings. Es lo que se hace
rag. Ay, por ahí van. Ay, por ahí van.
¿Cómo se dice? Como los pedazos del
puzzle, poco a poco entendiendo. Ahí me
gusta eso. Es más, vamos a hablar de Rag
en una sesión específica y y es con
propósito que hemos hecho en este orden,
¿no?, de los temas. Pero bueno,
ustedes est van a abrir este repositorio
dentro de Goaces. Entonces, lo que
tienen que ejecutar es este de acá
arriba para que puedan trabajar con
Gearhobel. Recuerden que ayer hablamos
de que Ghop Models tiene, ustedes pueden
usar los modelos, la mayoría de modelos
que existen en el catálogo ahí en
Gearhop Malos, gratis, solo que tienen
límites, pero con el propósito de
aprender, pues genial, ¿no? Le dan play
acá. Si es que no han trabajado con
Juper Notebook, es una tecnología muy
genial para tener su código y lo pueden
ejecutar y pueden poner ahí texto y
descripciones y todo eso. Muy bueno para
esto de los demos y para las clases y me
gusta mucho utilizar esto, pero porque
yo estoy trabajando de manera local, voy
a ejecutar este de aquí que dice
configura el open AI client con modelos
de Azure Open AI porque yo lo estoy
utilizando ah con modelos que están
hosted en Ash Open AI. Recuerden, ayer
hablamos de diferentes maneras de cómo
trabajar con los modelos dependiendo de
cómo, si lo tienes en Open AI, si lo
tienes en Antropic, si tienes una API
Key, ¿no es cierto?
Okay, le voy a dar play aquí.
Y ahora ven que yo tengo aquí, bueno, lo
esperen, voy a hacer un clear aquí, lo
voy a ejecutar este de nuevo para que
vean. Aquí, ¿ven? No, es cierto. Tengo
este mensaje que dice, "Hola mundo,
¿verdad?" Y muy muy similar a la
cantidad de líneas que utilizamos el día
de ayer para crear ese chat completions.
Creo que la lo primero que pedimos es
que nos dé un
ah, ¿qué era? Broma poema. Haiku. Haiku
de un gato que quiere atún, ¿no es
cierto? Y nos devolvió un haiku. Ahora
estamos dando igual una entrada, ¿no es
cierto? Aquí dice, "Hola mundo, pero lo
que estamos pidiendo aquí es no un chat
completion sino
aquí nos dice un embedings
aquí en bettings.ding, ¿no es cierto?
Queremos crear un beding, ¿no es cierto?
Entonces, si le doy play aquí
vemos aquí que nos muestra la dimensión
de este vector y muchos, muchos números.
Y aquí está los números
que capturan el sentido de esta entrada
de aquí. En este caso, hola mundo, ¿no?
Estos modelos también. Sí.
A ver, lo más sencillo de ahí.
Obviamente ya se pueden como imaginar
como solo para un por un texto de dos
palabras se generan esta lista muy
larga ¿no?
¿Se imaginan que si tienen docum, por
ejemplo, si están creando un chatbot
para su empresa que es de soporte
técnico o algo así, le tienen que mandar
un una cantidad muy grande de documentos
como, qué sé yo, un PDF de manuales,
cosas así que pues se va a hacer
bastante grande ese storage de estos
vectores, ¿no es cierto? Y más adelante
hablaremos ah de eso, ¿no?
Genial.
Ahora, como les había dicho, se tiene
que utilizar modelos que son
específicamente entrenados para generar
estos números. Y en este espacio existen
modelos distintos tamaños y calidades
para lograr esto, pero todos buscan lo
mismo, capturar significados. Antes
habían modelos diferentes a la
tecnología que hay ahora y en años
adelante van a haber modelos mejores,
quizás más pequeños, más ligeros, qué sé
yo ¿no?
La los modelos más diríamos populares
para este caso, bueno, en los que nos
vamos a enfocar nosotros especialmente
es este de texting text, la de Open AI
texted three small.
codifica hasta esta cantidad de tokens.
Recuerden que ayer hablamos de tokens,
que llegaría a ser como la unidad que
utiliza los utilizan los modelos para
para medir, para capturar. Por ejemplo,
yo creo que ayer ayer
usamos la oración. Hablaremos de los
LLMs hoy. Hablaremos de los LLMs hoy.
Sin comprar creo que eran como siete
tokens por ahí, ¿no? Siete o seis por
ahí. Ah, pero y recuerden que también
hablamos de que en español cuesta más
tokens, la misma cantidad de palabras,
porque los modelos son mucho mejor en
inglés y bueno, ya entienden eso, ¿no?
También hay un invering malo que vamos a
ver en la sesión de vision models que se
llama Azure AI Vision. Y esto logra
codificar. Imágenes también texto.
Ah, y acá también tenemos un promedio y
longitud del los vectores.
Genial.
A ver,
ahora ustedes dirán, ¿por qué
existe modelos? ¿Por qué yo tengo que
escoger qué modelo tengo que utilizar? Y
eso no. Pero es que existen
diferencias entre los números que
generan los modelos diferentes. Por
ejemplo, si aquí buscamos TE, utilizamos
Texings Ara 002, que ya se llegaría a
dominar como un modelo
de generación anterior. Vemos aquí
todos los los números en este vector.
Y aquí vemos en su su gráfico, ¿no? Y
acá si lo hacemos con texted
3 small, que es un modelo mucho más
actual
que se logra utilizar más, vemos que
aquí hay una diferencia, ¿no? Aquí
parece ser un poquito más parejo, ¿no es
cierto? Porque acá vemos acá está est
bien. ¿Qué es qué pasaría por aquí?
Bueno, mucho mucho más parejo en eso de
acá.
¿Cómo me dimos qué tan parecidos
son? A ver si Skye. El codespace me
genera errores.
Nos avisan en el Discord a ver qué qué
sucede.
Para el codpace. No, no, para este, como
les indiqué, no tienen que correr ningún
comando, simplemente hay un botoncito de
play al lado izquierdo y vamos revisando
mientras más adelante vamos en otros
otros demos. ¿Cómo me dimos? ¿Qué tan
parecidos son? Recuerden que ayer
hablamos de que lo único que están
haciendo los modelos es generando,
adivinando, sugeriendo la palabra que
tiene más sentido para completar lo que
das de entrada. Por ejemplo, si yo digo,
¿cuál es la capital de Ecuador? tienen
que encontrar el el significado de eso y
generar pues qué palabra, qué token, qué
tokens tienen mayor o mejor sentido
devolver para ese entrado, ¿no es
cierto? Kito, ¿verdad?
Entonces, por medio de esto es donde
encontramos, pues tenemos que entender
cómo encuentran esa similitud entre esos
dos ¿no?
O entre las opciones de de tokens que
hay ¿no?
Generamos edings para poder calcular o
se por qué tenemos estos números, ¿no es
cierto? Para poder calcular la similitud
entre las entradas.
La medida de distancia más común es la
similitud del coseno cosine similarity,
que bueno, aquí está la fórmula de de
cos similarity.
Así lo abrimos que tenemos tiempo. A
ver. Sí. Okay, estamos bien a tiempo. Yo
creo que sí tengo ese de aquí.
Similarity. Okay, lo abro aquí. Pilas
para los que se perdieron por ahí. Yo
abro, ¿no es cierto?
Aquí en dentro de la carpeta de Spanish,
¿verdad? Recuerden, porque hay ejemplos
en inglés, pueden correr los de inglés
también, pero vamos a enfocarnos en la
carpeta de Spanish.
Voy a abrir la que se llama Similarity.
Voy a cerrar este para más espacio. Y de
aquí no tienen que correr ningún
comando. Lo que tienen que hacer es aquí
van a tener un botoncito que dice
execute sell y lo mandan.
Aquí lo que va a hacer es cargar. Yo ya
tengo ahí unos archivos punjon jsjon que
tienen vectores. Vamos a utilizar eso y
los el código de aquí es está cargando
eso.
De ahí lo que hacemos es tenemos aquí
esta función que dice cosine similar
para calcular similud del coseno.
Lo mandamos ese de ahí y de aquí tenemos
una función que va a buscar
entre la palabra perro y gato. Vamos.
encontramos este número de aquí
y esto lograría ser como el número que
podríamos utilizar para decir qué tan
qué tan similares son estos, ¿no?
Por ejemplo, también tengo, voy a
ejecutar este de aquí porque yo sé que
me va a cargar un Ah, no, saca más acá
abajo. devuelve las 10 palabras más
similares y sus similitudes
respecto a las a la palabra dada, ¿no es
cierto? Entonces, cargo esa función
dándole play aquí y si le mando la
palabra perro, me da una lista de 10
palabras más similares en la información
que le di. Recuerden que yo mandé acá
una lista, ¿no es cierto? Aquí en esta
lista están las palabras y lo que le
pedí aquí al código es que, okay, anda y
busca las 10 palabras que tienen mayor
similar similitud a la palabra que esté
mandando aquí, perro. ¿Y qué me ha
encontrado? Perro, gato, cerdo, pájaro,
humano caballo cervo bebé
hombre y niño.
Ya. Y acá lo que voy a mandar es Oh,
aquí es con otro. Este lo hicimos con el
modelo de Ada 2, es un modelo un poquito
más antiguo. Y acá con el modelo un
poquito más actual nos dice perro, gato,
poroto.
No está bien.
A ver, perro y por no creo que esté bien
eso ¿no?
Siervo pera
pera, criatura. Conejo. Yo creo que
estaba un poquito mejor. A ver, conejo,
cerdo, policía, perro, policía. Yo creo
que eso tiene sentido. Eso no había
aparecido acá arriba. Pero poroto y
perro, no entiendo
de dónde estás sacando las palabras
similares. Acá arriba. Acá arriba
estamos cargando una lista con todas
nuestras palabras. Entonces, simplemente
lo que le estoy mandando es, mira, yo
tengo esta palabra perro. en la lista
encuentra esas palabras a través de
calcular
en la la similitud del coseno, ¿no?
A ver, y también podemos, voy a correrle
este de aquí
y acá y ya les explico porque tiene que
generar aquí en este espacio 3D
el que tan cerca están los las palabras
y bueno, en este caso llegarían a ser
sus vectores, ¿no? con el modelo de ara
y acá abajo con el modelo de taxeding.
Entonces, por ejemplo, aquí vemos que
árbol, coche, cerebro, perro están un
poquito más como que agrupados.
Computadora está por acá, presidente
está por acá,
animal está por acá, ven por acá, rosa
está por acá, casa está por acá.
Está medio interesante. Como les había
dicho, estos modelos para otros
lenguajes fuera del inglés
no trabajan con con la misma
con el mismo performance que vemos en en
inglés, ¿no? Por ejemplo, en mi opinión,
animal debería estar más cerca de perro
y
avena podría, bueno, presidente,
bueno, presidente y cerebro no están
cerca, ¿no? Eso es eso es lo importante.
A ver. Okay. Podemos hacer esto de aquí.
Rangos de similitud.
Ese gráfico en 3D puede engañar. Sí, eso
sí. A ver. Ah, tenemos rangos también
aquí. Por ejemplo, aquí vemos que caen
la mayorera en este rango de aquí.
Yo creo que va de modelo modelo, ¿no es
cierto? Hemos olvidado de poner aquí un
label que dice qué modelos son acá. Y
acá para el modelo de texting small
estamos como una distribución un poquito
más más grande y con valores diferentes
ahí ¿no?
Si lo corremos aquí tenemos otro archivo
que se llaman películas que tiene una
lista y vectores de cada de las entradas
en la lista de películas de Disney,
creo.
Y si lo corro aquí estoy tratando, tengo
una película Rey León. título ahí.
Entonces, quiero buscar entre esos
similitud de eso o qué tan similares son
los otros que tengo dame una lista. Muy
similar a lo que vimos con Perro,
el libro de la selva, la bella y la
bestia. Ceniciente encanto. La gran
película de Piglet.
Aladin Frozen.
Domboy debería ser más arriba
por animal, ¿no?
Y los 10 menos similares. Ralph, Mary
Poppins Balt.
Bueno, ¿qué buscamos? El Rey León.
Yo creo que W debería tener más
similitud, ¿no? Pero bueno, para que
vean ustedes como vayan y vean los
ejemplos en inglés y y vean cómo se
compara para lo que les genera en
español ¿no?
Okay chévere.
Ah, quería hablar un poco de por qué se
utiliza el cosine similarity. A ver si
es que tenemos acá
ah un una diapositiva, ¿no?
En cuanto a
trabajar con estos vectores,
no realmente no importa la mayoría de
tecnología que o de
aplicaciones o algoritmos de lo que sea
que estén tratando de calcular esto, no
toman en cuenta magnitud, solo
dirección, ¿no es cierto? Entonces,
eso quiere decir que podremos utilizar
cosine similarity porque es más
eficiente, porque no nos importa
trabajar con este número de acá de este
número del de magnitud largo y magnitud
no llegaría a ser lo mismo, pero bueno,
para explicarlo, ¿no?
Porque esto llegaría a ser una un
cálculo mucho más sencillo, ¿cierto?
Yo creo que es rara. Yo no he encontrado
usos
o servicios o algoritmos o aplicaciones
que trabajen con magnitud. Alguien había
preguntado en la mañana si es que hay
contras. A lo mejor hay información que
se esté perdiendo ahí, pero nada muy
relevante. Entonces ese número lo toman
como uno y listo, ¿cierto?
Ah, y bueno, eso algo interesante de
matemáticas ¿no?
Ejemplos de uso de similitud. Sistema de
recomendaciones. Por ejemplo, si yo
digo, "Me encantas Rey León, dame una
lista de películas que debería ver."
¿Ven que me retorna es? Acá tenemos un
sistema de recetas que podría utilizar
eso. Detección de fraude también que acá
tenemos ejemplo. Y tenemos ahí unos
links que pueden revisar ustedes también
por ahí.
Okay. ¿Cómo encontramos lo más parecido?
Que entendimos
que se tiene que encontrar, pero y
bueno, hablamos esto del coseno,
hablamos de esto de los modelos y todo
eso, pero y cómo lo hacemos.
Así es más o menos como se hace. Uno,
calculamos el vector, el vector de ¿Por
qué le puse aquí vector de embeding?
Vector embeding debería ser aquí tenemos
nuestra entrada, nuestra pregunta,
nuestra consulta query, ¿no es cierto? Y
ahí se genera, se calcula ese número.
Eso ya lo hemos visto, ¿no es cierto?
Entonces ese número, o sea, consulta
llegaría a ser un conjunto de números,
¿no es cierto?
De ahí se buscan entre los vectores que
existen ya, los vectores que ya tenemos,
bien sea una base de datos que tienen,
bien sea documentos que tienen, lo que
sea, ustedes ya tienen vectores
existentes y se buscan K vectores más
cercanos. K llegaré a ser la variable
que ustedes se le ponen, ¿cierto? Si
necesitan 100, 1000, 5,000, lo que sea,
se buscan vectores más cercanos. Por
ejemplo,
si mandamos tortuga,
utilizamos uno de estos moléculos para
crear el embeding. Aquí tenemos nuestro
embeding y se busca en los vectores
existentes. Por ejemplo, nos sale
culebra, sapo y más, ¿no es cierto? Así
es como se funciona. Bueno, como se
busca eso.
Se puede hacer, bueno, algunos tipos de
búsqueda o a la,
bueno, la que les va a costar muchísimo
dinero es la búsqueda exhaustiva que
revisa cada vector para encontrar al más
cercano. Eso quiere decir que, por
ejemplo, en nuestra lista de acá,
ah, ¿cuál sería un poco más fácil de
ver? Por ejemplo, esto iría a buscar
cada uno de estas palabras y victores,
pero ustedes se imaginarán que no va a
ser una lista de 10, sino va a ser de
1000, de 5,000, de lo que sea, ¿no es
cierto? Entonces, mucha información,
pero eso llegaría a ser una búsqueda
exhaustiva. Revisa todos los vectores
que eh estén ahí y como se imaginan no
tiene mucho sentido. Tenemos aquí un un
ejemplo.
Si es que no tienen mucha información, a
lo mejor les conviene eso, pero
veonos qué hay aquí.
tenemos una ah la misma el mismo archivo
de las películas porque es que si les
interesa saber qué existe ahí. Si voy
acá, esta es película
bajo texting small. Este de aquí tenemos
los títulos ahí y todos los números.
Bueno, es un archivo muy grande, pero
eso es lo que estamos cargando.
Obviamente nosotros lo tenemos en un
punto Jason solo para demos, pero no les
recomiendo tener todos los vectores para
sus aplicaciones en producción en un
punto jason porque van a ser archivos
demasiado grandes y van a ser muchos,
¿cierto? Existen base de datos que son
específicamente para guardar esos los
vectores. A lo mejor han escuchado cosas
como Viviate,
Cosmos DV también lo tiene. Ah, ¿cuál es
la otra que es muy popular? Me había me
había olvidado. Pero bueno, existen base
de datos que son específicamente hechos
por eso, ¿no? Cargamos nuestros datos.
Voy a mandarle acá. Recuerden, ustedes
le mandan play aquí en Gearhubs. Yo le
mando acá en Open Ai porque estoy
utilizando eso.
Genial. Y define la función para
general. Este es código que hemos visto.
Solo queremos generar un de aquí si
queremos hacer una búsqueda vectorial
tenemos nuestro cosine similarity y aquí
estamos definiendo un exhaustive search
que simplemente va a ir a buscar entre
todos los vectores. Nada más. Lo que
estoy mandando aquí es una película apta
para niños acerca de animales, ¿no es
cierto? Entonces, mandamos esto,
exhaustive search y le doy clic por acá
y a ver qué me retorna. Tomó 1.8
segundos. nos dice aquí la gran película
de Piglet, el libro de la selva,
las aventuras de Bongo Mickey,
ah, la bella y la bestia, el planeta de
¿Por qué no salió aquí el Rey León?
No es cierto. Bueno,
eso ser una búsqueda de de exasiva yendo
a todos, como podrán ver aquí,
si es que conocen un poco de Python.
Es muy obvio, está buscando por todo,
¿no es cierto?
De aquí
ustedes dirán,
pero debe haber una manera más eficiente
de hacer esto. Y sí, exactamente, muy
pilas todos ustedes. Sí, existen
algorritmos para esto, varios.
Para acelerar la búsqueda, por general,
hay un tipo que se utiliza que se llaman
approximate nearest neighbor
o suelen decir ANN, ¿no es cierto?
Y estos logran acelerar el tiempo de
búsqueda.
Aquí dentro de de este tipo de búsqueda
hay algunos algoritmos que se llaman,
por ejemplo, HNSW.
Aquí hay una librería en Python que se
llama HNSW Lib
ejemplos de servicios de base de datos
que soportan este tipo de algoritmo y
búsqueda. Postle con la extension de PG
vector search chroma DB. Ah, choma db
que me quería acordar yate. A lo mejor
hay más ejemplos por aquí.
Me ponen en el chat
disk N. Disc a la librería Python Disc
Py. Esto es popular con Cosmos TV. Es la
tecnología que utilizan para el search
de Bing. Si es que utilizan Bing.com
para hacer sus searches. Por detrás de
eso está scan. Hay vía flat, Python
librería FAS, muy popular, creo que la
hizo Meta y Postcal PG vector Extension,
nuevamente compatible con eso y FAS,
otro algoritmo también se utiliza la
libría FAS y esto es uno que simplemente
trabaja en memoria,
así que les conviene para
menos cantidad de información, pero muy
rápido. Entonces, aquí ustedes tienen
que entender
qué opciones debería utilizar. No es que
simplemente tienen que usar uno,
simplemente es para este caso de uso,
para esto lo que voy a implementar, me
conviene usar esto, me conviene usar lo
otro y todo eso, ¿no?
Yo creo que uno de los más populares es
la implementación de HNSW,
que es una búsqueda eficiente en cuanto
a bases de datos grandes o en grandes
bases, ¿no? Es ideal para situaciones en
las que tu índice índice llegaré a ser
lo que tienes cargado de tus vectores
ahí. Puede que se actualice con
frecuencia y su rendimiento escala de
forma logarítmica
incluso de incluso con tamaños de gran
incluso con índices de gran tamaño.
Perdón, me había equivocado ahí. Es muy
interesante cómo funciona eso. No es ah
no es muy difícil. Me gusta pensarlo
como
como si es que a ver si si estás
jugando, si tienes estamos están en un
edificio y empiezan en el piso cero o el
piso uno, lo que cero, porque somos
programadores aquí
y tú tienes que encontrar, tienes muchos
amigos en todos los pisos, ¿no? A lo
mejor tienes 10 10 amigos en el piso
uno, 300 amigos en el piso dos y lo que
sea y tienes que ir
al comienzo, el primer piso y como que
no tienes mucho sentido a quién estás
buscando. Preguntas a una persona y te
dice, "Ah, anda a hablar con tal." Y te
vas a tal.
Tal persona te dice, "Ah, no, tienes que
irte al segundo piso. Habla con el
genial. Me voy a ese piso ahí, me voy
allá y esa persona me da mucha más
información. ¿Sabes que es la persona
que está puesto esto y tiene pal piso
cuarto? Pum. Y bueno, ahí terminas todos
y vas como que guardando todas esas
piezas de información y cuando terminas
en el último piso tienes el esos esos
vectores que más te convienen, esa
información que más te conviene.
Pero vayan y lean este este paper es muy
bueno.
Y alguien había dicho al comienzo,
¿por qué se utiliza esto con rag? Sí. y
se utilizan como la fundación, podríamos
decir, porque mejora considerablemente
la fase de recuperación en rag y la y la
R en rag
es de recuperación. Es muy clave, ¿se
imaginan, no? Entonces, por ejemplo,
aquí ven, siempre me olvido de
actualizar estos screenshots, pero
bueno, me gusta también darles un
poquito de inglés ahí para que vayamos
trabajando con nuestro inglés también.
Aquí hacemos la pregunta de does the
Northwal Plus plan cover exams? Estamos
simplemente tratando de hacer una
pregunta acerca de plan de visión que
tenemos en esta compañía aquí en este
chat. Y vemos que acá este chatbot nos
dice, "Sí, cubre esto." Y aquí dice
tiene una cita de el documento y la
página en donde encontró
información que utilizó para devolverte
la respuesta. aquí y eso lo hace a
través de esto de de encontrar los
vectores, encontrar en dónde está el
significado importante y todo eso, ¿no?
Por si qui Ay, no actualicé esta de aquí
tenemos la sesión de rag. Ah, en la
fecha está incorrecta aquí yo la
actualizé la de mañana. Pilas vamos a
aprender mucho ahí, pero código y demo
también vayan si quieren jugar con eso.
Genial.
Okay. ¿Y con cuánto de tiempo estamos?
Chévere. Técnicas para optimizar en
edading. Entonces ustedes ya dicen,
"Genial, tenemos, sabemos que las
entradas se trabajan, se tienen que
convertir a estos números.
Sabemos que se tienen que utilizar
modelos para generar estos números
y sabemos que en estos demos hemos
estado guardando estos números en un
punto Jason, pero ven, ¿no es cierto?,
que el punto Jason es muy largo, es muy
largo, ¿no es cierto? Y tenemos algunos
aquí. Yo creo que me costó mucho poder
caber este este tamaño de aquí porque,
bueno, tomo mucho tiempo en Entonces,
miren, puedo ir
10 minutos aquí haciendo un cierto, muy
largo ¿no?
Entonces, ¿qué tenemos que hacer aquí?
Porque obviamente cuando hacemos demos
es fácil, a ustedes realmente no les
importa el tiempo que les tome encargar
esto, pero cómo podemos hacer que sean
más ligeros. Hay algunas técnicas por
aquí. Tenemos
cuantización vectoral, que
la meta es que hacer que cada número sea
más pequeño. ¿Okay?
por ejemplo, convertir el decimales de 6
64 bits en enteros o bits, ¿no es
cierto?
O podemos reducir la dimensionalidad de
cada vector y eso quiere decir usar
menos números. Por ejemplo, un car de
30,072
a 250
256
con una técnica que se conoce como MRL.
Ya lo vamos a ver, pero el objetivo es
ahorrar memoria, acelerar las búsquedas
mientras que se pueda mantener el
sentido semántico. Eso es la clave.
Primero hablemos de cuantización
debedings. A ver,
no se pueden catchar. Sí, sí, sí se
pueden, pero primero tienes que
crearlos. Y el el
crear un cash es bueno, lo puedes
implementar de maneras diferentes, pero
obviamente primero tienes que generarlos
y lo los lo vas a tener que poner en una
base de datos igual, ¿no es cierto?
Porque el cash es temporal, dinámico y
todo eso, ¿no?
Okay. ¿Por qué cuantizar embedings?
Por ejemplo,
los embedings suelen estar formados por
miles de números decimales muy precisos
conocidos como punto flotante. Hemos
visto en nuestro punto Jason, ¿no es
cierto? Lo que la cuantización hace es
convierten esos números en números más
simples. Por ejemplo, aquí tenemos el
cuantización escalar que reduce cada
número a un entero, ¿no es cierto?
Entonces, por ejemplo, aquí tenemos el
0.032651,
etcétera, o el 0.13. Uno ahí, ¿no es
cierto? Y logra hacer una conversión acá
a una lista un de vectores, no vectores.
Aquí llegarían a ser números enteros,
¿no?
También tenemos la cuantización binaria
que reduce, como se imaginarán, cada
número a un solo que llegaría a ser uno.
En este caso, por ejemplo, ese mismo
vector 1 0. Estos no son exactos,
simplemente son por el demo de aquí,
¿no? Por si nos vamos acá. Ah, alguien
había dicho si es que vamos a mostrar
aplicaciones.
Sí, pero recuerden que estos son esto es
una serie de nueve sesiones. No lo vamos
a mostrar todo ahora. Vamos de paso en
paso, tema en tema y terminamos con lo
más difícil porque la última vez que
hicimos esta sesión se me perdieron y en
la tercera sesión como que se fueron
todos porque estaba muy difícil.
Entonces estamos tratando de hacerlo un
poco un poco más lento. A ver,
cuantización. Voy a abrir cuantización
de aquí. Voy acá. No sé si es que lo
cargué este. Ya. A ver. Okay. Carguemos
esto de aquí. Hemos buscado la sirenita.
Ah, okay. La sirenita de la película.
Tenemos cargado aquí. Okay. Vemos estos
números de acá, ¿no es cierto? un
listado de unos números
de muchos números, diríamos muchos
decimales aquí, ¿no? Si queremos hacer
la cuantización escalar, lo corremos
acá, nos vamos acá abajo y vemos cómo
cambia esto. Una lista mucho más corta,
¿no?
Y tenem, ah, ¿qué estamos haciendo aquí?
Oh, lo corr esto de acá porque debería
correrse acá abajo. Bueno, esto es para
la siguiente la siguiente diapositiva.
No quería adelantarme mucho. Déjame
revisar acá. Okay, cool. Entonces,
¿vieron acá? No es cierto, como tenemos
estos números con sus decimales,
acá obtenemos este de aquí.
La meta es que todo el sentido más
importante igual logra encontrarse en el
conjunto de los números. Igual llegan a
ser muchos números, pero aquí menos
cantidad, pero el sentido central
debería quedarse ahí, ¿no?
Y en cuanto al la cuantización escalar,
¿cómo funciona? Tenemos que calcular el
acá tenemos el mínimo, ¿no es cierto? Y
el máximo y acá obviamente logramos
tener un un rango, ¿no es cierto? acá en
este medio y normalizamos los valores de
cada embeding del rango 0 a 1, ¿cierto?
Y ahí mapeamos los valores normalizados
en intervalos enteros de -18
a más de 100 o más o positivo 127, ¿no
es cierto? Entonces es lo que hace
mínimo, máximo y
se el el algoritmismo busca el valor
entre ese rango eh para otorgarle, ¿no?
Pasa de float 32 a into.
Y nuevamente hablando del sentido de
mantener sentido, de mantener lo que
importa mucho. Aquí vemos, por ejemplo,
se pierde precisión con la cuantización.
Yo creo que hay un poco de movimiento.
Por ejemplo, acá tenemos la lista de
haciendo eso con las con los vectores
aquí que hemos sacado primero, ¿no es
cierto?
Aquí tenemos la lista y acá tenemos la
lista, pero cuando hemos hecho la
búsqueda con los los números después de
la cuantización y están todos los
valores ahí, están todos los títulos
ahí, hay cosas que han cambiado. Por
ejemplo, Lil Stitch de Mermaid cambiaron
de puesto y acá abajo también cambiaron
de puesto, pero en sí el contenido es lo
mismo, ¿no? pero se ahorraron mucho en
cuanto a guardar esos números.
Todo esto de optimizar, de hacer más
eficientes, de hacer más ligeros esos
números, es ustedes tienen que como
desarrollo pensar, okay, bueno, si se
ahorra
a lo mejor se pueda perder un poco de
precisión, un o un poco de sí, un
precioso,
en cambio estamos ganando en costos para
storage, en el tiempo que les toman de
retornar una respuesta a sus usuarios
que también les cuesta esta, ¿no es
cierto?, en experiencia del usuario.
Entonces, son pros y contras que tienen
que que encontrar, ¿no?
También si queremos hacer una
cuantización binaria similar, pero que
aquí va de cero a uno, ¿cierto? Escoges
un centro C basándote en el promedio
o una muestra o de de los conocimientos
previos, ¿no es cierto? Si el valor es
mayor o igual a C, de aquí de aquí,
uno o cero, ¿no es cierto? Promedio
mayor para acá, menor para acá. Así de
sencillo.
En esto sí se va a perder un poco más.
Por ejemplo, vimos que no vemos Monsters
University acá en la lista a la derecha
y hay un poquito más de movimiento, pero
en sí yo creo que los resultados están
similares y de aquí te estás ahorrando
muchísimo más espacio en el storage y se
imaginan latencia y todo eso, ¿no?
Y obviamente cuando están haciendo los
cálculos simplemente programando,
qué s yo, una suma, una división, una
multiplicación, lo que sea, es mucho más
sencillo y lejeró solo con números en
esta representación que en esta, ¿no? Y
a escala
eso se hace mucho más ah conveniente,
diríamos, ¿no? Impacto real.
El un servicio que tenemos AI search,
¿no es cierto? si es que lo han
utilizado, genial. Es un servicio muy
popular para esto. Admite la
cuantización como una forma de reducir
el espacio necesario para el
almacenamiento de vectores. Por ejemplo,
vemos aquí si tenemos un vector indexed
en en megab de 117.12,
hacemos la primera cuantización
a los enteros. Tenemos 298.500.
519.
Esto ya casi el 75%
de derrupción. Y recuerden lo que hemos
visto acá, ¿dónde estaba? Aquí es está
esta de aquí.
Los los valores llegarían a ser casi lo
mismo con un poquito de cambio ahí, pero
con un 75% de reducción.
Y de aquí un paso siguiente sería con
con la cantización escalar a un 96.44
4% de reducción,
que también
un número muy grande, pero obviamente
ahí
tienen que ustedes ver qué les conviene
más y también es que van a van a en sus
aplicaciones tener estas búsquedas que
son diferentes, a lo mejor algo que es
un poquito menos importante, menos
impactante, el resultado para sus
usuarios pueden utilizar algo así. A lo
mejor si 100% necesitan toda esa
precisión se quedan por acá. Si
necesiten algo en el medio. Es por eso
es importante saber de todas esas
opciones. No
hay una serie que se llama Rag Time que
había hecho PLAS unos meses donde se
habla mucho más de eso. Vayan y revisen
este enlace de acá. Ahí tiene mucha más
información acerca de eso. Okay. Eso
hablamos primero de las de la
cuantización, ¿no es cierto? Pero
también tenemos algo de reducción de
dimensiones. Eso quiere decir que
recuerden en el anterior, si es que
habían 10 números en el vector, igual si
haces la cuantización tienes 10 números.
Son números más pequeños, pero igual y a
ser igual 10 números. Reducción de
dimensiones quiere decir tomas de 10 a
cco o a dos o lo que sea, ¿no? Para esto
se conoce algo como mrl.
Aquí, ¿no es cierto? No creo que hay una
traducción esto a español, pero es una
técnica que te permite reducir las
dimensiones de un vector. Eso quiere
decir que menos números, ¿no es cierto?
Mientras tanto y con la meta de
considerar gran parte de la
representación semántica original.
Entonces, por ejemplo, si tienes las
dimensiones de 3072,
aquí puedes pasar a
a 1024, 512, 256, hay menos 128, todo
eso, ¿no es cierto?
El modelo que hemos estado utilizando o
no, este es el large, nosotros estamos
utilizando el small. Tiene de
dimensiones predeterminadas de 3072. Eso
quiere decir que cuando generan
embedings van a tener esa dimensión, sus
embedings ings, ¿no es cierto? Pero
puede truncarse hasta 256.
¿Se imaginan eso? ¿Cierto? Puedes
truncar o hacer estas esta conversión
aquí al generar los embedings o al
almacenarlos en la base de datos si es
que la base lo admite, ¿no es cierto?
Tenemos creo que dimension reduction.
Sí, lo tenemos por acá abajo.
Dimension. ¿Cómo estamos con tiempo?
Perfecto. Dimension reduction por acá.
Los está aquí.
A ver. Lo corro aquí. ¿Por qué me está
pidiendo esto? Lo abrí. Correcto.
Okay.
Entonces vemos aquí nuestro vector con
las dimensiones de 1536 y acá 256.
Vamos acá abajo. Vamos a hacerle en un
matpot lip. Vemos aquí en el a sus
dimensiones y el valor de acá.
Interesante el valor que esté por aquí.
Acá abajo
están. A ver si lo hago un poquito más
más
pequeño. Ahí se puede ver que están
parecidos, ¿no? No está como que el uno
está como que mucho más pequeño por
aquí. Están un poquito un poquito
parejos, ¿no? Por ejemplo, vemos aquí,
voy a tratar de hacerlo uno más ahí. Ahí
lo mejor se ve. Hay una que otra cosa
ahí que se ve un poco diferente, pero lo
importante es ver estos estos topes y
estos bajas, ¿no? Se ven se ven
similares, ¿no? Y eso es eso es lo que
está haciendo que se mantenga el el el
significado, ¿no? Eso es lo importante.
Si es que ustedes hacen eso y ven que
que y bueno, hacen sus comparaciones y
están totalmente diferentes, pues van a
tener problemas y eso no es buena, ¿no?
Y yo creo que podemos hacer es tenemos
otro grafo de aquí, ¿okay? Y aquí 10
películas más singulares al Rey León.
Aquí nos dice el libro de la selva. Y
acá tenemos con el de 256. Este es con
el de 536.
256.
Vemos la diferencia entre las listas.
Eh, la bella la está primero acá, está
en la dos, está acá.
Aladin, bueno, están similares ahí.
Puestos han los puestos han cambiado,
las posiciones han cambiado, pero están
están ahí, ¿no? Y para comparar el
tamaño, vemos aquí el tamaño de aquí
y acá, a ver, ¿dónde estamos? Por aquí.
Y acá vemos el lo que termina llegar
siendo ese ese tamaño de que me parece
ah una deducción muy grande, ¿no?
A ver, nuevamente tienen el enlace ahí
para que puedan jugar ustedes y ver las
diferencias entre ellos. Pueden tratar
de poner otra película aquí.
Pueden revisar el punto Jason, poner
otro valor, ver las diferencias entre
las en nuestros grafos ahí
y así entender las diferencias entre
estas
ah maneras de reducir tamaño y eso no
efectos en la similitud después de hacer
esto de MRL. Eh, vemos acá que cuando
tenemos 536 a comparación de 256,
mucho movimiento. 1 2 3 4 5 6
movimiento, dos que no existen y este ha
quedado, este ha quedado ahí, ¿no? Mucho
movimiento ¿no?
Ah, pero en sí la mayoría de información
está en las los listas, diría yo.
Pero sí, muchos me mueven de posición.
Y si es que quieres, pero lo más la
compresión máxima combinas antes, ¿no?
Primero haces lo de MRL y después tomas
esos números porque
si lo haces de la otra manera, a lo
mejor vayas a perder sentido. Primero
reduces con MRL y después haces esa
cuantización, bien sea escalar o ah
binario binary, ¿no? Y ahí terminan como
como con algo como esto. ¿Qué les
parece? Está interesante eso no
comprime solo los vectores en el índice
para mantener alta precisión porque con
su índice ya obtienen vectores, ¿no es
cierto?, que tienen sentido a la
consulta. Entonces, trabaja con eso, no
con los que estén en la base de datos.
Sobre muestrea al recuperar. Eso quiere
decir que si es que puedes obtén más más
vectores de lo que
de lo que tu c valor que tenías del
comienzo, ¿no? Y reevalúa usando los
originales porque obviamente si es que
haces la revalón con los números que han
pasado por esta compresión,
no tiene mucho sentido eso, ¿no es
cierto?
con los originales y y para eso,
qué sé yo, lo haces cada mes o cada
semana, lo haces como un background job
o algo así, ¿no?
No lo vas a hacer en cuanto las
personas, sus usuarios estén haciendo
sus consultas, obviamente.
Y así es como Asarch puede manejar miles
de millones de vectores. Hay servicios
que hacen esto que contienen todas estas
características, todas estas
compresiones y cuantizaciones y todas
estas habilidades y hay muchas compañías
que hacen esto en producción y son
prácticas que se les recomienda saber en
cuanto a su conocimiento de esto de AI.
Okay.
Para poner toda esta clase, crear todo
este contenido, hemos utilizado estas
recursos de aquí.
vayan y revísenlo. Hay hay much se van a
pasar un mes entero revisando lo que
hemos vist aquí, pero más acerca de los
vector embeding, los algoritmos, las los
las distancias diferentes que hay.
En la versión anterior revisamos más que
la similitud entre coseno,
pero lo quitamos esta vez, pero si es
que les interesa saber más, hay más
información aquí. En cuanto a
cuantización, lo tenemos más información
acá. Y en cuanto a MRL, o sea, reducción
de dimensión nalidad, lo tenemos. Ah,
tenemos una lista de aquí. Okay. A ver
qué tanto Oh, nos queda 3 minutos.
Genial. Creo que esta vez hablé un
poquito más más
lento y más suave. Próximos pasos.
Yo creo que no cambié este tampoco.
Rag es mañana y sigo porque hicimos ese
cambio. Me había olvidado, pero Rag es
el día de mañana. Así que van a revisar
hoy esto de los inves, de los números y
todo esto y para mañana vamos a ver por
qué importan en una una implementación
actual, ¿no es cierto? Esos dos cambian.
Moderos de visión es la semana que
viene. Lo siento, no había actualizado
esto aquí.
vayan al Discord ahora me mandan @made
bygps, manden un mensaje si tienen
alguna pregunta en el canal de español.
Mañana después de la sesión vamos a
tener office hours. Nos vamos de aquí
directo a una hora en Discord donde voy
a estar así ahí mismo en en stage ahí
hablando. Tienen preguntas, vengan. A lo
mejor a más colegas de mi equipo van a
estar ahí respondiendo preguntas también
y ah y todos los recursos, grabación,
diapositivos y todo eso está acá abajo.
Y háganle un bookmark a eso.
Déjame ver.
Está duro este tema. Voy a repasar para
entender mejor. Sí, recuerden, son
simplemente maneras de trabajar con
números que llegan a ser las
representaciones de las palabras que
nosotros entendemos, ¿cierto?
Eso es todo. Hay números. Entonces, si
queremos los números tienen significado,
tienen sentido en los números. Entonces,
si es que yo digo algo y necesito
encontrar cómo responder a mi consulta
como modelo, tengo que encontrar algo
que tiene sentido con lo que yo esté
diciendo, ¿no es cierto? Entonces, eso
significa que tiene tengo que ir a
buscar el significado entre algunos
números. Y de ahí hay matemáticas que
les pone, "Okay, este sentido está por
aquí, este significado, significado, no
sentido, el significado está por acá,
por acá y tengo miles así, ¿cómo
encuentro? ¿Cómo encuentro entre ellos?"
Y por eso tienes los algoritmos y todo
eso. No
voy a aprender binario.
A ver, ¿se puede hacer aritmética de
estos números? Sí, el video de la clase
anterior. Ah, lo encuentras acá. Anate
acá este Python y a recursos tienes
listado ahí. ¿Hay algún examen? No hay
examen.
Ah, no hay examen, no hay certificados.
Debería brindar la brindar la encuesta
en español. ¿A qué te refieres?
o la encuesta del del evento,
el curso deings vectoriales, ¿dónde se
encuentra? De marzo.
AKA.ms/al
Python y a diagonal grabaciones.
Esos son Esos son los de la semana
anterior.
Ah, sí, ahí la encontraron.
¿Qué entorno usa para correr los
programas? Esto es vs code utilizando
Juper Notebooks. Ustedes van a utilizar
Codepaces.
¿Algún libro que recomienda sobre este
tema de los embedings específicamente?
Ah, ya te busco y te mando por Discord.
Mándame manda un mensaje por ahí, pero
yo creo que vas a encontrar mucho,
mucho,
aprender mucho, simplemente pasando por
esos recursos.
Ah, ¿cómo es eso? ¿Que harás
convocatoria en Discord? Sí, los jueves
después de la de la clase pasemos una
hora office hours. Vengan,
hagan sus preguntas, lo que sea, ¿no?
De cuántas dimensiones vector de chat
GPT. Ah, no sé exactamente.
Funciona genial en VSOR. Qué bueno,
para eso está chipt para el resumen.
Exacto.
Jupiter Notebooks.
Pero todo el entorno, todo el entorno
está ya listo para ustedes. Ustedes van
al link y simplemente tienen que darle
click, crear codespace y todo se
configura. No tienen que instalar nada,
todo está listo para ustedes.
No te puede agregar ni enviar mensajes
en Discord. Tienes que hacerlo en el
canal español. Ándate dentro del canal
español. Pones @mil byggps y me
encuentras ahí. Okay, me dicen que tengo
que terminar. Hablemos en Discord. Ah,
y nos vemos mañana para la sesión de
Rag. Okay, chévere. Genial. Muchas
gracias por estar aquí y nos vemos. Nos
vemos mañana. Chao.
Gracias. Gen. Nos vemos mañana. Gracias
a todos por acompañarnos.
Ah, y aquí en Reactor siempre buscamos
mejorar nuestras sesiones y tu
experiencia. Si tienes algún comentario,
nos encantaría saberlo. Puedes encontrar
el enlace en la pantalla o en el chat.
Gracias a todos otra vez por participar
de nuestra sesión. Gracias a Wen por el
contenido, a Pala por contestar las
dudas en el chat. Nos vemos mañana en la
próxima sesión.
[Música]
En nuestra segunda sesión de la serie Python + IA, profundizaremos en un tipo diferente de modelo: embedding vectorial. Un embedding vectorial es una forma de codificar texto o imágenes como un array de números decimales. Hacen posible realizar búsquedas por similitud en varios tipos de contenido. En esta sesión, exploraremos diferentes modelos de embedding vectorial, como la serie text-embedding-3 de OpenAI, usando tanto visualizaciones como código Python. Compararemos métricas de distancia, usaremos cuantización para reducir el tamaño de los vectores, y probaremos modelos de embedding multimodal. Si quieres seguir los ejemplos en vivo, asegúrate de tener una cuenta de GitHub. Consulta la colección Learn: https://aka.ms/PythonAI-Learn/reactor/yt Explora las diapositivas y los recursos del episodio: https://aka.ms/pythonia/recursos/yt Continúa la discusión en Discord: https://aka.ms/pythonia/discord Desarrollar aplicaciones de IA con Python: https://aka.ms/eHub/PythonAI Abrir el codigo en GitHub Codespaces: https://aka.ms/python-openai-demos Chapters: 00:06 - Bienvenida y código de conducta 01:39 - Participación global y comunidad en Discord 02:01 - Introducción a la serie Python + AI 04:05 - ¿Qué son los vectores embeddings y por qué importan? 08:02 - Aplicaciones prácticas de los embeddings 09:59 - Cómo se generan los embeddings 19:12 - Medición de similitud: Cosine Similarity 22:08 - Ejemplo práctico: similitud entre palabras 25:00 - Búsqueda vectorial: exhaustiva vs aproximada 34:05 - Algoritmos ANN y bases de datos vectoriales 40:01 - Técnicas de optimización: cuantización y reducción de dimensiones 47:43 - Impacto real en almacenamiento y rendimiento 58:42 - Próximos pasos y sesión de RAG #microsoftreactor #learnconnectbuild [eventID:26281]