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 Authorization header. It defaults to the ZEROENTROPY_API_KEY environment 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 fetch function. 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 embedding
const { embedding } = await embed({
model: zeroentropy.textEmbeddingModel('zembed-1'),
value: 'sunny day at the beach',
});
// Batch embeddings
const { 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

ModelDefault DimensionsContext LengthDescription
zembed-125608192Multilingual 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

ModelDescription
zerank-2Flagship state-of-the-art cross-encoder reranker
zerank-2-nanoCompact zerank-2 variant for lower-latency use cases
zerank-1Previous generation reranker
zerank-1-smallLightweight reranker for lower-latency use cases

Please see the ZeroEntropy docs for the full list of available models and options.