Eseguire upsert in parallelo a batch
In questo esercizio metterai in pratica l'ingestione di vettori nell'indice Pinecone 'datacamp-index' in parallelo. Dovrai connetterti all'indice, eseguire l'upsert dei vettori in batch in modo asincrono e verificare le metriche aggiornate dell'indice 'datacamp-index'.
La funzione di supporto chunks() che hai creato in precedenza è ancora disponibile:
def chunks(iterable, batch_size=100):
"""A helper function to break an iterable into chunks of size batch_size."""
it = iter(iterable)
chunk = tuple(itertools.islice(it, batch_size))
while chunk:
yield chunk
chunk = tuple(itertools.islice(it, batch_size))
Questo esercizio fa parte del corso
Database vettoriali per Embeddings con Pinecone
Istruzioni dell'esercizio
- Inizializza il client Pinecone per consentire 20 richieste simultanee.
- Esegui l'upsert dei vettori in
vectorsin batch da 200 vettori per richiesta in modo asincrono, configurando20richieste simultanee. - Stampa le metriche aggiornate dell'indice Pinecone
'datacamp-index'.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Initialize the client
pc = Pinecone(api_key="____", ____)
index = pc.Index('datacamp-index')
# Upsert vectors in batches of 200 vectors
with pc.Index('datacamp-index', ____) as index:
async_results = [____(vectors=chunk, ____) for chunk in chunks(vectors, batch_size=____)]
[async_result.get() for async_result in async_results]
# Retrieve statistics of the connected Pinecone index
print(____)