diff --git a/docs/my-website/docs/providers/perplexity_embedding.md b/docs/my-website/docs/providers/perplexity_embedding.md new file mode 100644 index 00000000000..92981b2632e --- /dev/null +++ b/docs/my-website/docs/providers/perplexity_embedding.md @@ -0,0 +1,134 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Perplexity Embeddings + +https://docs.perplexity.ai/docs/embeddings/quickstart + +LiteLLM supports Perplexity's pplx-embed embedding models for web-scale text retrieval. + +## API Key + +```python +# env variable +os.environ['PERPLEXITYAI_API_KEY'] +``` + +## Sample Usage - Embedding + + + + +```python +from litellm import embedding +import os + +os.environ['PERPLEXITYAI_API_KEY'] = "" + +response = embedding( + model="perplexity/pplx-embed-v1-0.6b", + input=["good morning from litellm"], +) +print(response) +``` + + + + +1. Setup config.yaml + +```yaml +model_list: + - model_name: pplx-embed-v1-0.6b + litellm_params: + model: perplexity/pplx-embed-v1-0.6b + api_key: os.environ/PERPLEXITYAI_API_KEY + - model_name: pplx-embed-v1-4b + litellm_params: + model: perplexity/pplx-embed-v1-4b + api_key: os.environ/PERPLEXITYAI_API_KEY +``` + +2. Start proxy + +```bash +litellm --config /path/to/config.yaml +``` + +3. Test it! + +```bash +curl http://0.0.0.0:4000/v1/embeddings \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer sk-1234" \ + -d '{ + "model": "pplx-embed-v1-0.6b", + "input": ["good morning from litellm"] + }' +``` + + + + +## Supported Parameters + +Perplexity embeddings support the following optional parameters: + +| Parameter | Type | Description | +|-----------|------|-------------| +| `dimensions` | int | Output embedding dimensions. 128–1024 for 0.6b models, 128–2560 for 4b models. Defaults to max. | +| `encoding_format` | string | `"base64_int8"` (default) or `"base64_binary"` for compressed output. | + +### Example with Parameters + + + + +```python +from litellm import embedding +import os + +os.environ['PERPLEXITYAI_API_KEY'] = "" + +response = embedding( + model="perplexity/pplx-embed-v1-4b", + input=["Your text here"], + dimensions=512, +) +print(f"Embedding dimensions: {len(response.data[0]['embedding'])}") +``` + + + + +```bash +curl http://0.0.0.0:4000/v1/embeddings \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer sk-1234" \ + -d '{ + "model": "pplx-embed-v1-4b", + "input": ["Your text here"], + "dimensions": 512 + }' +``` + + + + +## Supported Models + +All models listed on the [Perplexity Embeddings docs](https://docs.perplexity.ai/docs/embeddings/quickstart) are supported. Use `model=perplexity/`. + +| Model Name | Dimensions | Max Tokens | Price (per 1M tokens) | Function Call | +|---|---|---|---|---| +| pplx-embed-v1-0.6b | 1024 | 32K | $0.004 | `embedding(model="perplexity/pplx-embed-v1-0.6b", input)` | +| pplx-embed-v1-4b | 2560 | 32K | $0.03 | `embedding(model="perplexity/pplx-embed-v1-4b", input)` | + +### Key Specifications + +- **Max texts per request:** 512 +- **Max tokens per input:** 32,768 +- **Combined request limit:** 120,000 tokens +- **Matryoshka dimension reduction** — reduce dimensions to 128+ for faster search and reduced storage +- **No instruction prefix required** — embed text directly +- **Unnormalized embeddings** — use cosine similarity for comparison diff --git a/docs/my-website/sidebars.js b/docs/my-website/sidebars.js index ce1ee0383a9..da96da73578 100644 --- a/docs/my-website/sidebars.js +++ b/docs/my-website/sidebars.js @@ -876,7 +876,14 @@ const sidebars = { "providers/openrouter", "providers/sarvam", "providers/ovhcloud", - "providers/perplexity", + { + type: "category", + label: "Perplexity AI", + items: [ + "providers/perplexity", + "providers/perplexity_embedding", + ] + }, "providers/petals", "providers/poe", "providers/publicai",