API

Answer Search

Полный RAG-цикл: поиск источников, семантическое ранжирование через BGE-reranker-v2-m3, чтение релевантных страниц и синтез финального ответа с указанием релевантности каждого источника.

POSThttps://srezai.ru/api/v1/answer

Семантическое ранжирование

Answer Search использует BGE-reranker-v2-m3 для отбора наиболее релевантных источников перед чтением. Это повышает качество ответа: страницы читаются в порядке семантической близости к запросу, а не лексического ранга поисковика.

Пример запроса#

curl -X POST https://srezai.ru/api/v1/answer \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer srz_live_ВАШ_КЛЮЧ" \
  -d '{
    "query": "как работает BGE-reranker-v2-m3",
    "depth": "balanced"
  }'

Параметры тела#

querystringrequired

Вопрос или поисковый запрос. Обрезается до 2000 символов. Пустой запрос вернёт 400.

depthstringoptional

Глубина поиска: fast (2 страницы), balanced (5 страниц, по умолчанию), deep (10 страниц). Больше страниц — выше качество ответа, но дольше время выполнения.

languagestringoptional

Язык поиска: auto (по умолчанию), ru,en. Определяет язык источников и ответа.

Конвейер обработки#

Answer Search выполняет пять этапов:

  1. Переформулировка запроса — расширение ключевых слов и синонимов для лучшего покрытия поиска
  2. Параллельный поиск — несколько вариантов запроса идут одновременно, результаты дедуплицируются
  3. Семантическое ранжирование — BGE-reranker-v2-m3 оценивает релевантность каждого результата к исходному запросу и сортирует по убыванию
  4. Чтение страниц — топ N страниц читаются параллельно, извлекается текст
  5. Синтез ответа — LLM собирает финальный ответ на основе прочитанного контента

Ответ#

json
{
  "answer": "BGE-reranker-v2-m3 — это семантическая модель от BAAI для ранжирования...",
  "sources": [
    {
      "url": "https://huggingface.co/BAAI/bge-reranker-v2-m3",
      "title": "BAAI/bge-reranker-v2-m3 · Hugging Face",
      "relevance": 0.804,
      "chars_read": 2847,
      "read_success": true
    },
    {
      "url": "https://github.com/FlagOpen/FlagEmbedding",
      "title": "FlagOpen/FlagEmbedding: Retrieval and Reranking",
      "relevance": 0.742,
      "chars_read": 1956,
      "read_success": true
    }
  ],
  "confidence": 0.85,
  "tookMs": 19342
}

Поля ответа#

answerstringoptional

Готовый ответ в виде текста. Синтезирован из прочитанных источников.

sourcesarrayoptional

Массив использованных источников. Каждый источник содержит:

  • url — адрес страницы
  • title — заголовок страницы
  • relevance — оценка релевантности от BGE-reranker (0–1)
  • chars_read — количество прочитанных символов
  • read_success — успешно ли прочитана страница
  • rejection_reason — причина отказа (если read_success=false)

confidencenumberoptional

Уверенность в ответе от 0 до 1. Основана на качестве источников и их релевантности.

tookMsnumberoptional

Время выполнения всего конвейера в миллисекундах.

Интерпретация relevance#

Поле relevance показывает семантическую близость источника к запросу:

  • 0.7–1.0 — высокая релевантность, источник точно по теме
  • 0.4–0.7 — средняя релевантность, частично затрагивает тему
  • 0.0–0.4 — низкая релевантность, косвенное отношение к запросу

Источники всегда отсортированы по убыванию relevance — первые самые релевантные.

О BGE-reranker-v2-m3#

BGE-reranker-v2-m3 — multilingual семантическая модель от BAAI (Beijing Academy of AI) для точного ранжирования пар (запрос, документ). Поддерживает русский, английский и ещё 100+ языков.

В отличие от лексического поиска (BM25), BGE-reranker понимает смысл текста: запрос «как установить Python» найдёт релевантную статью даже если в ней нет слова «установить», но есть «инсталляция» или «setup».

Доступно и по MCP

Тот же эндпоинт доступен как инструмент answer_search на MCP-сервере — подключается к ИИ-агенту без ручной интеграции REST.

Стоимость#

Стоимость зависит от depth — фиксированная цена за запрос, независимо от объёма полученного ответа:

  • fast (2 страницы) — 50 кредитов
  • balanced (5 страниц, по умолчанию) — 100 кредитов
  • deep (10 страниц) — 200 кредитов

Коды ошибок (401, 400, 429, 503) описаны в разделе Ошибки.