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
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 elkerowin de batch. - Encodeer
textsmet'text-embedding-3-small'van OpenAI met dimensionaliteit1536. - 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=____)