เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การ 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=____)
แก้ไขและรันโค้ด