始める無料で始める

セマンティック検索のためのベクトルをアップサートする

テキストデータを埋め込み、ベクトルとメタデータを'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=____)
コードを編集して実行