~/ai — rag — re-ranking
‹ ai engineering13 / поиск

RE-RANKING · ВТОРОЙ, БОЛЕЕ ТОЧНЫЙ ВЗГЛЯД

Гибридный поиск быстро находит кандидатов по всему корпусу. Ре-ранкер берёт верхушку списка и перечитывает каждый пункт вместе с вопросом, чтобы расставить их точнее. Модель настоящая: cross-encoder ms-marco-MiniLM-L-6-v2.

01 · две модели замер на CPU
bi-encoder (поиск)вопрос и пункты кодируются отдельно, пункты — заранееcos(emb(q), emb(chunk))на вопрос:
cross-encoder (ре-ранк)вопрос и пункт идут в модель вместе, внимание видит обаmodel([CLS] q [SEP] chunk)на каждую пару:
Cross-encoder точнее, но его нельзя посчитать заранее: каждую пару «вопрос + пункт» приходится прогонять заново. На 20 пунктах это , на миллионе — часы. Поэтому сначала идёт быстрый поиск, а ре-ранкер получает только топ-N.
02 · ре-ранкинг
ре-ранкеру отдаём топ-
#п.пункт тендерагибрce
03 · помогло ли 16 вопросов · считается здесь
Оценки cross-encoder посчитаны заранее настоящей моделью ms-marco-MiniLM-L-6-v2 (ONNX-экспорт Xenova, из npm-пакета kontexta-reranker-model): модель весит 90 МБ, тащить её на телефон ради 320 пар незачем. BM25, векторы MiniLM, RRF, пересортировка и все метрики считаются в браузере. 16 вопросов и правильные пункты я, Claude, написал и разметил до запуска моделей. Время — замер на CPU сервера, а не на твоём телефоне.
~/ai $ rerank(query, hybrid(query)[:N])