포함은 기계 학습 모델 및 알고리즘에서 쉽게 활용할 수 있는 특수한 형식의 데이터 표현입니다. 임베딩은 텍스트의 의미론적 의미를 정보가 밀집된 방식으로 표현한 것입니다. 각 포함은 부동 소수점 숫자의 벡터입니다. 따라서 벡터 공간의 두 포함 사이의 거리는 원래 형식의 두 입력 간의 의미 체계 유사성과 상관 관계가 있습니다. 예를 들어 두 텍스트가 비슷한 경우 벡터 표현도 유사해야 합니다.
Azure Cosmos DB for NoSQL, Azure Cosmos DB for MongoDB vCore, Azure SQL Database 또는 Azure Database for PostgreSQL - 유연한 서버와 같은 Azure Database에서 임베딩이 벡터 유사성 검색을 가능하게 합니다.
포함을 가져오는 방법
텍스트 조각에 대한 포함 벡터를 가져오려면 다음 코드 조각과 같이 포함 엔드포인트에 요청합니다.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/v1/embeddings \
-H 'Content-Type: application/json' \
-H 'api-key: YOUR_API_KEY' \
-d '{"input": "Sample Document goes here"}'
import os
from openai import OpenAI
client = OpenAI(
api_key = os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)
response = client.embeddings.create(
input = "Your text string goes here",
model= "text-embedding-3-large"
)
print(response.model_dump_json(indent=2))
using OpenAI;
using OpenAI.Embeddings;
using System.ClientModel;
EmbeddingClient client = new(
"text-embedding-3-small",
credential: new ApiKeyCredential("API-KEY"),
options: new OpenAIClientOptions()
{
Endpoint = new Uri("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1")
}
);
string input = "This is a test";
OpenAIEmbedding embedding = client.GenerateEmbedding(input);
ReadOnlyMemory<float> vector = embedding.ToFloats();
Console.WriteLine($"Embeddings: [{string.Join(", ", vector.ToArray())}]");
package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go/v2"
"github.com/openai/openai-go/v2/option"
)
func main() {
// Get API key from environment variable
apiKey := os.Getenv("AZURE_OPENAI_API_KEY")
if apiKey == "" {
panic("AZURE_OPENAI_API_KEY environment variable is not set")
}
// Create a client with Azure OpenAI endpoint and API key
client := openai.NewClient(
option.WithBaseURL("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"),
option.WithAPIKey(apiKey),
)
ctx := context.Background()
text := "The attention mechanism revolutionized natural language processing"
// Make an embedding request
embedding, err := client.Embeddings.New(ctx, openai.EmbeddingNewParams{
Input: openai.EmbeddingNewParamsInputUnion{OfString: openai.String(text)},
Model: "text-embedding-3-large", // Use your deployed model name on Azure
})
if err != nil {
panic(err.Error())
}
// Print embedding information
fmt.Printf("Model: %s\n", embedding.Model)
fmt.Printf("Number of embeddings: %d\n", len(embedding.Data))
fmt.Printf("Embedding dimensions: %d\n", len(embedding.Data[0].Embedding))
fmt.Printf("Usage - Prompt tokens: %d, Total tokens: %d\n", embedding.Usage.PromptTokens, embedding.Usage.TotalTokens)
// Print first few values of the embedding vector
fmt.Printf("First 10 embedding values: %v\n", embedding.Data[0].Embedding[:10])
}
# 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/
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/v1/embeddings"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
return $response.data.embedding
모범 사례
- 최신 포함 모델에 대한 입력 텍스트의 최대 길이는 8,192개의 토큰입니다. 요청하기 전에 입력이 이 제한을 초과하지 않는지 확인해야 합니다.
- 단일 포함 요청으로 입력 배열을 보내는 경우 최대 배열 크기는 2048입니다.
- 단일 요청에서 입력 배열을 보낼 때는 요청의 분당 토큰 수가 모델 배포 시 할당된 할당량 한도 미만으로 유지되어야 합니다. 기본적으로 최신 3세대 포함 모델에는 지역당 350K TPM 제한이 적용됩니다.
제한 사항 및 위험
포함 모델은 신뢰할 수 없거나 특정 경우에 사회적 위험을 초래할 수 있으며 완화 조치가 없을 때 피해를 줄 수 있습니다. 책임감 있게 사용하는 방법에 대한 자세한 내용은 책임 있는 AI 콘텐츠를 검토하세요.
다음 단계