ZeroEntropy Provider
zeroentropy-ai/zeroentropy-ai-provider is a community provider that uses ZeroEntropy to provide text embedding and reranking support for the AI SDK.
Setup
The ZeroEntropy provider is available in the zeroentropy-ai-provider module. You can install it with:
pnpm add zeroentropy-ai-provider
Provider Instance
You can import the default provider instance zeroentropy from zeroentropy-ai-provider:
import { zeroentropy } from 'zeroentropy-ai-provider';If you need a customized setup, you can import createZeroEntropy from zeroentropy-ai-provider and create a provider instance with your settings:
import { createZeroEntropy } from 'zeroentropy-ai-provider';
const zeroentropy = createZeroEntropy({ apiKey: process.env.ZEROENTROPY_API_KEY ?? '',});You can use the following optional settings to customize the ZeroEntropy provider instance:
-
baseURL string
The base URL of the ZeroEntropy API. The default prefix is
https://api.zeroentropy.dev/v1. -
apiKey string
API key that is being sent using the
Authorizationheader. It defaults to theZEROENTROPY_API_KEYenvironment variable. Obtain your API key from the ZeroEntropy Dashboard. -
headers Record<string,string>
Custom headers to include in the requests.
-
fetch (input: RequestInfo, init?: RequestInit) => Promise<Response>
Custom fetch implementation. Defaults to the global
fetchfunction. You can use it as a middleware to intercept requests, or to provide a custom fetch implementation for e.g. testing.
Text Embedding Models
You can create models that call the ZeroEntropy embeddings API using the .textEmbeddingModel() factory method.
import { zeroentropy } from 'zeroentropy-ai-provider';
const embeddingModel = zeroentropy.textEmbeddingModel('zembed-1');You can use ZeroEntropy embedding models to generate embeddings with the embed or embedMany function:
import { zeroentropy } from 'zeroentropy-ai-provider';import { embed, embedMany } from 'ai';
// Single embeddingconst { embedding } = await embed({ model: zeroentropy.textEmbeddingModel('zembed-1'), value: 'sunny day at the beach',});
// Batch embeddingsconst { embeddings } = await embedMany({ model: zeroentropy.textEmbeddingModel('zembed-1'), values: ['first document', 'second document'],});ZeroEntropy embedding models support additional provider options that can be passed via providerOptions.zeroentropy:
import { zeroentropy } from 'zeroentropy-ai-provider';import { embed } from 'ai';
const { embedding } = await embed({ model: zeroentropy.textEmbeddingModel('zembed-1'), value: 'sunny day at the beach', providerOptions: { zeroentropy: { inputType: 'document', dimensions: 1280, }, },});The following provider options are available:
-
inputType 'query' | 'document'
Whether the input is a search query or a document to index. Use
'query'for retrieval queries and'document'for content being indexed. Defaults to'document'. -
dimensions 2560 | 1280 | 640 | 320 | 160 | 80 | 40
Output vector dimensions. Defaults to
2560. Supports Matryoshka representations for flexible dimensionality reduction. -
latency 'fast' | 'slow'
'fast'for sub-second latency;'slow'for higher throughput limits.
Model Capabilities
| Model | Default Dimensions | Context Length | Description |
|---|---|---|---|
zembed-1 | 2560 | 8192 | Multilingual embedding model, supports Matryoshka dimensions |
Reranking Models
You can create models that call the ZeroEntropy reranking API using the .rerankingModel() factory method.
import { zeroentropy } from 'zeroentropy-ai-provider';import { rerank } from 'ai';
const result = await rerank({ model: zeroentropy.rerankingModel('zerank-2'), query: 'talk about rain', documents: ['sunny day at the beach', 'rainy day in the city'], topN: 2,});ZeroEntropy reranking models support additional provider options that can be passed via providerOptions.zeroentropy:
import { zeroentropy } from 'zeroentropy-ai-provider';import { rerank } from 'ai';
const result = await rerank({ model: zeroentropy.rerankingModel('zerank-2'), query: 'talk about rain', documents: ['sunny day at the beach', 'rainy day in the city'], topN: 2, providerOptions: { zeroentropy: { latency: 'fast', }, },});The following provider option is available:
-
latency 'fast' | 'slow'
'fast'for sub-second latency;'slow'for higher throughput limits.
Model Capabilities
| Model | Description |
|---|---|
zerank-2 | Flagship state-of-the-art cross-encoder reranker |
zerank-2-nano | Compact zerank-2 variant for lower-latency use cases |
zerank-1 | Previous generation reranker |
zerank-1-small | Lightweight reranker for lower-latency use cases |
Please see the ZeroEntropy docs for the full list of available models and options.