Mistral: Codestral Embed 2505 vs Perplexity: Embed V1 4B
A side-by-side comparison of Mistral: Codestral Embed 2505 ($0.52 / 1M tokens) and Perplexity: Embed V1 4B ($0.11 / 1M tokens) using current USD prices and capabilities from the api14 catalog. Both run through the same OpenAI-compatible API.
Specifications
| Mistral: Codestral Embed 2505 | Perplexity: Embed V1 4B | |
|---|---|---|
| Provider | Mistral | Perplexity |
| Input | $0.52 / 1M tokens | $0.11 / 1M tokens |
| Context window | 8,192 | 32,000 |
| Max output | 6,553 | 28,800 |
| Input | text | text |
| Output | embeddings | embeddings |
| Tool calling | ||
| Structured output | ||
| Reasoning control | ||
| Added | Oct 30, 2025 | Mar 16, 2026 |
Key differences
- Perplexity: Embed V1 4B is 80% cheaper on input tokens.
- Perplexity: Embed V1 4B reads 3.9× more context (32,000 tokens).
In depth
Mistral: Codestral Embed 2505 is an embeddings model from Mistral, released on 2025-10-30. Perplexity: Embed V1 4B is an embeddings model from Perplexity, released on 2026-03-16. Both sit in the embeddings category, so neither one generates chat completions or free text. Each takes text in and returns embeddings out, which makes them building blocks for search, retrieval, clustering, deduplication and similar pipelines rather than assistants you talk to.
The clearest difference between them is context length. Codestral Embed 2505 accepts up to 8192 tokens per input, while Embed V1 4B accepts up to 32000 tokens. That is roughly a fourfold gap, and it matters when a single document, source file or transcript is long enough that you would otherwise have to split it. On modalities the two are identical: text in, embeddings out, nothing else. Neither lists any supported parameters, so you should not expect tunable knobs such as dimensions or pooling options to be exposed through the API. The qualitative comparison also marks Embed V1 4B as the cheaper input side, while output pricing is not meaningfully different between them.
For day to day work, the choice usually comes down to input size and cost. If you are embedding short queries, function names, commit messages, ticket titles or small chunks of code, Codestral Embed 2505 is a reasonable fit and its 8192 token window is more than enough. If you are embedding whole files, long documentation pages, support threads or multi file context in one pass, Embed V1 4B is the better pick because its 32000 token window lets you avoid aggressive chunking, and it is also the cheaper of the two on input. Chunking is not free: it adds preprocessing code, it can split a coherent unit in half, and it multiplies the number of vectors you store and search. A larger window can remove that work entirely for many corpora.
Calling either model through api14 works the same way because the gateway exposes an OpenAI-compatible API. You point your existing client at the api14 base URL, send your text to the embeddings endpoint with your api14 key, and set the model field to the id you want. Switching between them is a one line change: use "mistralai/codestral-embed-2505" for the Mistral model or "perplexity/pplx-embed-v1-4b" for the Perplexity model. The request and response shapes stay the same, so you can keep one code path and choose the model per workload, or run both and compare retrieval quality on your own data.
There are still cases where Codestral Embed 2505 is the right call. If your inputs are consistently short and you want to stay with Mistral, or if you are already standardized on Mistral models elsewhere in your stack, it covers that ground without any downside tied to context length. Since neither model exposes supported parameters and both are text only, the practical decision reduces to input length, input cost and provider preference, and the live price table on this page is the place to check the current numbers before you commit.
Switch with one string
Both models use the same endpoint and request shape. Change the model value from "mistralai/codestral-embed-2505" to "perplexity/pplx-embed-v1-4b" and prompts, streaming and tools keep working.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.embeddings.create({
"model": "perplexity/pplx-embed-v1-4b",
"input": [
"The quick brown fox",
"Lorem ipsum"
]
});
console.log(result.data.map((d) => d.embedding.length));
More comparisons
- Amazon: Titan Multimodal Embeddings G1 vs Amazon: Titan Embeddings G1 - Text
- Amazon: Titan Multimodal Embeddings G1 vs Amazon: Titan Text Embeddings V2
- Amazon: Titan Multimodal Embeddings G1 vs Cohere: Embed 5 Fast
- Amazon: Titan Multimodal Embeddings G1 vs Cohere: Embed 5 Pro
- Amazon: Titan Embeddings G1 - Text vs Amazon: Titan Text Embeddings V2
- Amazon: Titan Embeddings G1 - Text vs Cohere: Embed 5 Fast
- Amazon: Titan Embeddings G1 - Text vs Cohere: Embed 5 Pro
- Amazon: Titan Text Embeddings V2 vs Cohere: Embed 5 Fast