
Pavan Belagatti, 1 de marzo de 2024, Codificación de nivel superior.

El mundo de la IA ha avanzado muchísimo. Desde su popularidad inicial hasta convertirse en una realidad con herramientas como ChatGPT, vivimos un momento increíblemente asombroso. ¿Quién hubiera imaginado que una simple herramienta pudiera escribir un artículo completo? Incluso si existieran herramientas, no serían tan capaces ni potentes como las que vemos hoy, respaldadas por Grandes Modelos de Lenguaje (LLM).
Estos LLM pueden realizar diversas tareas como un cerebro humano. Almacenan el significado y el contexto de los datos introducidos en un formato especializado conocido como incrustaciones. Imagine capturar la esencia de una palabra, imagen o usuario en una sola ecuación matemática. Ese es el poder de las incrustaciones vectoriales, uno de los conceptos más fascinantes e influyentes del aprendizaje automático actual.
¿Qué son las incrustaciones vectoriales?
Las incrustaciones vectoriales son representaciones densas de objetos (incluyendo palabras, imágenes o perfiles de usuario) en un espacio vectorial continuo. Cada objeto se representa mediante un punto (o vector) en este espacio, donde la distancia y la dirección entre los puntos capturan las relaciones semánticas o contextuales entre los objetos. Por ejemplo, en PLN, las palabras similares se mapean próximas entre sí en el espacio de incrustación.

La importancia de las incrustaciones vectoriales reside en su capacidad para capturar la esencia de los datos de forma que los algoritmos informáticos puedan procesarlos eficientemente. Al traducir datos de alta dimensión a un espacio de menor dimensión, las incrustaciones permiten realizar cálculos complejos con mayor eficiencia. También ayudan a descubrir relaciones y patrones en los datos que podrían no ser evidentes en el espacio original.
Tipos de incrustaciones vectoriales
Las aplicaciones de IA generativa se crean mediante incrustaciones vectoriales y la fuente de datos puede ser texto, audio, vídeo y cualquier tipo de datos estructurados y no estructurados. Estas incrustaciones se dividen en cuatro categorías principales:
- Incrustaciones de palabras: Son los tipos más comunes de incrustaciones, utilizados para representar palabras en PLN. Entre los modelos más populares se incluyen Word2Vec, GloVe y FastText.
- Incrustaciones de oraciones y documentos : Capturan el significado semántico de oraciones y documentos. Técnicas como BERT y Doc2Vec son ejemplos.
- Incrustaciones de gráficos : se utilizan para representar nodos y bordes de gráficos en el espacio vectorial, lo que facilita tareas como la predicción de enlaces y la clasificación de nodos.
- Incrustaciones de imágenes : generadas por modelos de aprendizaje profundo, representan imágenes en forma de vector compacto, útil para tareas como reconocimiento y clasificación de imágenes.
Creación de incrustaciones vectoriales
Este proceso transforma el texto en vectores numéricos, lo que permite a los algoritmos realizar tareas como la búsqueda semántica, la clasificación de texto y el análisis de sentimientos con mayor precisión y eficiencia. La esencia de las incrustaciones vectoriales reside en su capacidad para preservar las relaciones semánticas; por ejemplo, las palabras con significados similares se colocan más cerca en el espacio vectorial.
Las técnicas para generar estas incrustaciones varían, con métodos como Word2Vec, GloVe y, más recientemente, modelos de transformadores avanzados como BERT y GPT de OpenAI. Cada técnica emplea diferentes algoritmos para analizar corpus de texto y aprender representaciones que reflejan el contexto y los patrones de uso de palabras o frases. Las incrustaciones son fundamentales para acortar la distancia entre el lenguaje humano y la comprensión de las máquinas, sentando las bases para numerosas aplicaciones en IA, desde chatbots hasta sistemas de recomendación de contenido.
Creemos algunas incrustaciones de texto usando SingleStore Notebooks y modelos de incrustación de OpenAI, Cohere y HuggingFace.
Una vez que se registre, haga clic en la pestaña Desarrollar para comenzar a utilizar Notebooks.
¿Nunca has usado Notebooks? Regístrate para tu prueba gratuita de SingleStore y empieza.

La pestaña Desarrollar tiene opciones como Editor SQL, Kai Shell y Cuadernos.

Haga clic en Cuadernos para crear un cuaderno nuevo.

Incorporaciones de OpenAI con ada-002
Necesitará una clave API de OpenAI para usar sus modelos. Instale el paquete Python de OpenAI si aún no lo ha hecho.

A continuación, importe las bibliotecas necesarias y mencione la clave API de OpenAI.

Utilice el formato de OpenAI para generar incrustaciones de texto.
def generate_embeddings(texto):
headers = {
"Autorización" : f "Portador {api_key}" ,
"Tipo de contenido" : "application/json"
}
data = {
"entrada" : texto,
"modelo" : "text-embedding-ada-002" ,
"formato_de_codificación" : "float"
}
response = requests.post( "https://api.openai.com/v1/embeddings" ,
headers=headers, data =json.dumps( data ))
return response.json()
Menciona el texto que quieres convertir como incrustación. Usaremos el texto «Pavan es un evangelista de desarrolladores» como entrada.
texto = "Pavan es un evangelista de los desarrolladores"
incrustaciones = generate_embeddings(texto)
imprimir(incrustaciones)
Lo que ven aquí son las incrustaciones vectoriales del texto «Pavan es un promotor de desarrolladores». De igual forma, podemos usar Cohere y HuggingFace para convertir nuestro texto en incrustaciones.
Creación de incrustaciones mediante Cohere
!pip install cohere
Vaya al sitio web de Cohere y obtenga la clave API (es gratuita) y menciónela como se muestra aquí en sus cuadernos.
import cohere
co = cohere.Client( 'agregue su clave de API de cohere' )
response = co.embed(
texts=[ 'Pavan es un evangelista de desarrolladores' ],
model= 'embed-english-v3.0' ,
input_type= 'classification'
)
print (response)
Creación de incrustaciones con HuggingFace
Como mencioné antes, también puedes crear incrustaciones con HuggingFace. Empieza instalando las bibliotecas necesarias.
!pip instala transformadores antorcha
A continuación, agregue el siguiente código para crear incrustaciones desde HuggingFace y ejecútelo:
de transformers import AutoTokenizer, AutoModel
import torch
def get_huggingface_embedding ( text,
model_name= 'sentence-transformers/all-MiniLM-L6-v2' ):
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
inputs = tokenizer(text, return_tensors= "pt" , padding= True ,
truncation= True , max_length= 512 )
con torch.no_grad():
outputs = model(**inputs)
# Puede elegir cómo derivar las incrustaciones finales, por ejemplo, agrupamiento de medias
embeddings = outputs.last_hidden_state.mean(dim= 1 ).squeeze().numpy()
return embeddings
# Ejemplo de uso
text = "Pavan es un evangelista de los desarrolladores."
incrustación_de_cara_abrazada = obtener_cara_abrazada_incrustación(texto)
imprimir (incrustación_de_cara_abrazada)
Puedes encontrar el código completo del Notebook en mi repositorio de GitHub .
Una vez creadas tus incrustaciones, necesitas almacenarlas, ¿verdad? Puedes almacenar fácilmente tus incrustaciones vectoriales en la base de datos SingleStore. Para ello, primero necesitas crear un espacio de trabajo y luego una base de datos dentro de él.

Una vez que crea un espacio de trabajo, es fácil borrar una base de datos con solo un clic.

Ahora, almacenemos nuestras incrustaciones vectoriales en la base de datos que acabamos de crear. He creado una base de datos llamada «incrustaciones» (como se puede ver en la imagen anterior).
Vaya al Editor SQL desde la pestaña Desarrollar .

Seleccione su espacio de trabajo y la base de datos en el menú desplegable. Vamos a crear una tabla para almacenar nuestras incrustaciones vectoriales. Como puede ver, mi tabla se llama «vectortable».

Ejecutemos el siguiente código para almacenar nuestras incrustaciones en nuestra tabla ‘vectortable’
INSERTAR EN vectortable(texto, vector) VALORES ("su texto",
JSON_ARRAY_PACK("agregar las incrustaciones"))
En «Tu texto», añade el texto que convertiste en incrustaciones vectoriales. En «Añadir las incrustaciones», añade las incrustaciones correspondientes.

Regresemos a nuestra base de datos y a la tabla que creamos, y confirmemos que nuestras incrustaciones se han almacenado.

De esta manera, puedes crear tus incrustaciones vectoriales y almacenarlas en SingleStore. Además, para ampliar esta función, también podemos realizar búsquedas indexadas de vecinos más cercanos (RNA) y mucho más. En el próximo blog, también te mostraremos cómo realizar búsquedas indexadas de RNA con SingleStore.
Las incrustaciones vectoriales son una herramienta indispensable en el aprendizaje automático y la ciencia de datos, ofreciendo un método sofisticado para representar y procesar datos en diversos dominios. A pesar de sus desafíos, el desarrollo continuo de técnicas y modelos de incrustación promete abordar estos problemas, ampliando su alcance y eficacia.