Regrouper les upserts

Créer des applications d'IA avec Pinecone

James Chapman

Curriculum Manager, DataCamp

Limites des upserts

 

  1. Fréquence des requêtes
  2. Taille des requêtes

 

  • Regroupement : découper les requêtes en petits blocs

 

Limites de débit de Pinecone

1 https://docs.pinecone.io/reference/quotas-and-limits#rate-limits
Créer des applications d'IA avec Pinecone

Définir une fonction de découpage

def chunks(iterable, batch_size=100):

it = iter(iterable)
chunk = tuple(itertools.islice(it, batch_size))
while chunk:
yield chunk
chunk = tuple(itertools.islice(it, batch_size))
Créer des applications d'IA avec Pinecone

Regroupement séquentiel

  • Scinder les requêtes et les envoyer une à une
pc.Pinecone(api_key="YOUR API KEY")
index = pc.Index('datacamp-index')


for chunk in chunks(vectors): index.upsert(vectors=chunk)

Avantages :

  • Résout les limites de fréquence et de taille

Inconvénients :

  • Vraiment lent !
Créer des applications d'IA avec Pinecone

Regroupement parallèle

  • Scinder les requêtes et les envoyer en parallèle
pc = Pinecone(api_key="YOUR_API_KEY", pool_threads=30)


with pc.Index('datacamp-index', pool_threads=30) as index:
async_results = [index.upsert(vectors=chunk, async_req=True) for chunk in chunks(vectors, batch_size=100)]
[async_result.get() for async_result in async_results]
Créer des applications d'IA avec Pinecone

Passons à la pratique !

Créer des applications d'IA avec Pinecone

Preparing Video For Download...