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, kursun bir parçasıdır
Pinecone ile Vektör Veritabanları ve Embeddings
Egzersiz 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ı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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=____)