Загрузка векторов для семантического поиска
Пришло время превратить текстовые данные в эмбеддинги (векторные представления) и загрузить векторы вместе с метаданными в индекс 'pinecone-datacamp'! Вам предоставлен набор данных squad_dataset.csv, из которого уже загружена выборка из 200 строк в DataFrame df.
В этом упражнении для работы с API OpenAI и их моделью эмбеддингов создавать собственный ключ API не нужно. Готовый клиент OpenAI уже создан и доступен в переменной client.
Ваша задача — получить эмбеддинги текста с помощью API OpenAI и загрузить их вместе с метаданными в индекс Pinecone в пространстве имён squad_dataset.
Это упражнение является частью курса
Создание ИИ-приложений с Pinecone
Инструкции к упражнению
- Инициализируйте клиент Pinecone, используя ваш ключ API (клиент OpenAI уже доступен в переменной
client). - Извлеките метаданные
'id','text'и'title'из каждой строкиrowв батче. - Закодируйте
textsс помощью модели'text-embedding-3-small'от OpenAI с размерностью1536. - Загрузите векторы и метаданные в пространство имён
'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=____)