IniziaInizia gratis

Upsert dei vettori per la semantic search

È il momento di creare gli embedding di alcuni testi e fare l’upsert dei vettori e dei metadati nel tuo indice 'pinecone-datacamp'! Ti è stato fornito un insieme di dati chiamato squad_dataset.csv, e un campione di 200 righe è stato caricato nel DataFrame df.

In questo esercizio, per interagire con l'API di OpenAI e usare il loro modello di embedding, non devi creare né usare una tua API key. Un client OpenAI valido è già stato creato per te e assegnato alla variabile client.

Il tuo compito è creare gli embedding del testo usando l'API di OpenAI e fare l’upsert degli embedding e dei metadati nell’indice Pinecone, all’interno del namespace squad_dataset.

Questo esercizio fa parte del corso

Database vettoriali per Embeddings con Pinecone

Visualizza il corso

Istruzioni dell'esercizio

  • Inizializza il client Pinecone con la tua API key (il client OpenAI è già disponibile come client).
  • Estrai i metadati 'id', 'text' e 'title' da ogni row del batch.
  • Codifica i texts usando 'text-embedding-3-small' di OpenAI con dimensionalità 1536.
  • Esegui l’upsert dei vettori e dei metadati in un namespace chiamato 'squad_dataset'.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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=____)
Modifica ed esegui il codice