API
Ранжирование
Rerank переставляет документы по релевантности запросу. Обычно это второй шаг после эмбеддингов: векторный поиск достаёт кандидатов, rerank оставляет лучшие для RAG.
POST https://api.aitunnel.ru/v1/rerank. Стриминга нет. В OpenAI SDK отдельного метода нет — обычный HTTP.
Запрос
Обязательны model, query и непустой массив documents.
curl https://api.aitunnel.ru/v1/rerank \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-d '{
"model": "rerank-4-pro",
"query": "Что такое искусственный интеллект?",
"documents": [
"Искусственный интеллект — область компьютерных наук.",
"Машинное обучение является подразделом ИИ.",
"Нейронные сети — основа современного глубокого обучения.",
"Python — популярный язык программирования."
],
"top_n": 3
}'| Поле | Тип | Смысл |
|---|---|---|
model | string | Id из каталога или слаг provider/model |
query | string | Поисковый запрос |
documents | string[] | Документы для ранжирования |
top_n | number | Сколько лучших вернуть |
return_documents | boolean | Класть текст документа в ответ |
rank_fields | string[] | По каким полям JSON-документов ранжировать |
Ответ
index — позиция в исходном documents. relevance_score от 0 до 1, выше — ближе к запросу.
{
"id": "...",
"model": "rerank-4-pro",
"results": [
{
"index": 0,
"relevance_score": 0.9871,
"document": {
"text": "Искусственный интеллект — область компьютерных наук."
}
},
{
"index": 1,
"relevance_score": 0.8234,
"document": {
"text": "Машинное обучение является подразделом ИИ."
}
}
],
"usage": {
"cost_rub": 0.24,
"balance": 950.5
}
}В usage — cost_rub и balance после списания.
RAG
- Векторный поиск (эмбеддинги) → 20–100 кандидатов
- Rerank → топ 3–5
- Этот топ — в контекст чата
Полный пайплайн с индексом, поиском и генерацией — руководство по RAG.
import requests
from openai import OpenAI
client = OpenAI(
api_key="sk-aitunnel-xxx",
base_url="https://api.aitunnel.ru/v1/",
)
candidates = [
"Париж — столица Франции и крупнейший её город.",
"Эйфелева башня построена в 1889 году.",
"Лондон является столицей Великобритании.",
"Франция — страна в Западной Европе.",
"Берлин — столица Германии.",
]
rerank = requests.post(
"https://api.aitunnel.ru/v1/rerank",
headers={"Authorization": "Bearer sk-aitunnel-xxx"},
json={
"model": "rerank-4-pro",
"query": "Какой город является столицей Франции?",
"documents": candidates,
"top_n": 2,
},
).json()
top = [candidates[item["index"]] for item in rerank["results"]]
context = "\n".join(top)
answer = client.chat.completions.create(
model="gpt-5-nano",
messages=[
{"role": "system", "content": f"Отвечай только по контексту:\n{context}"},
{"role": "user", "content": "Какой город является столицей Франции?"},
],
)
print(answer.choices[0].message.content)Модели
Актуальный список — группа rerank в каталоге и без ключа:
curl https://api.aitunnel.ru/public/aitunnel/models/rerankПримеры имён: rerank-4-pro, rerank-4-fast, rerank-v3.5, rerank-2.5, qwen3-reranker-8b. Слаг provider/model — OpenRouter.
Цена
У части моделей цена за запрос, у части — за токены входа. Смотрите карточку в каталоге. 402 до запроса считается по худшему сценарию (полный контекст у token-моделей).
Практика
- В LLM отдавайте 3–5 лучших, не весь поиск.
- Длинные тексты режьте на фрагменты ~200–500 слов.
- Сначала дешёвый векторный отбор, потом rerank — так дешевле и точнее, чем один только embeddings.