ЦАРЬ ROUTER

Embeddings & Reranking

ЦАРЬ ROUTER поддерживает эмбеддинги и реранкинг через стандартные OpenAI-совместимые endpoints.

POST /v1/embeddings

ПараметрТипОбязательныйОписание
modelstringДаМодель эмбеддингов (см. таблицу ниже)
inputstring / arrayДаТекст или массив текстов для векторизации

Модели эмбеддингов

МодельРазмерностьКонтекстЦена (₽/1M)
yandex/text-search-doc25610.2
yandex/text-search-query25610.2
Qwen/Qwen3-Embedding-0.6B10240.854
BAAI/bge-m31024от 0.6
sber/gigachat-embeddings102451214
sber/gigachat-embeddings-2102451214
sber/gigaembeddings-3b2048409614
sber/embeddings-gigar2560409614

Пример

from openai import OpenAI
 
client = OpenAI(
    base_url="https://api.tsarrouter.ru/v1",
    api_key="sk-tsar-ваш-ключ",
)
 
response = client.embeddings.create(
    model="BAAI/bge-m3",
    input=["Первый документ", "Второй документ"],
)
 
for item in response.data:
    print(f"[{item.index}] вектор размерности {len(item.embedding)}")

Гибридный поиск (Yandex)

Yandex предлагает раздельные модели для документов и запросов:

# Индексация: yandex/text-search-doc
doc_embeddings = client.embeddings.create(model="yandex/text-search-doc", input=documents)
 
# Поиск: yandex/text-search-query
query_embedding = client.embeddings.create(model="yandex/text-search-query", input="запрос")

Для остальных моделей используйте одну модель для обоих случаев.

Какую модель выбрать? Самая дешёвая: BAAI/bge-m3 (от 0.6₽/1M, мульти-провайдер). Универсальная: Qwen/Qwen3-Embedding-0.6B. Максимальная размерность: sber/embeddings-gigar (2560d). Длинные тексты: sber/gigaembeddings-3b (4K контекст).


POST /v1/rerank

Переранжирование документов по релевантности. Используется для повышения качества RAG-пайплайнов после первичного поиска по эмбеддингам.

ПараметрТипОбязательныйОписание
modelstringДаQwen/Qwen3-Reranker-0.6B или BAAI/bge-reranker-v2-m3
querystringДаПоисковый запрос
documentsarrayДаМассив текстов для ранжирования
top_nintegerНетВернуть только top-N результатов

Модели реранкеров

МодельКонтекстЦена (₽/1M)
Qwen/Qwen3-Reranker-0.6B32K0.854
BAAI/bge-reranker-v2-m38K0.244

Пример

import httpx
 
response = httpx.post(
    "https://api.tsarrouter.ru/v1/rerank",
    headers={"Authorization": "Bearer sk-tsar-ваш-ключ"},
    json={
        "model": "Qwen/Qwen3-Reranker-0.6B",
        "query": "столица России",
        "documents": [
            "Москва - столица Российской Федерации",
            "Париж - столица Франции",
            "Россия - крупнейшая страна мира"
        ],
        "top_n": 2
    },
)
 
for result in response.json()["results"]:
    print(f"[{result['index']}] score={result['relevance_score']:.3f}")

Пример ответа

{
  "model": "Qwen/Qwen3-Reranker-0.6B",
  "results": [
    {"index": 2, "relevance_score": 0.95, "document": {"text": "Самый релевантный"}},
    {"index": 0, "relevance_score": 0.72, "document": {"text": "Средне релевантный"}}
  ],
  "usage": {"prompt_tokens": 42, "total_tokens": 42}
}

RAG-пайплайн

# 1. Поиск по эмбеддингам (recall)
candidates = vector_search(query, top_k=50)
 
# 2. Реранкинг (precision)
reranked = httpx.post("https://api.tsarrouter.ru/v1/rerank", ..., json={
    "model": "Qwen/Qwen3-Reranker-0.6B",
    "query": query,
    "documents": [doc.text for doc in candidates],
    "top_n": 5,
}).json()["results"]
 
# 3. Топ-5 в контекст LLM
context = "\n\n".join(r["document"]["text"] for r in reranked)