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
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 chaquerowdu lot. - Encodez
textsà l'aide de'text-embedding-3-small'd'OpenAI avec une dimensionnalité de1536. - 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=____)