Vektoren für die semantische Suche hochladen
Jetzt kannst du ein paar Textdaten einbetten und die Vektoren und Metadaten in deinen Index „ 'pinecone-datacamp' “ einfügen! Du hast einen Datensatz namens squad_dataset.csv, und ein Beispiel mit 200 Zeilen wurde in den DataFrame „ df “ geladen.
In dieser Übung musst du keinen eigenen API-Schlüssel erstellen und verwenden, um mit der OpenAI-API zu interagieren und deren Einbettungsmodell zu nutzen . Ein funktionierender OpenAI-Client wurde für dich erstellt und der Variablen „ client “ zugewiesen.
Deine Aufgabe ist es, den Text mithilfe der API von OpenAI einzubetten und die Einbettungen und Metadaten unter dem Namespace „ squad_dataset “ in den Pinecone-Index einzufügen.
Diese Übung ist Teil des Kurses
Vektordatenbanken für Einbettungen mit Pinecone
Anleitung zur Übung
- Starte den Pinecone-Client mit deinem API-Schlüssel (der OpenAI-Client ist schon als
clientverfügbar). - Extrahier die Metadaten „
'id'“, „'text'“ und „'title'“ aus jedem „row“ im Stapel. textsmit „'text-embedding-3-small'” von OpenAI und Dimensions1536kodieren.- Füge die Vektoren und Metadaten in einen Namespace namens „
'squad_dataset'“ ein.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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=____)