การแบ่งกลุ่ม upserts

การสร้างแอปพลิเคชัน AI ด้วย Pinecone

James Chapman

Curriculum Manager, DataCamp

ข้อจำกัดของการ upsert

 

  1. อัตราการส่งคำขอ
  2. ขนาดของคำขอ

 

  • Batching: การแบ่งคำขอออกเป็น chunks ย่อย

 

pinecone-rate-limits.png

1 https://docs.pinecone.io/reference/quotas-and-limits#rate-limits
การสร้างแอปพลิเคชัน AI ด้วย Pinecone

การกำหนดฟังก์ชัน chunking

def chunks(iterable, batch_size=100):

it = iter(iterable)
chunk = tuple(itertools.islice(it, batch_size))
while chunk:
yield chunk
chunk = tuple(itertools.islice(it, batch_size))
การสร้างแอปพลิเคชัน AI ด้วย Pinecone

Sequential batching

  • แบ่งคำขอและส่งทีละรายการ ตามลำดับ
pc.Pinecone(api_key="YOUR API KEY")
index = pc.Index('datacamp-index')


for chunk in chunks(vectors): index.upsert(vectors=chunk)

ข้อดี:

  • แก้ปัญหาข้อจำกัดด้านอัตราและขนาด

ข้อเสีย:

  • ช้ามาก!
การสร้างแอปพลิเคชัน AI ด้วย Pinecone

Parallel batching

  • แบ่งคำขอและส่งแบบ parallel
pc = Pinecone(api_key="YOUR_API_KEY", pool_threads=30)


with pc.Index('datacamp-index', pool_threads=30) as index:
async_results = [index.upsert(vectors=chunk, async_req=True) for chunk in chunks(vectors, batch_size=100)]
[async_result.get() for async_result in async_results]
การสร้างแอปพลิเคชัน AI ด้วย Pinecone

มาฝึกกันเถอะ!

การสร้างแอปพลิเคชัน AI ด้วย Pinecone

Preparing Video For Download...