Aan de slagGa gratis aan de slag

Vectors upserten voor semantisch zoeken

Tijd om tekstgegevens te embedden en de vectors en metadata te upserten in je 'pinecone-datacamp'-index! Je hebt een gegevensset gekregen met de naam squad_dataset.csv, en een steekproef van 200 rijen is geladen in de DataFrame df.

In deze oefening hoef je geen eigen API-sleutel te maken of te gebruiken om met de OpenAI API te werken en hun embeddingmodel te gebruiken. Er is al een geldige OpenAI-client voor je aangemaakt en toegewezen aan de variabele client.

Jouw taak is om de tekst te embedden met de API van OpenAI en de embeddings en metadata te upserten in de Pinecone-index onder de namespace squad_dataset.

Deze oefening maakt deel uit van de cursus

Vector-databases voor embeddings met Pinecone

Cursus bekijken

Oefeninstructies

  • Initialiseer de Pinecone-client met je API-sleutel (de OpenAI-client is al beschikbaar als client).
  • Haal de metadata 'id', 'text' en 'title' uit elke row in de batch.
  • Encodeer texts met 'text-embedding-3-small' van OpenAI met dimensionaliteit 1536.
  • Upsert de vectors en metadata in een namespace genaamd 'squad_dataset'.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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=____)
Code bewerken en uitvoeren