การ Upsert เวกเตอร์สำหรับ Semantic Search
ได้เวลา embed ข้อมูลข้อความและ upsert เวกเตอร์พร้อม metadata ลงใน index ชื่อ 'pinecone-datacamp' กัน! มีชุดข้อมูลชื่อ squad_dataset.csv ให้พร้อมแล้ว โดยโหลดตัวอย่าง 200 แถวลงใน DataFrame ชื่อ df
ในแบบฝึกหัดนี้ ในการเรียกใช้ OpenAI API เพื่อใช้งานโมเดล embedding ไม่จำเป็นต้องสร้างหรือใช้ API key ของตัวเอง มี OpenAI client ที่พร้อมใช้งานสร้างไว้ให้แล้วในตัวแปร client
โจทย์คือให้ embed ข้อความโดยใช้ OpenAI API จากนั้น upsert embedding และ metadata ลงใน Pinecone index ภายใต้ namespace ชื่อ squad_dataset
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Vector Databases สำหรับ Embeddings ด้วย Pinecone
คำแนะนำการฝึกหัด
- เริ่มต้น Pinecone client ด้วย API key ของคุณ (OpenAI client พร้อมใช้งานแล้วในตัวแปร
client) - ดึง metadata ได้แก่
'id','text', และ'title'จากแต่ละrowในแต่ละ batch - Encode
textsโดยใช้โมเดล'text-embedding-3-small'จาก OpenAI ที่มีจำนวนมิติ1536 - Upsert เวกเตอร์และ metadata ลงใน namespace ชื่อ
'squad_dataset'
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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=____)