埋め込みは、機械学習モデルとアルゴリズムで簡単に利用できる特別な形式のデータ表現です。 埋め込みは、テキストの意味論的意味の情報密度の高い表現です。 各埋め込みは浮動小数点数のベクトルであり、ベクトル空間内の 2 つの埋め込み間の距離は、元の形式の 2 つの入力間のセマンティック類似性と相関します。 たとえば、2 つのテキストが似ている場合、それらのベクトル表現も似ているはずです。 Azure Cosmos DB for NoSQL、Azure Cosmos DB for MongoDB 仮想コア、Azure SQL Database、Azure Database for PostgreSQL - フレキシブル サーバーなどの Azure データベースでは、埋め込みがベクター類似性検索を実現します。
埋め込みを取得する方法
テキストの埋め込みベクトルを取得するには、次のコード スニペットに示すように、埋め込みエンドポイントに対して要求を行います。
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/embeddings?api-version=2024-10-21\
-H 'Content-Type: application/json' \
-H 'api-key: YOUR_API_KEY' \
-d '{"input": "Sample Document goes here"}'
import os
from openai import AzureOpenAI
client = AzureOpenAI(
api_key = os.getenv("AZURE_OPENAI_API_KEY"),
api_version = "2024-10-21",
azure_endpoint =os.getenv("AZURE_OPENAI_ENDPOINT")
)
response = client.embeddings.create(
input = "Your text string goes here",
model= "text-embedding-3-large"
)
print(response.model_dump_json(indent=2))
using Azure;
using Azure.AI.OpenAI;
Uri oaiEndpoint = new ("https://YOUR_RESOURCE_NAME.openai.azure.com");
string oaiKey = "YOUR_API_KEY";
AzureKeyCredential credentials = new (oaiKey);
AzureOpenAIClient openAIClient = new (oaiEndpoint, credentials);
EmbeddingsOptions embeddingOptions = new()
{
DeploymentName = "text-embedding-3-large",
Input = { "Your text string goes here" },
};
var returnValue = openAIClient.GetEmbeddings(embeddingOptions);
foreach (float item in returnValue.Value.Data[0].Embedding.ToArray())
{
Console.WriteLine(item);
}
# Azure OpenAI metadata variables
$openai = @{
api_key = $Env:AZURE_OPENAI_API_KEY
api_base = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
api_version = '2024-02-01' # this may change in the future
name = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
}
$headers = [ordered]@{
'api-key' = $openai.api_key
}
$text = 'Your text string goes here'
$body = [ordered]@{
input = $text
} | ConvertTo-Json
$url = "$($openai.api_base)/openai/deployments/$($openai.name)/embeddings?api-version=$($openai.api_version)"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
return $response.data.embedding
ベスト プラクティス
- 最新の埋め込みモデルの入力テキストの最大長は 8,192 トークンです。 要求を行う前に、入力がこの制限を超えていないことを確認する必要があります。
- 1 回の埋め込み要求で入力の配列を送信する場合、最大配列サイズは 2048 です。
- 1 つの要求で入力の配列を送信するとき、要求の 1 分あたりのトークン数はモデル デプロイ時に割り当てられたクォータ制限を下回る必要があることを覚えておいてください。 既定では、最新の第 3 世代埋め込みモデルには、リージョンあたりの 350 K TPM の制限が適用されます。
制限事項とリスク
埋め込みモデルは、信頼性が低い場合や、特定のケースにおいて社会的リスクを引き起こす可能性があります。また、軽減策がない場合は損害を引き起こす可能性があります。 責任を持って使用する方法の詳細については、責任ある AI コンテンツを確認してください。
次のステップ