Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 185 additions & 0 deletions content/providers/03-community-providers/51-zeroentropy.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
---
title: ZeroEntropy
description: Learn how to use the ZeroEntropy community provider.
---

# ZeroEntropy Provider

[zeroentropy-ai/zeroentropy-ai-provider](https://github.com/zeroentropy-ai/zeroentropy-ai-provider) is a community provider that uses [ZeroEntropy](https://zeroentropy.dev) 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:

<Tabs items={['pnpm', 'npm', 'yarn', 'bun']}>
<Tab>
<Snippet text="pnpm add zeroentropy-ai-provider" dark />
</Tab>
<Tab>
<Snippet text="npm install zeroentropy-ai-provider" dark />
</Tab>
<Tab>
<Snippet text="yarn add zeroentropy-ai-provider" dark />
</Tab>
<Tab>
<Snippet text="bun add zeroentropy-ai-provider" dark />
</Tab>
</Tabs>

## Provider Instance

You can import the default provider instance `zeroentropy` from `zeroentropy-ai-provider`:

```ts
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:

```ts
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](https://dashboard.zeroentropy.dev).

- **headers** _Record&lt;string,string&gt;_

Custom headers to include in the requests.

- **fetch** _(input: RequestInfo, init?: RequestInit) => Promise&lt;Response&gt;_

Custom [fetch](https://developer.mozilla.org/en-US/docs/Web/API/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](https://docs.zeroentropy.dev) using the `.textEmbeddingModel()` factory method.

```ts
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:

```ts
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`:

```ts
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](https://docs.zeroentropy.dev) using the `.rerankingModel()` factory method.

```ts
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`:

```ts
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 |

<Note>
Please see the [ZeroEntropy docs](https://docs.zeroentropy.dev) for the full
list of available models and options.
</Note>