为语义搜索进行向量 upsert
现在把部分文本数据转成嵌入向量,并将向量与元数据 upsert 到您的 'pinecone-datacamp' 索引中!我们提供了一个名为 squad_dataset.csv 的数据集,已将其中 200 行样本加载到 DataFrame df。
在本练习中,您将通过 OpenAI API 使用其 embedding 模型,无需创建并使用您自己的 API 密钥。 已为您创建有效的 OpenAI 客户端,并赋值给变量 client。
您的任务是使用 OpenAI 的 API 对文本进行嵌入,然后将嵌入向量和元数据以命名空间 squad_dataset upsert 到 Pinecone 索引中。
本练习是课程的一部分
使用 Pinecone 构建 AI 应用
练习说明
- 使用您的 API 密钥初始化 Pinecone 客户端(OpenAI 客户端已作为
client提供)。 - 从批次中的每个
row提取'id'、'text'和'title'元数据。 - 使用 OpenAI 的
'text-embedding-3-small'对texts编码,向量维度为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=____)