Anlamsal arama için vektörleri upsert etme
Biraz metin verisini gömme ve vektörleri/metaveriyi 'pinecone-datacamp' indeksine upsert etme zamanı! Sana squad_dataset.csv adlı bir veri kümesi verildi ve 200 satırlık bir örnek df adlı DataFrame'e yüklendi.
Bu egzersizde, OpenAI API'siyle etkileşime geçip gömme (embedding) modelini kullanmak için kendi API anahtarını oluşturup kullanmana gerek yok. Geçerli bir OpenAI istemcisi senin için oluşturuldu ve client değişkenine atandı.
Görevin, metni OpenAI'nin API'sini kullanarak gömmek ve gömme vektörleri ile metaveriyi squad_dataset ad alanı altında Pinecone indeksine upsert etmek.
Bu egzersiz
Pinecone ile Vektör Veritabanları ve Embeddings
kursunun bir parçasıdırEgzersiz talimatları
- Pinecone istemcisini kendi API anahtarınla başlat (OpenAI istemcisi
clientolarak zaten hazır). - Partideki her bir
rowiçinden'id','text've'title'metaverisini çıkar. textslistesini OpenAI'nin'text-embedding-3-small'modeliyle, boyut1536olacak şekilde kodla.- Vektörleri ve metaverileri
'squad_dataset'adlı bir ad alanına upsert et.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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=____)