Manejo de Embeddings con OpenAI: API, Instalación y Datasets
Clase 11 de 26 • Curso de Embeddings y Bases de Datos Vectoriales para NLP
Resumen
¿Cómo acceder a la funcionalidad de embeddings de OpenAI?
Acceder a la funcionalidad de embeddings de OpenAI es una herramienta poderosa que permite transformar texto en representaciones numéricas (embeddings) que capturan el significado semántico del mismo. Para empezar, necesitas instalar las librerías de OpenAI y TickToken, necesarias para gestionar los embeddings y medir la cantidad de tokens que se utilizarán, respectivamente.
¿Cómo importar las librerías y definir el API Key?
- Instala las librerías de OpenAI y TickToken.
- Importa las librerías necesarias:
OpenAI
,GetPass
,OS
, ypandas
. GetPass se utiliza para manejar la API Key de forma segura. - Define la API Key utilizando
OpenAI.APIKey
para asegurar la autenticidad al acceder a los servicios de OpenAI.
¿Cómo cargar y visualizar el dataset?
Para poder manejar y procesar la información, es necesario cargar un dataset. En este caso, se utilizó un archivo CSV llamado GenericFoot
, que contiene información sobre alimentos, su nombre científico, grupo y subgrupo.
import pandas as pd
# Cargar dataset
df = pd.read_csv('GenericFoot.csv')
# Visualizar dataset
print(df.head())
¿Cómo calcular la cantidad de tokens necesaria?
OpenAI cobra por el uso de tokens, por lo que es esencial calcular cuántos se necesitan antes de ejecutar las funciones de embeddings. Para esto:
- Importa TickToken.
- Crea una función
numTokensFromString
para evaluar la cantidad de tokens que un texto utilizará, basado en un encoder determinado. - Asigna la cantidad de tokens calculada a una nueva columna
TotalTokens
en tu DataFrame.
import tiktoken
def numTokensFromString(text, encoder_name):
encoding = tiktoken.getEncoding(encoder_name)
return len(encoding.encode(text))
df['TotalTokens'] = df['footName'].apply(lambda x: numTokensFromString(x, 'cl100kBase'))
total_tokens = df['TotalTokens'].sum()
print(f'Tokens totales: {total_tokens}')
¿Cómo generar y aplicar embeddings utilizando OpenAI?
Una vez que conoces la cantidad de tokens, puedes proceder a generar los embeddings. OpenAI ofrece modelos, como textEmbeddingADA002
, óptimos para esta tarea.
Creación de la función de embeddings
Crea una función getEmbedding
que se encargue de generar embeddings a partir de texto. Utiliza el modelo recomendado y asegúrate de procesar adecuadamente los saltos de línea.
def getEmbedding(text, model='textEmbeddingADA002'):
text = text.replace('\n', '')
response = openai.Embeddings.create(input=text, model=model)
return response['data'][0]['embedding']
Aplica esta función a tus datos para obtener los embeddings de cada fila de texto:
df['EmbeddingAda'] = df['footName'].apply(lambda x: getEmbedding(x))
Validación de la dimensionalidad del embedding
Los embeddings resultantes tienen una alta dimensionalidad, en este caso de 1536 dimensiones. Esto es gracias al uso de modelos avanzados como GPT-3 y GPT-4, que poseen complejidades y corpus de entrenamiento amplios.
Ejemplo de uso de la funcionalidad
Prueba la funcionalidad fuera del dataset:
test_embedding = getEmbedding("Esto es una prueba de embeddings para OpenAI")
print(len(test_embedding)) # Muestra la dimensionalidad del embedding
¿Cuáles son las limitaciones y consideraciones a tener en cuenta?
Es crucial estar al tanto de las restricciones de los modelos de OpenAI: desde la longitud máxima de texto que pueden procesar, inicialmente alrededor de 8000 caracteres, hasta las posibles actualizaciones en sus capacidades y costos asociados. Estas actualizaciones pueden ser verificadas en la documentación proporcionada por OpenAI.