Upsert векторів для семантичного пошуку
Час створити вкладення (embeddings — векторні представлення) для текстових даних і додати вектори та метадані до вашого індексу 'pinecone-datacamp'! Вам надано набір даних squad_dataset.csv, а вибірку з 200 рядків завантажено в датафрейм df.
У цій вправі, щоб працювати з OpenAI API та використати їхню модель для створення вкладень, вам не потрібно створювати й використовувати власний ключ API. Для вас уже створено чинний клієнт OpenAI і присвоєно змінній client.
Ваше завдання — отримати вкладення тексту за допомогою API OpenAI та виконати upsert вкладень і метаданих в індекс Pinecone в просторі імен squad_dataset.
Ця вправа є частиною курсу
Створення AI‑застосунків із Pinecone
Інструкції до вправи
- Ініціалізуйте клієнт Pinecone із вашим ключем API (клієнт OpenAI уже доступний як
client). - Витягніть метадані
'id','text'і'title'з кожногоrowу пакеті. - Закодуйте
texts, використовуючи модель OpenAI'text-embedding-3-small'із розмірністю1536. - Виконайте upsert векторів і метаданих у простір імен
'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=____)