> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Tạo Embedding

> Tạo một vector embedding đại diện cho văn bản đầu vào

## Nội dung Request

**Timeout cho yêu cầu đồng bộ:** endpoint không phải chat này chờ model được định tuyến hoàn tất. Input lớn, audio dài, hoặc batch lớn có thể vượt quá mặc định 30s phổ biến của client, vì vậy hãy đặt timeout của HTTP client ít nhất là `120s`.

<ParamField body="model" type="string" required>
  ID của model embedding sẽ sử dụng (ví dụ: `text-embedding-3-small`).
</ParamField>

<ParamField body="input" type="string | array" required>
  Văn bản đầu vào để tạo embedding. Có thể là một chuỗi hoặc một mảng các chuỗi.
</ParamField>

<ParamField body="encoding_format" type="string" default="float">
  Định dạng cho embeddings: `float` hoặc `base64`.
</ParamField>

<ParamField body="dimensions" type="integer">
  Số chiều cho đầu ra (phụ thuộc vào model).
</ParamField>

<ParamField body="user" type="string">
  Một mã định danh duy nhất đại diện cho end-user của bạn để giám sát lạm dụng.
</ParamField>

## Các Model Khả Dụng

| Mô hình                  | Kích thước | Mô tả               |
| ------------------------ | ---------- | ------------------- |
| `text-embedding-3-large` | 3072       | Chất lượng tốt nhất |
| `text-embedding-3-small` | 1536       | Cân bằng            |
| `text-embedding-ada-002` | 1536       | Phiên bản cũ        |

## Phản hồi

<ResponseField name="object" type="string">
  Luôn là `list`.
</ResponseField>

<ResponseField name="data" type="array">
  Mảng các đối tượng embedding.

  Mỗi đối tượng bao gồm:

  * `object` (string): `embedding`
  * `index` (integer): Chỉ mục trong mảng đầu vào
  * `embedding` (array): Vector embedding
</ResponseField>

<ResponseField name="model" type="string">
  Model được sử dụng.
</ResponseField>

<ResponseField name="usage" type="object">
  Mức sử dụng token với `prompt_tokens` và `total_tokens`.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1/embeddings" \
    -H "Authorization: Bearer sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "text-embedding-3-small",
      "input": "The quick brown fox jumps over the lazy dog"
    }'
  ```

  ```python Python theme={null}
  from openai import OpenAI

  client = OpenAI(
      api_key="sk-your-api-key",
      base_url="https://api.tokenlab.sh/v1"
  )

  response = client.embeddings.create(
      model="text-embedding-3-small",
      input="The quick brown fox jumps over the lazy dog"
  )

  embedding = response.data[0].embedding
  print(f"Embedding dimension: {len(embedding)}")
  print(f"First 5 values: {embedding[:5]}")
  ```

  ```javascript JavaScript theme={null}
  import OpenAI from 'openai';

  const client = new OpenAI({
    apiKey: 'sk-your-api-key',
    baseURL: 'https://api.tokenlab.sh/v1'
  });

  const response = await client.embeddings.create({
    model: 'text-embedding-3-small',
    input: 'The quick brown fox jumps over the lazy dog'
  });

  console.log(response.data[0].embedding.slice(0, 5));
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init('https://api.tokenlab.sh/v1/embeddings');

  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'Content-Type: application/json',
          'Authorization: Bearer sk-your-api-key'
      ],
      CURLOPT_POSTFIELDS => json_encode([
          'model' => 'text-embedding-3-small',
          'input' => 'The quick brown fox jumps over the lazy dog'
      ])
  ]);

  $response = curl_exec($ch);
  curl_close($ch);

  $data = json_decode($response, true);
  print_r(array_slice($data['data'][0]['embedding'], 0, 5));
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "object": "list",
    "data": [
      {
        "object": "embedding",
        "index": 0,
        "embedding": [0.0023, -0.0194, 0.0081, ...]
      }
    ],
    "model": "text-embedding-3-small",
    "usage": {
      "prompt_tokens": 9,
      "total_tokens": 9
    }
  }
  ```
</ResponseExample>

## Embeddings theo lô

```python theme={null}
# Embed multiple texts at once
response = client.embeddings.create(
    model="text-embedding-3-small",
    input=[
        "First document text",
        "Second document text",
        "Third document text"
    ]
)

for i, data in enumerate(response.data):
    print(f"Document {i}: {len(data.embedding)} dimensions")
```
