ComenzarEmpieza gratis

Inserción ascendente de vectores para la búsqueda semántica

¡Es hora de incrustar algunos datos de texto y actualizar los vectores y metadatos en tu índice « 'pinecone-datacamp' »! Se te ha proporcionado un conjunto de datos denominado squad_dataset.csvy se ha cargado una muestra de 200 filas en el DataFrame, df.

En este ejercicio, para interactuar con la API de OpenAI y utilizar su modelo de incrustación, no es necesario crear ni utilizar una clave API propia. Se ha creado un cliente OpenAI válido para ti y se ha asignado a la variable client.

Tu tarea consiste en incrustar el texto utilizando la API de OpenAI e insertar las incrustaciones y los metadatos en el índice de Pinecone bajo el espacio de nombres squad_dataset.

Este ejercicio forma parte del curso

Bases de datos vectoriales para incrustaciones con Pinecone

Ver curso

Instrucciones del ejercicio

  • Inicializa el cliente Pinecone con tu clave API (el cliente OpenAI ya está disponible en client).
  • Extrae los metadatos 'id', 'text' y 'title' de cada archivo row del lote.
  • Codifica texts utilizando 'text-embedding-3-small' de OpenAI con dimensionalidad 1536.
  • Inserta los vectores y los metadatos en un espacio de nombres llamado 'squad_dataset'.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Initialize the Pinecone client
pc = Pinecone(api_key="____")
index = pc.Index('pinecone-datacamp')

batch_limit = 100

for batch in np.array_split(df, len(df) / batch_limit):
    # Extract the metadata from each row
    metadatas = [{
      "text_id": row['____'],
      "text": row['____'],
      "title": row['____']} for _, row in batch.iterrows()]
    texts = batch['text'].tolist()
    
    ids = [str(uuid4()) for _ in range(len(texts))]
    
    # Encode texts using OpenAI
    response = ____(input=____, model="____")
    embeds = [np.array(x.embedding) for x in response.data]
    
    # Upsert vectors to the correct namespace
    ____(vectors=____(ids, embeds, metadatas), namespace=____)
Editar y ejecutar código