---
title: "Contextual AI Reranker Models with Weaviate"
description: "Contextual AI Reranker Model Provider"
url: https://docs.weaviate.io/weaviate/model-providers/contextualai/reranker
---

# Contextual AI Reranker Models with Weaviate

> [!NOTE]
>
> **Added in `v1.34.0`**

Weaviate's integration with Contextual AI's APIs allows you to access their models' capabilities directly from Weaviate.

[Configure a Weaviate collection](https://docs.weaviate.io/weaviate/model-providers/contextualai/reranker#configure-the-reranker) to use a Contextual AI reranker model, and Weaviate will use the specified model and your Contextual AI API key to rerank search results.

This two-step process involves Weaviate first performing a search and then reranking the results using the specified model.

![Reranker integration illustration](https://docs.weaviate.io/assets/images/integration_contextualai_reranker-97950b6c7bed84a93c79a32b20d6d391.png)

## Requirements

### Weaviate configuration

Your Weaviate instance must be configured with the Contextual AI reranker integration (`reranker-contextualai`) module.

**For Weaviate Cloud (WCD) users**

This integration is enabled by default on Weaviate Cloud (WCD) instances.

**For self-hosted users**

- Check the [cluster metadata](https://docs.weaviate.io/deploy/configuration/status#cluster-metadata) to verify if the module is enabled.
- Follow the [how-to configure modules](https://docs.weaviate.io/weaviate/configuration/modules) guide to enable the module in Weaviate.

### API credentials

You must provide a valid Contextual AI API key to Weaviate for this integration. Go to [Contextual AI](https://contextual.ai/) to sign up and obtain an API key.

Provide the API key to Weaviate using one of the following methods:

- Set the `CONTEXTUALAI_APIKEY` environment variable that is available to Weaviate.
- Provide the API key at runtime, as shown in the examples below.

**Python**

```py
import weaviate
from weaviate.classes.init import Auth
import os

# Recommended: save sensitive data as environment variables
contextual_key = os.getenv("CONTEXTUAL_API_KEY")
headers = {
    "X-ContextualAI-Api-Key": contextual_key,
}

client = weaviate.connect_to_weaviate_cloud(
    cluster_url=weaviate_url,                       # `weaviate_url`: your Weaviate URL
    auth_credentials=Auth.api_key(weaviate_key),      # `weaviate_key`: your Weaviate API key
    headers=headers
)

# Work with Weaviate

client.close()
```

**JavaScript/TypeScript**

```ts
import weaviate from '@weaviate/node'

const contextualApiKey = process.env.CONTEXTUAL_API_KEY || '';  // Replace with your inference API key

const client = await weaviate.connectToWeaviateCloud(
  'WEAVIATE_INSTANCE_URL',  // Replace with your instance URL
  {
    authCredentials: new weaviate.ApiKey('WEAVIATE_INSTANCE_API_KEY'),
    headers: {
      'X-ContextualAI-Api-Key': contextualApiKey,
    }
  }
)

// Work with Weaviate

client.close()
```

## Configure the reranker

> [!NOTE]
>
> **Reranker model integration mutable from `v1.25.23`, `v1.26.8` and `v1.27.1`**
>
> A collection's `reranker` model integration configuration is mutable from `v1.25.23`, `v1.26.8` and `v1.27.1`. See [this section](https://docs.weaviate.io/weaviate/manage-collections/generative-reranker-models#update-the-reranker-model-integration) for details on how to update the collection configuration.

Configure a Weaviate collection to use a Contextual AI reranker model as follows:

**Python**

```py
from weaviate.classes.config import Configure

client.collections.create(
    "DemoCollection",
    reranker_config=Configure.Reranker.contextualai()
    # Additional parameters not shown
)
```

**JavaScript/TypeScript**

```ts
await client.collections.create({
  name: 'DemoCollection',
  reranker: weaviate.configure.reranker.contextualai(),
});
```

### Reranker parameters

Configure the reranker behavior, including the model to use, through the following parameters:

**Python**

```py
from weaviate.classes.config import Configure

client.collections.create(
    "DemoCollection",
    reranker_config=Configure.Reranker.contextualai(
        model="ctxl-rerank-v2-instruct-multilingual",
        instruction="Prioritize internal sales documents over market analysis reports. More recent documents should be weighted higher.",
        top_n=5
    )
    # Additional parameters not shown
)
```

**JavaScript/TypeScript**

```ts
await client.collections.create({
  name: 'DemoCollection',
  reranker: weaviate.configure.reranker.contextualai({
    model: 'ctxl-rerank-v2-instruct-multilingual',
    instruction: 'Prioritize internal sales documents over market analysis reports. More recent documents should be weighted higher.',
    topN: 5,
  }),
});
```

The [default model](https://docs.weaviate.io/weaviate/model-providers/contextualai/reranker#available-models) is used if no model is specified.

For further details on model parameters, see the [Contextual AI API documentation](https://docs.contextual.ai/api-reference/rerank/rerank).

## Header parameters

You can provide the API key as well as some optional parameters at runtime through additional headers in the request. The following headers are available:

- `X-ContextualAI-Api-Key`: The Contextual AI API key.

Any additional headers provided at runtime will override the existing Weaviate configuration.

Provide the headers as shown in the [API credentials examples](https://docs.weaviate.io/weaviate/model-providers/contextualai/reranker#api-credentials) above.

## Reranking query

Once the reranker is configured, Weaviate performs [reranking operations](https://docs.weaviate.io/weaviate/search/rerank) using the specified Contextual AI model.

More specifically, Weaviate performs an initial search, then reranks the results using the specified model.

Any search in Weaviate can be combined with a reranker to perform reranking operations.

![Reranker integration illustration](https://docs.weaviate.io/assets/images/integration_contextualai_reranker-97950b6c7bed84a93c79a32b20d6d391.png)

**Python**

```py
from weaviate.classes.query import Rerank

collection = client.collections.use("DemoCollection")

response = collection.query.near_text(
    query="A holiday film",  # The model provider integration will automatically vectorize the query
    limit=2,
    rerank=Rerank(
        prop="title",                   # The property to rerank on
        query="A melodic holiday film"  # If not provided, the original query will be used
    )
)

for obj in response.objects:
    print(obj.properties["title"])
```

**JavaScript/TypeScript**

```ts
let myCollection = client.collections.use('DemoCollection');

const results = await myCollection.query.nearText(
  ['A holiday film'],
  {
    limit: 2,
    rerank: {
      property: 'title',                // The property to rerank on
      query: 'A melodic holiday film'   // If not provided, the original query will be used
    }
  }
);

for (const obj of results.objects) {
  console.log(obj.properties['title']);
}
```

## Available models

- `ctxl-rerank-v1-instruct`
- `ctxl-rerank-v2-instruct-multilingual-mini`
- `ctxl-rerank-v2-instruct-multilingual` (default)

## Further resources

### Other integrations

- [Contextual AI generative models + Weaviate](https://docs.weaviate.io/weaviate/model-providers/contextualai/generative).

### Code examples

Once the integrations are configured at the collection, the data management and search operations in Weaviate work identically to any other collection. See the following model-agnostic examples:

- The [How-to: Manage collections](https://docs.weaviate.io/weaviate/manage-collections) and [How-to: Manage objects](https://docs.weaviate.io/weaviate/manage-objects) guides show how to perform data operations (i.e. create, read, update, delete collections and objects within them).
- The [How-to: Query & Search](https://docs.weaviate.io/weaviate/search) guides show how to perform search operations (i.e. vector, keyword, hybrid) as well as retrieval augmented generation.

### References

- Contextual AI [Rerank API documentation](https://docs.contextual.ai/api-reference/rerank/rerank)
