セマンティック検索のためのベクトルをアップサートする
テキストデータを埋め込み、ベクトルとメタデータを'pinecone-datacamp'インデックスにアップサートしましょう。squad_dataset.csvというデータセットが用意されており、そのうち200行のサンプルがDataFrameのdfに読み込まれています。
この演習では、OpenAIの埋め込みモデルを使うためにOpenAI APIとやり取りしますが、ご自身のAPIキーを作成・使用する必要はありません。 すでに有効なOpenAIクライアントが作成され、client変数に割り当てられています。
あなたのタスクは、OpenAIのAPIでテキストを埋め込み、得られた埋め込みとメタデータを、squad_datasetという名前空間のPineconeインデックスにアップサートすることです。
この演習はコースの一部です
Pineconeを使ったAIアプリケーション開発
演習の手順
- PineconeクライアントをあなたのAPIキーで初期化します(OpenAIクライアントは
clientとして既に利用可能です)。 - バッチ内の各
rowから'id'、'text'、'title'の各メタデータを抽出します。 - OpenAIの
'text-embedding-3-small'(次元数1536)でtextsをエンコードします。 - ベクトルとメタデータを、
'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=____)