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

# Geminiのテキスト埋め込み（embedContent）

> Geminiのネイティブインターフェースを使用して、テキストをベクトル埋め込みに変換

## はじめに

Geminiのネイティブインターフェースを使用して、テキストを埋め込みベクトルに変換します。モデルはURLパス（例: `gemini-embedding-001`）で指定します。Googleの埋め込みモデルが必要な場合や、Gemini APIに合わせる必要がある場合に適しています。

[テキスト埋め込み](/ja/api-reference/endpoint/embeddings)のOpenAI形式を補完するドキュメントです。このドキュメントではGeminiのネイティブパスを扱います。同じ機能は`POST /v1/embeddings`経由でも利用できます。

## 認証

Bearerトークン。例: `Bearer sk-xxxxxxxxxx`

## パスパラメーター

<ParamField path="model" type="string" required>
  埋め込みモデル名。例：`gemini-embedding-001`。
</ParamField>

## リクエストパラメーター

<ParamField body="content" type="object" required>
  埋め込み対象のコンテンツです。各項目が`{ "text": "text content" }`である`parts`配列を含める必要があります。
</ParamField>

<ParamField body="outputDimensionality" type="integer">
  出力ベクトルの次元数（`gemini-embedding-001`、`text-embedding-004`など、一部のモデルのみ対応）。
</ParamField>

<ParamField body="taskType" type="string">
  タスクの種類。例：`RETRIEVAL_DOCUMENT`、`RETRIEVAL_QUERY`（任意）。
</ParamField>

## コード例

<Tabs>
  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent" \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer sk-xxxxxxxxxx" \
      -d '{
        "content": {
          "parts": [
            { "text": "Text content to embed" }
          ]
        }
      }'
    ```
  </Tab>

  <Tab title="cURL（次元数指定あり）">
    ```bash theme={null}
    curl -X POST "https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent" \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer sk-xxxxxxxxxx" \
      -d '{
        "content": {
          "parts": [
            { "text": "Text content to embed" }
          ]
        },
        "outputDimensionality": 768
      }'
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    import requests

    url = "https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent"
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer sk-xxxxxxxxxx"
    }
    payload = {
        "content": {
            "parts": [
                { "text": "Text content to embed" }
            ]
        }
    }

    response = requests.post(url, json=payload, headers=headers)
    data = response.json()
    embedding = data["embedding"]["values"]
    print(f"Vector dimensions: {len(embedding)}")
    ```
  </Tab>
</Tabs>

## レスポンス例

```json theme={null}
{
  "embedding": {
    "values": [0.0023064255, -0.009327292, 0.015797347, ...]
  },
  "metadata": {
    "usage": {
      "prompt_tokens": 6,
      "total_tokens": 6
    }
  }
}
```

## バッチインターフェース（batchEmbedContents）

バッチ埋め込みには`POST /v1/models/{model}:batchEmbedContents`を使用します。リクエストボディは`requests`配列で、各項目は単一リクエストと同じ構造（`content.parts`を含む）です。各項目に`model`フィールドを含め**ないでください**。

```bash theme={null}
curl -X POST "https://api.mixroute.ai/v1/models/gemini-embedding-001:batchEmbedContents" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxxxx" \
  -d '{
    "requests": [
      { "content": { "parts": [{ "text": "First text" }] } },
      { "content": { "parts": [{ "text": "Second text" }] } }
    ]
  }'
```

## 対応モデル

| モデル | 説明 |
| - | - |
| gemini-embedding-001 | 汎用埋め込みモデル。`outputDimensionality`に対応 |
| text-embedding-004 | 高精度の埋め込みモデル |

## 注意事項

* `content.parts`は必須です。少なくとも1つの`text`が空でない必要があります
* モデルはURLパスで指定します。リクエストボディに`model`フィールドを含めないでください
* 使用状況の情報は、レスポンスの`metadata.usage`に含まれます（`prompt_tokens`、`total_tokens`）。

<Tip>
  アプリケーションですでにOpenAI SDKを使用している場合は、コードの変更を最小限に抑えるため、`/v1/embeddings`互換インターフェースの使用を検討してください。
</Tip>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent \
    --header 'Authorization: Bearer sk-xxxxxxxxxx' \
    --header 'Content-Type: application/json' \
    --data '{
      "content": {
        "parts": [{"text": "This is a test text"}]
      }
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent"
  headers = {
      "Authorization": "Bearer sk-xxxxxxxxxx",
      "Content-Type": "application/json"
  }
  payload = {
      "content": {
          "parts": [{"text": "This is a test text"}]
      }
  }
  response = requests.post(url, json=payload, headers=headers)
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer sk-xxxxxxxxxx',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      content: {
        parts: [{ text: 'This is a test text' }]
      }
    })
  });
  const data = await response.json();
  console.log(data);
  ```

  ```php PHP theme={null}
  <?php
  $client = new GuzzleHttp\Client();
  $response = $client->post('https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent', [
      'headers' => [
          'Authorization' => 'Bearer sk-xxxxxxxxxx',
          'Content-Type' => 'application/json',
      ],
      'json' => [
          'content' => [
              'parts' => [['text' => 'This is a test text']]
          ]
      ]
  ]);
  echo $response->getBody();
  ```

  ```go Go theme={null}
  package main

  import (
      "bytes"
      "encoding/json"
      "net/http"
  )

  func main() {
      payload := map[string]interface{}{
          "content": map[string]interface{}{
              "parts": []map[string]string{
                  {"text": "This is a test text"},
              },
          },
      }
      body, _ := json.Marshal(payload)
      req, _ := http.NewRequest("POST", "https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent", bytes.NewBuffer(body))
      req.Header.Set("Authorization", "Bearer sk-xxxxxxxxxx")
      req.Header.Set("Content-Type", "application/json")
      http.DefaultClient.Do(req)
  }
  ```

  ```java Java theme={null}
  import java.net.http.*;
  import java.net.URI;

  HttpClient client = HttpClient.newHttpClient();
  String json = """
      {
        "content": {
          "parts": [{"text": "This is a test text"}]
        }
      }
      """;
  HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create("https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent"))
      .header("Authorization", "Bearer sk-xxxxxxxxxx")
      .header("Content-Type", "application/json")
      .POST(HttpRequest.BodyPublishers.ofString(json))
      .build();
  HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
  System.out.println(response.body());
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'json'

  uri = URI('https://api.mixroute.ai/v1/models/gemini-embedding-001:embedContent')
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(uri)
  request['Authorization'] = 'Bearer sk-xxxxxxxxxx'
  request['Content-Type'] = 'application/json'
  request.body = {
    content: {
      parts: [{ text: 'This is a test text' }]
    }
  }.to_json

  response = http.request(request)
  puts response.body
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "embedding": {
      "values": [0.0023064255, -0.009327292, 0.015797347]
    },
    "metadata": {
      "usage": {
        "prompt_tokens": 6,
        "total_tokens": 6
      }
    }
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.