> ## Documentation Index
> Fetch the complete documentation index at: https://portkey-docs-add-third-party-integration-issues-fixes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Embeddings

> Generate vector embeddings from text using OpenAI's embedding models through Portkey.

OpenAI's embedding models transform text into lists of floating-point numbers (vectors). Smaller distances between vectors indicate higher semantic similarity, making them useful for semantic search, content clustering, recommendations, and anomaly detection.

## Usage

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

  client = Portkey(
      api_key="PORTKEY_API_KEY",
      provider="@OPENAI_PROVIDER"
  )

  response = client.embeddings.create(
      input="Your text string goes here",
      model="text-embedding-3-small"
  )

  print(response.data[0].embedding)
  ```

  ```ts Node.js theme={null}
  import Portkey from 'portkey-ai';

  const client = new Portkey({
      apiKey: 'PORTKEY_API_KEY',
      provider: '@OPENAI_PROVIDER'
  });

  const response = await client.embeddings.create({
      input: "Your text string goes here",
      model: "text-embedding-3-small"
  });

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

  ```py OpenAI Python SDK theme={null}
  from openai import OpenAI
  from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

  client = OpenAI(
      api_key="OPENAI_API_KEY",
      base_url=PORTKEY_GATEWAY_URL,
      default_headers=createHeaders(
          api_key="PORTKEY_API_KEY",
          provider="@OPENAI_PROVIDER"
      )
  )

  response = client.embeddings.create(
      input="Your text string goes here",
      model="text-embedding-3-small"
  )

  print(response.data[0].embedding)
  ```

  ```ts OpenAI Node.js SDK theme={null}
  import OpenAI from 'openai';
  import { PORTKEY_GATEWAY_URL, createHeaders } from 'portkey-ai';

  const openai = new OpenAI({
      apiKey: 'OPENAI_API_KEY',
      baseURL: PORTKEY_GATEWAY_URL,
      defaultHeaders: createHeaders({
          apiKey: "PORTKEY_API_KEY",
          provider: "@OPENAI_PROVIDER"
      })
  });

  const response = await openai.embeddings.create({
      input: "Your text string goes here",
      model: "text-embedding-3-small"
  });

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

  ```sh cURL theme={null}
  curl https://api.portkey.ai/v1/embeddings \
    -H "Content-Type: application/json" \
    -H "x-portkey-api-key: $PORTKEY_API_KEY" \
    -H "x-portkey-provider: $PORTKEY_PROVIDER" \
    -d '{
      "input": "Your text string goes here",
      "model": "text-embedding-3-small"
    }'
  ```
</CodeGroup>

## Supported Models

| Model                    | Dimensions | Notes                       |
| ------------------------ | ---------- | --------------------------- |
| `text-embedding-3-small` | 1536       | Best cost/performance ratio |
| `text-embedding-3-large` | 3072       | Highest accuracy            |
| `text-embedding-ada-002` | 1536       | Legacy model                |

## Supported Parameters

| Parameter         | Type            | Description                                                           |
| ----------------- | --------------- | --------------------------------------------------------------------- |
| `model`           | string          | Embedding model ID                                                    |
| `input`           | string or array | Text to embed. Pass an array to embed multiple strings in one request |
| `encoding_format` | string          | `float` (default) or `base64`                                         |
| `dimensions`      | integer         | Reduce output dimensions (supported on v3 models only)                |
| `user`            | string          | End-user ID for tracking                                              |

## FAQs

<AccordionGroup>
  <Accordion title="How can I tell how many tokens a string has before I embed it?">
    Use OpenAI's [Tiktoken library](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken) to count tokens before making an embedding request.
  </Accordion>

  <Accordion title="How can I retrieve K nearest embedding vectors quickly?">
    Use a specialized vector database. See [OpenAI's vector database cookbook](https://cookbook.openai.com/examples/vector_databases/readme) for options and examples.
  </Accordion>

  <Accordion title="Do V3 embedding models know about recent events?">
    The knowledge cutoff for `text-embedding-3-large` and `text-embedding-3-small` is September 2021.
  </Accordion>
</AccordionGroup>
