Upsert vector cho tìm kiếm ngữ nghĩa
Đến lúc nhúng (embed) một số dữ liệu văn bản và upsert các vector cùng metadata vào chỉ mục 'pinecone-datacamp'! Bạn được cung cấp một tập dữ liệu tên là squad_dataset.csv, và một mẫu gồm 200 dòng đã được nạp vào DataFrame df.
Trong bài này, để tương tác với OpenAI API và dùng mô hình embedding của họ, bạn không cần tạo và sử dụng khóa API của riêng mình. Một OpenAI client hợp lệ đã được tạo sẵn cho bạn và gán vào biến client.
Nhiệm vụ của bạn là tạo embedding cho văn bản bằng OpenAI API và upsert các embedding cùng metadata vào chỉ mục Pinecone trong namespace squad_dataset.
Bài tập này là một phần của khóa học
Cơ sở dữ liệu vector cho Embeddings với Pinecone
Hướng dẫn bài tập
- Khởi tạo Pinecone client với API key của bạn (OpenAI client đã có sẵn dưới tên
client). - Trích xuất metadata
'id','text', và'title'từ mỗirowtrong batch. - Mã hóa
textsbằng'text-embedding-3-small'của OpenAI với số chiều1536. - Upsert các vector và metadata vào namespace có tên
'squad_dataset'.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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=____)