テキスト(文章)をベクトル変換することによって、テキスト同士の類似性比較を行うことができるようになります。
// 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件のコメント