Laravel10 OpenAIのEmbeddings APIをコールしてベクトル化する方法

テキスト(文章)をベクトル変換することによって、テキスト同士の類似性比較を行うことができるようになります。

        // OpenAIのAPIキーをセット
        $api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

        $input_texts = [];
        $input_texts[] = "ベクトル化したい文字列";

        $url = 'https://api.openai.com/v1/embeddings';

        $data = array(
            'input' => $input_texts,
            'model' => 'text-embedding-ada-002'
        );

        $headers = array(
            'Content-Type: application/json',
            'Authorization: Bearer ' . $api_key
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $response = curl_exec($ch);
        // 応答をデコード
        $result = json_decode($response, true);
dd($result);

「ベクトル化したい文字列」を1,536次元のベクトルに変換された結果が返ってきます。

array:4 [▼ 
  "object" => "list"
  "data" => array:1 [▼
    0 => array:3 [▼
      "object" => "embedding"
      "index" => 0
      "embedding" => array:1536 [▼
        0 => -0.0025436967
        1 => -0.004346724
        2 => -0.0025327122
        3 => -0.010978225
        4 => 0.006361596
        5 => 0.034472503
        6 => -0.018604608
        7 => -0.006195259
        8 => -0.0154034095
        9 => -0.010093188
        10 => 0.011850708
        11 => -0.004811212
        12 => 0.006019507
        13 => -0.020751294
        14 => -0.026136838
        15 => -0.021002367
        16 => 0.019445706
        17 => -0.02317416
        18 => 0.022521367
        19 => -0.035552125
        20 => 0.0074129696
        21 => 0.00058570935
        22 => 0.009553378
        23 => -0.021366425
        24 => -0.03738497
        25 => -0.013244171
       ・
       ・
       ・
        1533 => -0.015491285
        1534 => 0.0041835257
        1535 => -0.001646106
    ]
  ]
  "model" => "text-embedding-ada-002"
  "usage" => array:2 [▼
    "prompt_tokens" => 9
    "total_tokens" => 9
  ]
]

2件のコメント

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です