Rerank (ранжирование документов)
https://api.ru-openrouter.ru/v1/
Rerank — это переупорядочивание списка документов по их релевантности к заданному поисковому запросу. В отличие от поиска, который возвращает документы в исходном порядке, rerank использует модель для оценки, насколько каждый документ соответствует запросу, и возвращает их отсортированными по убыванию релевантности.
Для чего используется Rerank
- RAG (Retrieval-Augmented Generation): второй этап пайплайна — после быстрого поиска (например, по эмбеддингам) rerank уточняет порядок кандидатов перед передачей в LLM
- Семантический поиск: повышение точности выдачи за счёт глубокой оценки релевантности
- Фильтрация шума: отсечение нерелевантных документов из предварительно отобранного множества
- Анализ документов: ранжирование фрагментов текста по соответствию запросу
Эндпоинты
| Эндпоинт | Метод | Описание |
|---|---|---|
/v1/rerank |
POST | Переранжирование документов |
/v1/rerank/models |
GET | Список rerank-моделей |
/v1/models?filter=rerank |
GET | Альтернативный способ получения списка rerank-моделей |
Аутентификация
Authorization: Bearer sk_ваш_api_ключ
POST /v1/rerank
Переранжирование списка документов по релевантности к запросу.
Параметры запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
model |
string | ID rerank-модели (например, cohere/rerank-v3.5, cohere/rerank-4-pro) |
|
query |
string | Поисковый запрос, относительно которого оценивается релевантность | |
documents |
(string | object)[] | Список документов для ранжирования. Минимум 1 элемент | |
top_n |
integer | Количество наиболее релевантных документов в ответе (≥ 1). По умолчанию возвращаются все | |
provider |
object | null | Настройки маршрутизации провайдера |
Параметр documents
Документы могут быть:
Простой строкой — обычный текст документа:
"Paris is the capital of France."
Структурированным объектом — для мультимодальных моделей, с полями text и/или image. Должно быть указано хотя бы одно из них:
{
"text": "Описание изображения",
"image": "https://example.com/image.png"
}
Поле image принимает удалённый URL (http/https) или data-URI в base64 (data:image/...).
Параметр provider
Настройки маршрутизации провайдера для данного запроса. Все параметры необязательные.
| Поле | Тип | Описание |
|---|---|---|
allow_fallbacks |
boolean | null | true (по умолчанию) — при недоступности основного провайдера использовать резервные. false — использовать только указанный провайдер и вернуть ошибку, если он недоступен |
order |
string[] | null | Упорядоченный список провайдеров. Роутер пробует первого в списке, затем следующего при недоступности |
only |
string[] | null | Разрешить только указанных провайдеров |
ignore |
string[] | null | Игнорировать указанных провайдеров |
sort |
string | Стратегия сортировки: price, throughput, latency, exacto. При задании этого параметра балансировка нагрузки не выполняется |
max_price |
object | Максимальная цена за запрос (в USD) |
preferred_max_latency |
number | object | Предпочтительная максимальная задержка в секундах (p50 или перцентильные границы) |
preferred_min_throughput |
number | object | Предпочтительная минимальная пропускная способность (токенов/сек) |
quantizations |
string[] | null | Фильтр по уровню квантизации (например, fp16, int8) |
require_parameters |
boolean | null | Использовать только провайдеров, поддерживающих переданные параметры |
data_collection |
string | null | allow (по умолчанию) или deny — политика обработки данных провайдером |
zdr |
boolean | null | Ограничить маршрутизацию только ZDR-эндпоинтами (Zero Data Retention) |
enforce_distillable_text |
boolean | null | Использовать только модели, разрешающие дистилляцию текста |
Базовый запрос (cURL)
curl https://api.ru-openrouter.ru/v1/rerank \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_ваш_api_ключ" \
-d '{
"model": "cohere/rerank-v3.5",
"query": "What is the capital of France?",
"documents": [
"Paris is the capital of France.",
"Berlin is the capital of Germany."
],
"top_n": 3
}'
Пример на Python
import requests
response = requests.post(
"https://api.ru-openrouter.ru/v1/rerank",
headers={
"Authorization": "Bearer sk_ваш_api_ключ",
"Content-Type": "application/json",
},
json={
"model": "cohere/rerank-v3.5",
"query": "What is the capital of France?",
"documents": [
"Paris is the capital of France.",
"Berlin is the capital of Germany."
],
"top_n": 3,
}
)
data = response.json()
for result in data["results"]:
print(f"{result['index']}: {result['document']['text']} (score: {result['relevance_score']})")
Пример на Node.js
const response = await fetch("https://api.ru-openrouter.ru/v1/rerank", {
method: "POST",
headers: {
"Authorization": "Bearer sk_ваш_api_ключ",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "cohere/rerank-v3.5",
query: "What is the capital of France?",
documents: [
"Paris is the capital of France.",
"Berlin is the capital of Germany."
],
top_n: 3,
}),
});
const data = await response.json();
console.log(data.results);
Пример на PHP
$ch = curl_init("https://api.ru-openrouter.ru/v1/rerank");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer sk_ваш_api_ключ",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"model" => "cohere/rerank-v3.5",
"query" => "What is the capital of France?",
"documents" => [
"Paris is the capital of France.",
"Berlin is the capital of Germany."
],
"top_n" => 3,
]),
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
Пример ответа
{
"id": "gen-rerank-1782124967-sYTtu1JdgYUQ6uHj4kvL",
"model": "cohere/rerank-v3.5",
"results": [
{
"document": {
"text": "Paris is the capital of France."
},
"index": 0,
"relevance_score": 0.98
},
{
"document": {
"text": "Berlin is the capital of Germany."
},
"index": 1,
"relevance_score": 0.12
}
],
"usage": {
"search_units": 1,
"total_tokens": 150,
"cost_rub": 0.015
}
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id |
string | Уникальный ID генерации (ORID-формат, начинается с gen-rerank-) |
model |
string | Модель, использованная для ранжирования |
provider |
string | Провайдер, обработавший запрос (присутствует, если доступен) |
results |
object[] | Список результатов, отсортированных по убыванию релевантности |
results[].index |
integer | Индекс документа в исходном списке documents |
results[].relevance_score |
number | Оценка релевантности документа запросу (0–1) |
results[].document.text |
string | Текст документа |
results[].document.image |
string | Изображение документа (URL или data-URI), если было передано |
usage.search_units |
integer | Количество использованных search units (биллинг Cohere) |
usage.total_tokens |
integer | Общее количество использованных токенов |
usage.cost_rub |
number | Стоимость запроса в рублях |
GET /v1/rerank/models
Возвращает список моделей, поддерживающих ранжирование документов (rerank).
curl https://api.ru-openrouter.ru/v1/rerank/models \
-H "Authorization: Bearer sk_ваш_api_ключ"
Пример ответа
{
"object": "list",
"data": [
{
"id": "cohere/rerank-v3.5",
"object": "model",
"created": 1709012345,
"owned_by": "cohere",
"pricing": {
"prompt": "0.000015000",
"currency": "RUB",
"pricing_type": "per_request"
},
"description": "Cohere: Rerank v3.5"
}
]
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
object |
string | Всегда "list" |
data |
object[] | Список rerank-моделей |
data[].id |
string | ID модели |
data[].object |
string | Всегда "model" |
data[].created |
integer | Unix-время последнего обновления |
data[].owned_by |
string | Провайдер-владелец модели |
data[].pricing.prompt |
string | Стоимость запроса в рублях |
data[].pricing.currency |
string | Валюта (RUB) |
data[].pricing.pricing_type |
string | Тип тарификации (per_request) |
data[].description |
string | Описание модели |
Также список rerank-моделей можно получить через /v1/models?filter=rerank.
Ограничения
- Нет streaming: rerank возвращается полным ответом, потоковая передача не поддерживается
- Минимум документов: массив
documentsдолжен содержать как минимум 1 элемент - Модель должна поддерживать rerank: запрос к модели без поддержки rerank вернёт ошибку
- Детерминированный порядок: результаты всегда отсортированы по убыванию
relevance_score
Коды ошибок
| HTTP | Код | Описание |
|---|---|---|
| 400 | missing_model |
Не указана модель |
| 400 | missing_query |
Не указан запрос |
| 400 | missing_documents |
Не указан или некорректен documents (должен быть непустым массивом) |
| 400 | model_not_found |
Модель не найдена или неактивна |
| 400 | model_not_rerank |
Модель не поддерживает rerank |
| 401 | invalid_api_key |
Неверный API-ключ |
| 402 | insufficient_balance |
Недостаточно средств на балансе |
| 429 | limit_exceeded |
Превышен лимит API-ключа |
| 429 | rate_limit_exceeded |
Превышен лимит запросов |
| 502 | empty_response |
Пустой ответ от провайдера |
| 502 | openrouter_error |
Ошибка провайдера (код и сообщение пробрасываются из ответа) |