CommencezCommencez gratuitement

Insertion de vecteurs pour la recherche sémantique

Il est temps d'extraire des plongements (embeddings) à partir de texte et d'insérer ou mettre à jour les vecteurs ainsi que les métadonnées dans votre index 'pinecone-datacamp'! On vous fournit un jeu de données nommé squad_dataset.csv, et un échantillon de 200 lignes a été chargé dans le DataFrame df.

Dans cet exercice, pour interagir avec l'API d'OpenAI et utiliser leur modèle d'embedding, vous n'avez pas à créer ni à utiliser votre propre clé d'API. Un client OpenAI valide a été créé pour vous et assigné à la variable client.

Votre tâche consiste à générer les embeddings avec l'API d'OpenAI, puis à insérer ou mettre à jour les embeddings et les métadonnées dans l'index Pinecone sous l'espace de noms squad_dataset.

Cette activité fait partie du cours

Créer des applications d'IA avec Pinecone

Voir le cours

Instructions de l’exercice

  • Initialisez le client Pinecone avec votre clé d'API (le client OpenAI est déjà disponible sous client).
  • Extrayez les métadonnées 'id', 'text' et 'title' de chaque row du lot.
  • Encodez texts à l'aide de 'text-embedding-3-small' d'OpenAI avec une dimensionnalité de 1536.
  • Insérez ou mettez à jour les vecteurs et les métadonnées dans un espace de noms appelé 'squad_dataset'.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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=____)
Modifier et exécuter le code