Gộp upsert theo lô

Xây dựng ứng dụng AI với Pinecone

James Chapman

Curriculum Manager, DataCamp

Giới hạn khi upsert

 

  1. Tốc độ yêu cầu
  2. Kích thước yêu cầu

 

  • Batching: chia yêu cầu thành các khối nhỏ

 

Giới hạn tốc độ của Pinecone

1 https://docs.pinecone.io/reference/quotas-and-limits#rate-limits
Xây dựng ứng dụng AI với Pinecone

Định nghĩa hàm chia khối

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))
Xây dựng ứng dụng AI với Pinecone

Gộp tuần tự

  • Chia yêu cầu và gửi tuần tự từng cái một
pc.Pinecone(api_key="YOUR API KEY")
index = pc.Index('datacamp-index')


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

Ưu điểm:

  • Giải quyết giới hạn tốc độ và kích thước

Nhược điểm:

  • Rất chậm!
Xây dựng ứng dụng AI với Pinecone

Gộp song song

  • Chia yêu cầu và gửi song song
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]
Xây dựng ứng dụng AI với Pinecone

Hãy luyện tập!

Xây dựng ứng dụng AI với Pinecone

Preparing Video For Download...