¿Qué son los embeddings y por qué son clave en el procesamiento del lenguaje natural?
Los embeddings son el núcleo del procesamiento del lenguaje natural (NLP) en inteligencia artificial. Permiten entender el lenguaje y utilizar modelos de lenguaje de gran tamaño como GPT-4, Lambda y otros. Nos ayudan a crear sistemas avanzados de recomendación y motores de búsqueda semánticos, además de permitir la traducción automática y la clasificación de textos. En esencia, los embeddings son representaciones numéricas que permiten a los modelos de Machine Learning comprender el mundo en el que vivimos. Procesan instrucciones de diversos tipos, como audio, texto, video e imágenes, llevándolas al mundo de los números.
¿Cómo representan los embeddings un texto en el espacio vectorial?
Los embeddings transforman el texto en vectores numéricos, un proceso fundamental para el entendimiento del lenguaje. Aunque solo podemos visualizar en tres dimensiones como humanos, en realidad, la representación se extiende a cientos o miles de dimensiones. Esto se asemeja al concepto de representación digital de imágenes, donde cada píxel se identifica con un número. Del mismo modo, los embeddings representan palabras en coordenadas vectoriales en un espacio dimensional amplio.
Implementación práctica de embeddings en Python
Para aprovechar los embeddings, podemos utilizarlos desde el lenguaje de programación Python. Aquí te explicamos cómo hacerlo usando la librería sentence-transformers.
¿Cómo instalar sentence-transformers en Python?
Para instalar la librería sentence-transformers usaremos el paquete pip. Esta librería open-source nos permite ejecutar secuencias de texto a vectores de embeddings.
pip install sentence-transformers
Luego, instanciamos sentence-transformers y utilizamos la librería utils para medir distancias entre los vectores generados por nuestras sentencias.
¿Cómo transformar texto en embeddings?
Empezamos instanciando un modelo preentrenado de sentence-transformers, en este caso all-MiniLM-L6-v2, y pasamos una lista de sentencias para transformarlas a un espacio vectorial.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')sentences =["El gato juega afuera","Me gusta tocar guitarra","Me encanta la pasta"]embeddings = model.encode(sentences)
Aquí, embeddings almacena la representación numérica de cada sentencia en un espacio dimensional.
¿Cómo medir la similitud entre sentencias?
Una vez generados los embeddings, podemos medir la similitud entre sentencias usando la métrica del coseno, que evalúa qué tan cerca están los vectores en el espacio vectorial.
from sklearn.metrics.pairwise import cosine_similarity
similarity_scores = cosine_similarity(embeddings)
Creamos una lista llamada pairs que almacena pares de sentencias y sus scores de similitud:
pairs =[]for i inrange(len(sentences)):for j inrange(len(sentences)):if i != j: pairs.append({'sent1': sentences[i],'sent2': sentences[j],'score': similarity_scores[i][j]})
Ordenamos los resultados de manera descendente para obtener las sentencias más cercanas entre sí.
¿Qué aplicaciones tienen los embeddings en bases de datos vectoriales?
Una de las aplicaciones más fascinantes de los embeddings es la búsqueda semántica. Se trata de almacenar las representaciones vectoriales en una base de datos vectorial que facilita la búsqueda y consulta de información. Este enfoque es usado junto a LLMs y chatbots, permitiendo consultas más precisas y contextuales. Para llevar a cabo estas aplicaciones, es crucial tener conocimientos básicos en Python, consumo de APIs, manipulación de datos y álgebra lineal.
Los embeddings son fundamentales en la inteligencia artificial moderna, y su aplicación ofrece enormes oportunidades para innovar en el procesamiento del lenguaje. Es un camino apasionante y lleno de desafíos, ¡te animo a unirte a esta emocionante travesía!
Obtén respuestas inmediatasProfundiza lo que acabas de ver
Recuerden traer su cuenta de OpenAI y su API Key y conocer el hub de Hugging Face para usar sus modelos de embeddings pre-entrenados más adelante.
¿Por qué los cursos se centran tanto en la API de OpenAI? Personalmente tengo problemas con la API ya que no tengo manera de seguirla usando de manera gratuita, y tratar de hacerlo con los recursos gratuitos de HuggingFace es algo complejo, además, algunas cosas a desarrollar en Colab requieren versión pro (Lo cuál tiene mucho sentido), pero también hay que buscar mucho para encontrar la manera de configurar esto en un entorno local y no morir en el intento 🥲🥲
Es que las APIs de openIA son las mejores que hay actualmente sobre este tema. Ni siquiera Google ha podido replicar a chatGPT al nivel que tiene openIA. @Gabriel Jaime Cardona Osorio
Bueno lo que no me gusta de que usen la API de OpenAi es que vivo en venezuela y aca la pagina de OpenAi esta bloqueada gracias al gobierno jaja.. pero bueno solo tocara verlo y ojala en el futuro se pueda solucionar esto
Parcero usa tor, o bueno yo creo que debe funcionar, por ejemplo, cuando yo trato de entrar a paginas para piratear libros y veo que estan bloqueadas por estados unidos, en tor no estan bloqueadas.
probaste usar una VPN. En china engañan los bloqueos d e esta manera
Una base de datos vectorial es un tipo de base de datos diseñada para almacenar, gestionar y consultar vectores de alta dimensión de manera eficiente. Los vectores, que a menudo son embeddings generados por modelos de aprendizaje automático, representan datos como texto, imágenes, audio o cualquier otro tipo de información de manera matemática, en forma de vectores numéricos.
Estas bases de datos están optimizadas para manejar consultas basadas en la similitud de los vectores, lo que es útil cuando se trabaja con grandes volúmenes de datos que necesitan ser comparados para encontrar patrones, coincidencias o relaciones.
Características clave de una base de datos vectorial:
Almacenamiento de vectores: Se pueden almacenar vectores de alta dimensión de manera eficiente, sin necesidad de representar datos complejos en un formato de texto o numérico tradicional.
Consultas de similitud: Las bases de datos vectoriales permiten realizar consultas rápidas basadas en la similitud entre vectores, utilizando métricas como la distancia euclidiana, el coseno de similitud, o la distancia de Manhattan. Esto es útil para tareas como búsqueda de documentos similares, recomendaciones de productos, etc.
Búsquedas de vecinos más cercanos (k-NN): Una de las principales aplicaciones de las bases de datos vectoriales es la búsqueda de los "vecinos más cercanos" a un vector dado, lo que se utiliza en sistemas de recomendación, búsqueda semántica, y más. Los algoritmos como Approximate Nearest Neighbor (ANN) permiten realizar estas búsquedas de manera eficiente en grandes cantidades de datos.
Optimización para alta dimensionalidad: Las bases de datos vectoriales están optimizadas para manejar la alta dimensionalidad de los vectores (por ejemplo, vectores de 100 dimensiones o más), algo que las bases de datos tradicionales no manejan bien debido al costo computacional.
Ejemplos de bases de datos vectoriales:
Pinecone: Un servicio de base de datos vectorial en la nube que permite almacenar y buscar vectores de alta dimensión.
FAISS (Facebook AI Similarity Search): Un framework de código abierto para realizar búsquedas rápidas de vectores similares, desarrollado por Facebook.
Weaviate: Una base de datos vectorial con capacidades de búsqueda semántica y que soporta integraciones con modelos de lenguaje como BERT y otros.
Milvus: Una plataforma de código abierto para almacenar, indexar y buscar vectores a gran escala, utilizada para tareas de inteligencia artificial y análisis de grandes volúmenes de datos no estructurados.
Casos de uso:
Búsqueda semántica: Buscar documentos que son semánticamente similares a una consulta, en lugar de simplemente coincidir con las palabras exactas.
Sistemas de recomendación: Sugerir productos, música, o contenido en base a la similitud de vectores entre los intereses de los usuarios y los ítems disponibles.
Clasificación y clustering: Agrupar objetos similares o realizar tareas de clasificación basadas en sus representaciones vectoriales.
Las bases de datos vectoriales han ganado popularidad en aplicaciones de inteligencia artificial, particularmente en NLP y visión por computadora, donde los modelos generan representaciones densas y de alta dimensión que necesitan ser almacenadas y consultadas de manera eficiente.
Excelente , estoy emocionado por este curso , Gracias
Genial que estén generando cursos más avanzados en estas rutas!
Me sale este error en la linea
from sentence_transformers import SentenceTransformer, util
algo cambio?
When express the use of LLM, What does he mean ? Because when I use ChatGPT I never use an Embeddings only put my text into in the input text box and appear to answer the question that appear at that moment. The question that appears is, What does he mean with say the use of LLM.
uhoo linda reflexión, igual desde platzy con los cursos orientados a pln siempre se da a entender que estas técnicas hacen un análisis numérico estadístico del lenguaje sin tener una comprensión contextual como la puede realizar la neurona biologica.
Mira aca chatGPT (amorosamente CHAPI ) nos ayuda un poco:
prompt: ayúdame a reflexionar sobre la respuesta a esta pregunta ¿ los modelos LLM tienen una comprensión del lenguaje como puede tenerlo una neurona bilógica o analiza numérica , vectorial y estadísticamente los textos?
Resp: Las neuronas biológicas en el cerebro humano están diseñadas de manera intrincada y son responsables de nuestra capacidad para comprender y procesar el lenguaje. Estas neuronas interactúan en redes complejas y están influenciadas por una variedad de factores, como la experiencia, la memoria y las conexiones sinápticas.
Por otro lado, los modelos de lenguaje basados en IA se entrenan utilizando grandes conjuntos de datos de texto y algoritmos de aprendizaje automático. En lugar de replicar directamente el funcionamiento de las neuronas biológicas, estos modelos analizan los textos de manera numérica, vectorial y estadística. Utilizan técnicas como el procesamiento de palabras, la representación vectorial de palabras (como word embeddings) y los modelos de atención para capturar patrones y relaciones en los datos de entrenamiento.
Aunque los modelos de lenguaje pueden lograr resultados sorprendentes en tareas de procesamiento de lenguaje natural, no poseen una comprensión del lenguaje en el mismo sentido que las neuronas biológicas. Los modelos de lenguaje son capaces de inferir patrones y correlaciones estadísticas en los datos de entrenamiento, lo que les permite generar respuestas coherentes y realizar tareas de procesamiento de lenguaje. Sin embargo, su comprensión es limitada en comparación con la complejidad y sutileza de la comprensión del lenguaje humano por parte de las neuronas biológicas.
Mira, ya humano habla nuevamente, creo que las sociedades segun sus pautas culturales tienen distintas formas de comprender la realidad. La mirada oriental no será exactamente la misma de la occidental, y por lo tanto el discurso es analizado de formas diversas. Si hay un mismo patrón, el biológico.
Podríamos decir que los LLMs son un análisis y comprensión del discurso (lenguaje) desde un patrón distinto?
Podríamos decir una comprensión desde otro lugar de análisis de manera numérica, vectorial y estadística.
Lo que si por el momento y solo por el momento estos modelos no pueden tomar decisiones-acciones por si mismo a través de su análisis del lenguaje
Termine el curso de redes neuronales convolucionales y rapidamente comencé este emocionante
Por qué se dice que es multidimensional? Si lo que yo veo es que son vectores en un espacio tridimensional, no me queda del todo claro esa parte
Una forma de reducir falsos positivos como crema de mani y crema de mano es combinar la similitud del coseno con una medida de distancia de edición sobre los textos originales, de modo que pares con alta similitud vectorial pero gran diferencia ortográfica sean descartados
Hola como resolverías el caso de 'crema de mani' y 'crema de mano', teniendo en cuenta que son productos totalmente difeente, sin embargo al hacer distancia coseno aparece con un puntaje alto.. ??
Una duda: una vez que tengo los embeddings, ¿qué técnicas, metodologías o modelos estadísticos, de machine learning y/o deep learning puedo usar para validar y tener cierta seguridad de que esos embeddigns sean correctos de acuerdo a las relaciones entre frases? Para evitar que haga relaciones sin sentido como en el caso de estas frases:
el esfuerzo hace al hombre ----> hacemos lo que podemos
como puedo poner chromadb en la nube para usarla en algun proyecto?
Interesante curso.
Aquí adelantándome: Es decir que si quiero darle cierta información (conocimiento sobre algún tema) esa data seria el equivalente a la variable “sentences” ? para luego ser incrustada?
Los embeddings son representaciones vectoriales de objetos, como palabras, frases, imágenes o incluso usuarios, en un espacio de dimensión reducida. Estas representaciones son útiles en tareas de aprendizaje automático, ya que permiten que los modelos trabajen con datos de una forma más eficiente y manejable.
Por ejemplo, en el contexto del procesamiento de lenguaje natural (NLP), un embedding de una palabra es un vector numérico que captura el significado semántico de esa palabra. Las palabras que tienen significados similares en un contexto determinado estarán cerca unas de otras en el espacio de embeddings.
En lugar de representar cada palabra o entidad como una secuencia de caracteres o símbolos, los embeddings permiten representaciones continuas que preservan las relaciones semánticas entre las palabras (o cualquier tipo de objeto). Esto facilita tareas como traducción automática, clasificación de texto, análisis de sentimientos y otras aplicaciones en las que los modelos de ML requieren de una comprensión más profunda del significado y la estructura de los datos.
Algunos ejemplos populares de embeddings son:
Word2Vec: Un modelo de embedding de palabras.
GloVe: Un algoritmo que genera embeddings para palabras basado en la co-ocurrencia de las mismas en grandes cantidades de texto.
BERT y GPT: Modelos preentrenados que generan embeddings contextuales, lo que significa que la representación de una palabra puede cambiar según el contexto en el que aparece.
Los embeddings también se usan fuera de NLP, como en sistemas de recomendación, donde los usuarios y productos pueden ser representados en un espacio vectorial para predecir qué productos podrían gustar a un usuario basándose en su historial de interacciones.
Que curso me recomiendan tomar antes de este para entender mejor? siento que es un poco avanzado para mi nivel, creo que mas que nada en la parte de programacion y un poco en la terminologia, especialmente cuando dice "se instancio esto de eso" o cosas por el estilo.