1. Introducción a los Embeddings

1.1. ¿Qué son los Embeddings?

Los embeddings, en el campo del aprendizaje automático, especialmente para abordar problemas de procesamiento del lenguaje natural (PLN), son una técnica para transformar datos de texto en vectores numéricos. En el lenguaje humano, el significado de palabras y frases se determina por su contexto y uso. El objetivo de los embeddings es capturar la semántica de estas unidades lingüísticas, permitiendo a las computadoras entender y procesarlas.

La idea central de los embeddings es mapear palabras con significados similares a puntos cercanos en un espacio matemático, representando palabras como puntos en un espacio de alta dimensión. De esta manera, las palabras con significados semánticamente cercanos (por ejemplo, "rey" y "reina") estarán cercanas en el espacio. Los embeddings suelen estar compuestos por matrices de punto flotante, lo que permite que fragmentos de texto muy diferentes (como "perro" y "canino") tengan representaciones de embeddings similares.

Nota: Como desarrollador de aplicaciones, simplemente puedes entender que para dos frases de texto con significados similares, la similitud del vector de embedding es alta.

1.2. Aplicaciones de los Embeddings

Los embeddings se utilizan ampliamente en diversos escenarios, aquí algunos casos de uso principales:

  1. Búsqueda: Utilizar características de embedding para clasificar los resultados de búsqueda en base a su relevancia con el texto de la consulta.
  2. Agrupación: Los embeddings pueden ayudar a identificar y categorizar fragmentos de texto semánticamente similares.
  3. Sistemas de recomendación: Recomendar elementos basados en similitud puede ayudar a descubrir y recomendar otros elementos similares a los conocidos.
  4. Detección de anomalías: Los embeddings se pueden utilizar para identificar puntos de datos significativamente diferentes del conjunto de datos principal.
  5. Medición de diversidad: Los embeddings también se pueden utilizar para analizar la distribución de similitud entre textos diferentes.
  6. Clasificación: Comparar texto con un conjunto de embeddings de etiquetas conocidas para clasificarlo en la categoría más similar.

2. Introducción a los Embeddings de OpenAI

2.1. Visión general de los Modelos de Embeddings de OpenAI

OpenAI proporciona modelos de embedding de tercera generación, incluyendo text-embedding-3-small y text-embedding-3-large. Estos modelos están construidos sobre la tecnología única de aprendizaje profundo de OpenAI, con el objetivo de proporcionar un rendimiento altamente multilingüe y al mismo tiempo intentar reducir costos.

Estos modelos tienen características únicas al procesar embeddings. Por ejemplo, text-embedding-3-small ofrece vectores de embedding de 1536 dimensiones, mientras que text-embedding-3-large proporciona vectores de embedding de 3072 dimensiones para cubrir características de texto más complejas. Al ajustar los parámetros, la dimensionalidad de los embeddings se puede controlar para satisfacer las necesidades específicas de los escenarios de aplicación.

2.2. Selección y Uso del Modelo

Elegir el modelo de embedding adecuado depende de los requisitos específicos de la aplicación. Aquí te mostramos cómo hacer la selección en diferentes escenarios de aplicación:

  1. En escenarios enfocados en el rendimiento: Si necesitas capturar información semántica más detallada, como en sistemas de recomendación de granularidad fina o clasificación de texto de alta precisión, generalmente se recomienda usar text-embedding-3-large. Aunque es más caro que los modelos más pequeños, puede proporcionar una representación más rica de las características del texto.

  2. En aplicaciones sensibles al costo: Para aplicaciones que requieren procesar una gran cantidad de datos pero no tienen requisitos de precisión particularmente altos, como exploración inicial de datos o prototipos rápidos, text-embedding-3-small es una opción más económica. Mantiene un rendimiento relativamente alto mientras reduce significativamente los costos.

  3. Entornos multilingües: Estos modelos de embedding tienen un alto rendimiento multilingüe, lo que los hace especialmente útiles en escenarios cruzados o multilingües, convirtiéndolos en una opción ideal para aplicaciones globales.

Elegir el modelo de embedding adecuado dependerá de los requisitos específicos, la complejidad de los datos y del punto de equilibrio deseado entre rendimiento y costos.

3. Cómo Utilizar los Embeddings

3.1 Uso de curl para llamar a la API de Embeddings

curl es una herramienta comúnmente utilizada en la línea de comandos para enviar solicitudes HTTP. El siguiente ejemplo muestra cómo usar curl para obtener la representación de embedding de un texto:

curl https://api.openai.com/v1/embeddings \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
        "input": "El aprendizaje automático es una rama de la inteligencia artificial.",
        "model": "text-embedding-3-small"
    }'

En el comando anterior, la variable $OPENAI_API_KEY contiene la clave de API de OpenAI del usuario, la cual debe ser reemplazada por una clave válida para su uso real.

Después de ejecutar este comando, la API de Embeddings de OpenAI devolverá una respuesta que contiene la representación de embedding del texto. Aquí tienes un ejemplo del resultado de una llamada a la API:

{
  "objeto": "lista",
  "datos": [
    {
      "objeto": "embedding",
      "índice": 0,
      "embedding": [  // Aquí se encuentra el vector característica
        -0.006929283495992422,
        -0.005336422007530928,
        ...  // Números restantes omitidos para la visualización
        -4.547132266452536e-05,
        -0.024047505110502243
      ]
    }
  ],
  "modelo": "text-embedding-3-small",
  "uso": {
    "tokens_de_prompt": 5,
    "tokens_totales": 5
  }
}

3.2 Uso de Cliente Python para llamar a la API de Embeddings

Además de usar curl para llamar directamente a la API desde la línea de comandos, también puedes usar un cliente Python. Esto requiere primero instalar la biblioteca oficial openai. Aquí tienes un ejemplo de cómo obtener embeddings de texto usando Python:

import openai

openai.api_key = 'TU_CLAVE_API_DE_OPENAI'  # Reemplaza con tu clave de API de OpenAI

respuesta = openai.Embedding.create(
  input="La inteligencia artificial está cambiando el mundo.",
  model="text-embedding-3-small"
)

vector_embedding = respuesta['datos'][0]['embedding']
print(vector_embedding)

Al ejecutar este script de Python, obtendrás un vector de embedding similar al que se obtiene al usar curl. Este vector es una lista de números de punto flotante, que representa la representación numérica del texto de entrada en el espacio de embedding.

El resultado de la llamada es el siguiente:

[-0.0032198824, 0.0022555287, ..., 0.0015886585, -0.0021505365]

3.2 Operando con Vectores de Embedding

OpenAI solo proporciona el modelo de cálculo de vectorización de texto Embeddings. Si deseas utilizar Embeddings para implementar funciones como la búsqueda de similitud de texto, necesitarás aprender sobre bases de datos vectoriales, como Qdrant, Chroma y Milvus.

Por favor, consulta los siguientes tutoriales de bases de datos vectoriales: