PunchSoldiers rescue 41 Senegal-to-Kano travellers in ZamfaraThe Jerusalem PostNew Octagon Project promotes civic engagement in response to ‘erosion of truth’ following October 7CNN TürkÖzgür Özel cumhurbaşkanı adayı mı? 'Forvetlerim' dediği İmamoğlu ve Yavaş artık yok!RTP DesportoPortugal vitorioso com Jesus tenta ficar perto do apuramento em CopenhagaInquirerP20.4-M ‘shabu’ netted off Tawi-Tawi watersUOLÔnibus perde controle e atinge carros e escola no Jabaquara, em SPSouth China Morning PostIt’s the end of the world – and I don’t feel fineThe RegisterHMRC bets up to £2.4B on Salesforce for taxpayer CRM overhaulMalay MailWrong venue again: S. Korea volleyball team loses training after Asian Games bus blunderCollider9 Best Survival Movies to Watch Ahead of Heart of the BeastThe Sydney Morning HeraldHill launches comeback bidNOS SportIsraëlische aanvoerder haalt uit naar Ierse spelers: 'Ze haten ons en wij mogen hen niet'
The Daily Newsstand · Free, Always
Tuesday, September 29, 2026

Закрытый Jev против открытой Laya: сравниваем decision-модели в RAG-реранжировании

Translate

Можно ли заменить облачный Jev локальной Laya Multilingual? После сравнения Jev с обычными LLM проверил Jev и Laya на реранжировании документов. Сравнил качество и скорость на трех поисковых наборах, добавив специализированные BGE и Qwen3-Reranker.

Зачем здесь реранкер

Представим вопрос: как найти честного страхового брокера в Канаде? Поиск может вернуть и советы по выбору специалиста, и обсуждение дешевой автостраховки. Во втором тексте тоже есть Канада, брокеры и страхование, но вопрос пользователя другой.

Реранкер получает запрос вместе с каждым найденным документом, оценивает релевантность и меняет порядок выдачи. В RAG модель пишет ответ с опорой на найденные документы; реранжирование помогает выбрать, какие из них ей передать. Здесь я проверял только поиск и реранжирование, без генерации ответа.

Подготовил два варианта исходной выдачи:

  • BM25 - лексический поиск по словам запроса.

  • Гибридный поиск - BM25 и поиск по векторам, объединенные через RRF (Reciprocal Rank Fusion). Этот алгоритм складывает баллы за позиции документа в двух списках.

Для гибридного варианта брал по 100 документов из каждого поиска, объединял результаты с равными весами и параметром RRF k=60, затем оставлял первые 20. Для отдельного варианта BM25 также сохранял 20 кандидатов. Векторы строила jinaai/jina-embeddings-v2-small-en.

Два варианта поиска и реранжирование двадцати кандидатов

Два варианта поиска и реранжирование двадцати кандидатов

BM25 и RRF проверяются отдельно. Внутри каждого варианта все реранкеры получают одинаковые 20 документов. Пунктиром выделен этап, время которого измерялось.

Реранкер не ищет новые документы. Если нужного ответа нет среди двадцати кандидатов, перестановкой его не получить. Поэтому сравнивать модели нужно не только друг с другом, но и с исходным порядком поиска.

Кто участвует

Jev от TypeSafe и Laya возвращают заданный тип решения - например, оценку вероятности ответа “да”. Такие модели называют decision-моделями. В этом эксперименте вопрос один: релевантен ли документ запросу? Это сравнение их работы на одной задаче, а не утверждение, что у них одинаковая архитектура. Jev я использовал через API, Laya - с локальными весами. BGE и Qwen показывают, как на той же задаче работают специализированные реранкеры.

Модель

Назначение

Как запускали

Jev 1.13

Decision-модель

API OpenRouter

Laya Multilingual

Decision-модель

Локально, RTX 5090

BGE-reranker-v2-m3

Реранкер

Локально, RTX 5090

Qwen3-Reranker-0.6B

Реранкер

Локально, RTX 5090

Qwen3-Reranker-8B

Реранкер

Локально, RTX 5090

Открытые веса: Laya Multilingual, BGE, Qwen 0.6B, Qwen 8B. Qwen3-Reranker основан на языковой модели, но здесь используется как специализированный реранкер: без генерации текста, по оценке ответа yes относительно no.

Для Laya выбрал именно Multilingual и явно установил max_len=8192. Штатных коротких окон проверенных вариантов Laya не хватало для части полных входов. Выбор сделал после проверки длины, до теста качества. У BGE лимит адаптера тоже 8192 токена, у обеих Qwen - 32 768. Это лимиты полного входа: запрос, документ и служебный текст. Длинные документы целиком или несколько документов в одном контексте могут не поместиться. Для них понадобится разбиение или другая модель; качество такого разбиения я здесь не проверял.

Что именно получали Jev и Laya

Обеим моделям передавал один вопрос:

Is the document relevant to the query?

В state находились запрос и полный текст одного документа. Если у документа был заголовок, он добавлялся перед текстом. Тип вопроса noul означает оценку ответа “да” от 0 до 1. Ниже фрагмент формирования входа. query и full_document - строки из набора, states - пакет таких пар (батч), agent - уже загруженная Laya Multilingual. HTTP-вызов и загрузка весов здесь опущены.

question = {
    "type": "noul",
    "instructions": "Is the document relevant to the query?",
}
state = {"query": query, "document": full_document}

# Тело запроса Jev через OpenRouter
payload = {
    "model": "typesafe/jev-1.13",
    "state": state,
    "questions": {"relevance": question},
}

# Батч независимых пар для Laya
responses = agent.predict_batch(
    states,
    {"relevant": question},
    batch_size=len(states),
    max_len=8192,
    sort_by_length=False,
)
Оценка одной пары запроса и документа, затем сортировка результатов

Оценка одной пары запроса и документа, затем сортировка результатов

Модель оценивает каждую пару отдельно. После получения двадцати оценок код сортирует документы по убыванию балла. Батч не означает, что двадцать документов попали в один контекст.

У Jev оценку брал из answers["relevance"]["noul"]. У Laya штатное поле noul округляется до четырех знаков, поэтому адаптер сохранял также неокругленную вероятность из исходных выходов модели - logits. Для сортировки использовал ее, не confidence. При точном равенстве баллов сохранял исходный порядок поиска. Например, для ответа о выборе честного брокера Jev вернул noul = 0.86, Laya - noul = 0.0794. Сами баллы разных моделей не считаю взаимозаменяемыми: 0,9 у Jev и 0,9 у Laya не гарантируют одинаковую надежность.

Данные и условия теста

Взял три набора из BEIR - коллекции задач информационного поиска с документами, запросами и готовой разметкой релевантности. Все три набора на английском языке; запросы в примерах ниже переведены только для статьи.

Набор

Область

Документов для поиска

Тестовых запросов

SciFact

Научные утверждения

5 183

300

FiQA

Финансовые вопросы

57 638

648

NFCorpus

Медицина и питание

3 633

323

Вместо нарезки на новые фрагменты использовал исходные документы наборов. Иначе пришлось бы решать, относится ли разметка полного документа к каждой получившейся части. Тексты не обрезал. TREC-COVID проверил на подготовительном этапе, но не включил: часть входов превышала выбранные окна.

На 1271 тестовый запрос приходится два способа поиска и по 20 кандидатов. Итого каждая модель обработала 2542 списка, или 50 840 пар. Повторяющиеся пары между BM25 и RRF оценивались заново, без кеша. Для подготовки использовал отдельные 12 запросов из train/dev. Текстовые совпадения с test исключил из подготовительной выборки. Инструкции и параметры закрепил по пилотам до расчета тестового качества, после просмотра ошибок test их не менял. Прогрев учитывался отдельно.

Использованное железо:

  • Основной тест локальных моделей - NVIDIA GeForce RTX 5090 с 32 ГБ видеопамяти. Модели запускались по очереди на одной карте.

  • Отдельный замер скорости потока - другая NVIDIA GeForce RTX 5090 с 32 ГБ видеопамяти.

  • Подготовка первичного поиска и расчет векторов - CPU Intel Core i7-12700H.

Jev в основном тесте вызывался через OpenRouter, в ответах была версия typesafe/jev-1.13-20260917. Все основные прогоны завершились без ошибок и повторных попыток.

Качество после гибридного поиска

Основная метрика - NDCG@10. Она учитывает релевантность и положение документов в первой десятке: поднять полезный документ на первое место лучше, чем оставить его десятым. Значения от 0 до 1, больше - лучше. Для каждого запроса метрика считается по готовой разметке, затем усредняется по набору.

На графике показано не абсолютное качество, а его изменение после реранжирования относительно RRF. Ноль - исходная выдача, вправо - улучшение, влево - ухудшение. Например, +0,100 - прибавка 0,100 к NDCG@10, не рост на 10%.

Изменение NDCG@10 после реранжирования кандидатов RRF

Изменение NDCG@10 после реранжирования кандидатов RRF

Разница “после минус до”. Исходный NDCG@10 у RRF: SciFact - 0,696, FiQA - 0,341, NFCorpus - 0,339. Шкала одинакова для всех трех наборов.

На SciFact Jev и Qwen3-Reranker-8B получили почти одинаковый результат: 0,780 и 0,779. На FiQA выше Qwen3-Reranker-8B, на NFCorpus - Jev. Laya Multilingual снизила средний NDCG@10 на всех трех наборах.

После такого результата проверил адаптер Laya: использовалась вероятность true, сортировка шла по убыванию, тексты не обрезались. Ошибок в этих шагах не обнаружил; причину снижения качества проверка не установила. Из 1271 выдачи RRF Laya улучшила NDCG@10 у 239, оставила прежним у 475 и ухудшила у 557. В среднем по каждому набору потери перевесили улучшения.

Различия между моделями я здесь не называю статистически значимыми. Сохраненные bootstrap-интервалы сравнивают каждую модель с исходным поиском, а не Jev с Qwen.

А если исходный поиск - только BM25

Для BM25 картина по средним значениям повторилась: Jev и профильные реранкеры улучшили порядок, Laya снизила качество.

Модель

SciFact

FiQA

NFCorpus

Без реранжирования

0,679

0,253

0,319

Jev 1.13

0,777

0,365

0,357

Laya Multilingual

0,464

0,225

0,270

BGE-reranker-v2-m3

0,738

0,346

0,339

Qwen3-Reranker-0.6B

0,759

0,354

0,352

Qwen3-Reranker-8B

0,775

0,385

0,352

В таблице NDCG@10 округлен до трех знаков. Величина изменений зависит от исходной выдачи: например, на FiQA Laya потеряла 0,028 после BM25 и 0,085 после RRF.

Результат ограничен и самими кандидатами. Recall@20 - средняя доля размеченных релевантных документов, найденных в первых двадцати. Для RRF он составил 0,882 на SciFact, 0,496 на FiQA и 0,193 на NFCorpus. Реранкер работает только с этой найденной частью. В полном отчете также сохранены Recall@10 для первой десятки и MRR@10 - средняя обратная позиция первого релевантного документа в ней; если такого документа нет, вклад равен нулю.

Сколько ждать готовый список

Я измерял время до готового порядка всех двадцати документов, а не одного ответа модели. Первичный поиск, загрузка весов и прогрев в эти числа не входят. Медиана описывает середину измерений. P95 - время, в которое уложились 95% списков. Оба показателя рассчитаны по всем 2542 измерениям каждой модели, с двумя вариантами поиска и тремя наборами данных.

Медиана и P95 времени обработки двадцати документов

Медиана и P95 времени обработки двадцати документов

Миллисекунды на список, меньше - быстрее. Бирюзовая полоса - медиана, песочная - P95. Jev измерялся через OpenRouter с учетом сети; остальные модели - на RTX 5090.

Наименьшие медиана и P95 у BGE: 72,0 и 107,3 мс. У Laya - 91,5 и 146,4 мс. Для Qwen3-Reranker-8B медиана выросла до 857,5 мс, для Jev через API - до 1751,2 мс.

Внутри списка Jev использовал четыре параллельных HTTP-запроса. Локальные модели обрабатывали по четыре пары в батче, Qwen3-Reranker-8B - по две. Это сравнение конкретных способов запуска, не чистой скорости архитектур. Из него нельзя получить задержку Jev при локальном запуске или скорость API под большой нагрузкой.

Скорость обработки потока

Задержка показывает, сколько занимает обработка одного списка. Когда запросы уже накопились, важно знать, сколько пар модель успевает оценить за секунду - это ее пропускная способность. Для этого отдельно проверил локальные модели на накопленном наборе пар: после прогрева каждая прошла три раза по 480 парам. Скорость считал как общее число пар, деленное на суммарное время обработки.

Скорость обработки пар запроса и документа локальными моделями

Скорость обработки пар запроса и документа локальными моделями

Пар в секунду, больше - быстрее. Отдельная RTX 5090 с теми же версиями моделей, режимами вычислений и размерами батча. У Qwen3-Reranker-8B батч из двух пар, у остальных - из четырех. Jev в этом замере не участвовал.

BGE обработал 168,5 пары в секунду, Laya - 152,8. Обе модели быстрее двух Qwen в выбранных настройках. Здесь не измерялся предел производительности видеокарты: размеры батчей закреплены заранее и не подбирались до максимальной загрузки. Набор пар здесь другой, поэтому результат не равен 20 / медиана с предыдущего графика. Сквозное время первичного поиска вместе с реранжированием не измерялось.

Память и стоимость API

FP32 - 32-битный формат чисел, FP16 и BF16 - два разных 16-битных. Выбор формата влияет на точность вычислений, расход памяти и скорость. TF32 - режим GPU, который ускоряет часть операций с FP32 за счет меньшей точности, не меняя формат хранения весов.

Модель

Режим

Пар в батче

Allocated, GiB

Reserved, GiB

Laya Multilingual

FP32 + TF32

4

6,54

29,97

BGE-reranker-v2-m3

FP16

4

1,37

2,03

Qwen3-Reranker-0.6B

BF16

4

1,50

2,08

Qwen3-Reranker-8B

BF16

2

15,83

17,49

Это пики основного теста. Allocated - память, занятая тензорами; reserved - вся память, зарезервированная PyTorch, включая кеш для повторного использования. GiB равен 2³⁰ байт. Reserved не показывает минимально необходимый объем видеопамяти: почти 30 GiB у Laya не были постоянно заняты тензорами. Память Jev через API не измерялась.

Больше всего памяти тензоров использовала Qwen3-Reranker-8B. Для Laya FP32 с разрешенным TF32 был задан уже в пилоте и сохранен в основном тесте и замере потока. Laya в FP16 и BF16 здесь не проверял, поэтому неизвестно, сохранится ли ее отставание от BGE при другом режиме вычислений. Квантование не применялось.

Основной тест Jev через OpenRouter, без пилота и прогрева, стоил около $1,30. Для использованной длины документов это около $0,51 за тысячу списков по двадцать кандидатов. С отдельным пилотом и прогревом получилось около $1,31. До округления сумма из ответов API совпала со списанием; точные значения сохранены в репозитории.

Что произошло с конкретными документами

Ниже три примера из FiQA, выбранных после теста по заметным расхождениям, включая выигрыш Laya. Это иллюстрации, а не случайная выборка. Полезный документ может отсутствовать в разметке и не приносить баллов в NDCG@10. Это ограничение одинаково относится к результатам всех моделей.

Советы по выбору брокера опустились на шестнадцатое место

Запрос 1451: “Как найти честного независимого страхового брокера в Канаде?” Размеченный ответ 538005 предлагает начать с небольшой сделки, спросить рекомендации у знакомых и посмотреть отзывы. В исходной выдаче RRF он уже первый. Jev поставил его вторым, BGE - третьим, обе Qwen оставили первым. Laya опустила на шестнадцатое место.

Позиция одного размеченного ответа после RRF, Jev и Laya

Позиция одного размеченного ответа после RRF, Jev и Laya

Желтым выделен один и тот же документ: места 1, 2 и 16. “Как проверить честность специалиста” - краткая подпись по содержанию, не заголовок из набора. Голубые документы не имеют оценки в разметке для этого запроса.

Первым у Laya оказался текст о снижении расходов на автострахование с оценкой около 0,957. Для ответа о выборе надежного специалиста она дала около 0,079. Оба текста связаны со страхованием в Канаде, но отвечают на разные вопросы. Полный вход Laya для размеченного ответа занимал 174 токена и помещался в окно.

Laya лучше остальных подняла ответ про деньги закрытой компании

Запрос 3569: “Средства с закрытого банковского счета перешли государству”. Размеченный ответ 450135 описывает оставшиеся деньги закрытой компании и ее восстановление. RRF поставил его пятнадцатым. В этом примере Laya поставила размеченный ответ выше остальных моделей - на первое место. BGE и обе Qwen подняли его на третье, Jev - на седьмое.

Вопрос об опционах и текст про валютный счет

Запрос 8537: “Что такое Options Account?” Размеченный ответ объясняет базовые понятия опционов и доступ к торговле ими на счете. В RRF он пятнадцатый. Qwen3-Reranker-8B подняла его на первое место, Laya - на второе, Jev и Qwen3-Reranker-0.6B - на девятое, BGE - на двенадцатое.

Первым у Laya оказался текст про валютный счет и международную карту. Там встречаются слова option и account, но торговлю опционами он не объясняет.

Проверка адаптера и разметки

Проверка Laya охватила все 50 840 оценок: я сопоставил вероятность true из сохраненных logits с баллами для сортировки. Использовались неокругленные значения, не confidence. Самый длинный вход занимал 2678 токенов при лимите 8192.

В SciFact нашел запрос 517 про копептин, связанный с документом про BNP и NT-pro-BNP. Обе Qwen ставят этот документ первым и получают NDCG@10 = 1, Jev - тринадцатым и получает 0. Связь этого запроса с размеченным документом требует отдельной проверки. Разметку и итоговые метрики я оставил без изменений.

Что я выбрал бы

В проверенной конфигурации с одним вопросом Noul Laya Multilingual не стала для меня заменой Jev. На SciFact, FiQA и NFCorpus она снизила средний NDCG@10 относительно исходных BM25 и RRF. Другие модели семейства, инструкции и дообучение я не проверял.

Для локального поиска с небольшой задержкой я бы начал с BGE-reranker-v2-m3: в моих настройках он оказался быстрее Laya в обоих замерах, улучшил выдачу на всех трех наборах и использовал меньше памяти тензоров. Qwen3-Reranker-0.6B показала более высокий NDCG@10, но обрабатывала список дольше.

Если качество важнее задержки, сравнивал бы Jev и Qwen3-Reranker-8B уже на своих запросах. На SciFact они почти совпали, на FiQA выше Qwen, на NFCorpus - Jev. В моем запуске Jev не требовал локальной GPU, но зависел от сети и API; Qwen3-Reranker-8B работала локально и занимала около 15,8 GiB памяти тензоров.

Код и результаты

Код эксперимента и команды воспроизведения на GitHub. В репозитории сохранены конфигурации, версии моделей, оценки и порядок документов, время обработки и расчет метрик. Полные значения качества и разбор примеров доступны отдельно.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.