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

# Embeddings

> Get embeddings from Vertex AI

Vertex AI offers wide ranging support for embedding text, images and videos.
Portkey provides a standardized interface for embedding multiple modalities.

## Embedding Text

<CodeGroup>
  ```python Python theme={"system"}
  from portkey_ai import Portkey

  client = Portkey(
      api_key="YOUR_PORTKEY_API_KEY", # defaults to os.environ.get("PORTKEY_API_KEY")
      virtual_key="VIRTUAL_KEY",
  )

  embeddings = client.embeddings.create(
    model="textembedding-gecko@003",
    input_type="classification",
    input="The food was delicious and the waiter...",
    # input=["text to embed", "more text to embed"], # if you would like to embed multiple texts
  )
  ```

  ```javascript NodeJS theme={"system"}
  import { Portkey } from 'portkey-ai';

  const portkey = new Portkey({
      apiKey: "YOUR_API_KEY",
      virtualKey: "YOUR_VIRTUAL_KEY"
  });

  const embedding = await portkey.embeddings.create({
      input: 'Name the tallest buildings in Hawaii',
      // input: ['text to embed', 'more text to embed'], // if you would like to embed multiple texts
      model: 'textembedding-gecko@003'
  });

  console.log(embedding);
  ```

  ```sh cURL theme={"system"}
  curl --location 'https://api.portkey.ai/v1/embeddings' \
  --header 'Content-Type: application/json' \
  --header 'x-portkey-api-key: PORTKEY_API_KEY' \
  --header 'x-portkey-virtual-key: PORTKEY_VIRTUAL_KEY' \
  --data-raw '{
      "model": "textembedding-gecko@003",
      "input": [
          "A HTTP 246 code is used to signify an AI response containing hallucinations or other inaccuracies",
          "246: Partially incorrect response"
      ],
      # "input": "Name the tallest buildings in Hawaii",
      "input_type": "classification"
  }'
  ```

  ```python OpenAI Python theme={"system"}
  from openai import OpenAI
  from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

  portkey_client = OpenAI(
      api_key='NOT_REQUIRED',
      base_url=PORTKEY_GATEWAY_URL,
      default_headers=createHeaders(
          provider="openai",
          api_key="PORTKEY_API_KEY"
      )
  )

  embeddings = portkey_client.embeddings.create(
    model="textembedding-gecko@003",
    input_type="classification",
    input="The food was delicious and the waiter...",
    # input=["text to embed", "more text to embed"], # if you would like to embed multiple texts
  )
  ```

  ```js OpenAI NodeJS theme={"system"}
  import OpenAI from 'openai'; // We're using the v4 SDK
  import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai'

  const portkeyClient = new OpenAI({
    apiKey: 'NOT_REQUIRED', // defaults to process.env["OPENAI_API_KEY"],
    baseURL: PORTKEY_GATEWAY_URL,
    defaultHeaders: createHeaders({
      provider: "vertex-ai",
      apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
      virtualKey: "PORTKEY_VIRTUAL_KEY"
    })
  });

  const embedding = await portkeyClient.embeddings.create({
      input: 'Name the tallest buildings in Hawaii',
      // input: ['text to embed', 'more text to embed'], // if you would like to embed multiple texts
      model: 'textembedding-gecko@003'
  });

  console.log(embedding);
  ```
</CodeGroup>

## Embeddings Images

<CodeGroup>
  ```python Python theme={"system"}
  from portkey_ai import Portkey

  client = Portkey(
      api_key="YOUR_PORTKEY_API_KEY", # defaults to os.environ.get("PORTKEY_API_KEY")
      virtual_key="VIRTUAL_KEY",
  )

  embeddings = client.embeddings.create(
    model="multimodalembedding@001",
    input=[
            {
                "text": "this is the caption of the image",
                "image": {
                    "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                    # "url": "gcs://..." # if you want to use a url
                }
            }
        ]
  )
  ```

  ```javascript NodeJS theme={"system"}
  import { Portkey } from 'portkey-ai';

  const portkey = new Portkey({
      apiKey: "YOUR_API_KEY",
      virtualKey: "YOUR_VIRTUAL_KEY"
  });

  const embedding = await portkey.embeddings.create({
      input: [
            {
                "text": "this is the caption of the image",
                "image": {
                    "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                    // "url": "gcs://..." // if you want to use a url
                }
            }
        ],
      model: 'multimodalembedding@001'
  });

  console.log(embedding);
  ```

  ```sh cURL theme={"system"}
  curl --location 'https://api.portkey.ai/v1/embeddings' \
  --header 'Content-Type: application/json' \
  --header 'x-portkey-api-key: PORTKEY_API_KEY' \
  --header 'x-portkey-virtual-key: PORTKEY_VIRTUAL_KEY' \
  --data-raw '{
      "model": "multimodalembedding@001",
      "input": [
                    {
                        "text": "this is the caption of the image",
                        "image": {
                            "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B....."
                            # "url": "gcs://..." # if you want to use a url
                        }
                    }
                ]
  }'
  ```

  ```python OpenAI Python theme={"system"}
  from openai import OpenAI
  from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

  portkey_client = OpenAI(
      api_key='NOT_REQUIRED',
      base_url=PORTKEY_GATEWAY_URL,
      default_headers=createHeaders(
          provider="openai",
          api_key="PORTKEY_API_KEY"
      )
  )

  embeddings = portkey_client.embeddings.create(
    model="multimodalembedding@001",
    input=[
            {
                "text": "this is the caption of the image",
                "image": {
                    "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                    # "url": "gcs://..." # if you want to use a url
                }
            }
          ]
  )
  ```

  ```js OpenAI NodeJS theme={"system"}
  import OpenAI from 'openai'; // We're using the v4 SDK
  import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai'

  const portkeyClient = new OpenAI({
    apiKey: 'NOT_REQUIRED', // defaults to process.env["OPENAI_API_KEY"],
    baseURL: PORTKEY_GATEWAY_URL,
    defaultHeaders: createHeaders({
      apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
      virtualKey: "PORTKEY_VIRTUAL_KEY"
    })
  });

  const embedding = await portkeyClient.embeddings.create({
      input: [
                {
                    "text": "this is the caption of the image",
                    "image": {
                        "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                        // "url": "gcs://..." // if you want to use a url
                    }
                }
              ],
      model: 'multimodalembedding@001'
  });

  console.log(embedding);
  ```
</CodeGroup>

## Embeddings Videos

<CodeGroup>
  ```python Python theme={"system"}
  from portkey_ai import Portkey

  client = Portkey(
      api_key="YOUR_PORTKEY_API_KEY", # defaults to os.environ.get("PORTKEY_API_KEY")
      virtual_key="VIRTUAL_KEY",
  )

  embeddings = client.embeddings.create(
    model="multimodalembedding@001",
    input=[
            {
                "text": "this is the caption of the video",
                "video": {
                    "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                    "start_offset": 0,
                    "end_offset": 10,
                    "interval": 5,
                    # "url": "gcs://..." # if you want to use a url
                }
            }
        ]
  )
  ```

  ```javascript NodeJS theme={"system"}
  import { Portkey } from 'portkey-ai';

  const portkey = new Portkey({
      apiKey: "YOUR_API_KEY",
      virtualKey: "YOUR_VIRTUAL_KEY"
  });

  const embedding = await portkey.embeddings.create({
      input: [
            {
                "text": "this is the caption of the video",
                "video": {
                    "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                    "start_offset": 0,
                    "end_offset": 10,
                    "interval": 5,
                    // "url": "gcs://..." // if you want to use a url
                }
            }
        ],
      model: 'multimodalembedding@001'
  });

  console.log(embedding);
  ```

  ```sh cURL theme={"system"}
  curl --location 'https://api.portkey.ai/v1/embeddings' \
  --header 'Content-Type: application/json' \
  --header 'x-portkey-api-key: PORTKEY_API_KEY' \
  --header 'x-portkey-virtual-key: PORTKEY_VIRTUAL_KEY' \
  --data-raw '{
      "model": "multimodalembedding@001",
      "input": [
                    {
                        "text": "this is the caption of the video",
                        "video": {
                            "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                            "start_offset": 0,
                            "end_offset": 10,
                            "interval": 5
                            # "url": "gcs://..." # if you want to use a url
                        }
                    }
                ]
  }'
  ```

  ```python OpenAI Python theme={"system"}
  from openai import OpenAI
  from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders

  portkey_client = OpenAI(
      api_key='NOT_REQUIRED',
      base_url=PORTKEY_GATEWAY_URL,
      default_headers=createHeaders(
          provider="openai",
          api_key="PORTKEY_API_KEY"
      )
  )

  embeddings = portkey_client.embeddings.create(
    model="multimodalembedding@001",
    input=[
            {
                "text": "this is the caption of the video",
                "video": {
                    "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                    "start_offset": 0,
                    "end_offset": 10,
                    "interval": 5,
                    # "url": "gcs://..." # if you want to use a url
                }
            }
          ]
  )
  ```

  ```js OpenAI NodeJS theme={"system"}
  import OpenAI from 'openai'; // We're using the v4 SDK
  import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai'

  const portkeyClient = new OpenAI({
    apiKey: 'NOT_REQUIRED', // defaults to process.env["OPENAI_API_KEY"],
    baseURL: PORTKEY_GATEWAY_URL,
    defaultHeaders: createHeaders({
      apiKey: "PORTKEY_API_KEY", // defaults to process.env["PORTKEY_API_KEY"]
      virtualKey: "PORTKEY_VIRTUAL_KEY"
    })
  });

  const embedding = await portkeyClient.embeddings.create({
      input: [
                {
                    "text": "this is the caption of the video",
                    "video": {
                        "base64": "UklGRkacAABXRUJQVlA4IDqcAACQggKdASqpAn8B.....",
                        "start_offset": 0,
                        "end_offset": 10,
                        "interval": 5,
                        // "url": "gcs://..." // if you want to use a url
                    }
                }
              ],
      model: 'multimodalembedding@001'
  });

  console.log(embedding);
  ```
</CodeGroup>
