← AI Advent 2026

День 28: поиск по проекту — локально и в облаке

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

Итог дня

Читаю результаты прогона…

  • Повторов на вопрос — нет данных. Разница в один вердикт может быть шумом температуры 1, а не свойством стороны.
  • Разброс измерен только на трёх вопросах: нет данных.
  • Мерено на ноутбуке, а не на проде: на прод переносятся качество и ограничения модели, не секунды.
  • Оценку ставит судья — нет данных, то есть модель, а не код; на десяти вопросах статистики нет.
  • Индексы сторон разные: локальный собран на ноутбуке, облачный — на сервере. Что значит «поиск совпал», сказано строкой выше.
Как мерено качество

Рубрика та же, что в дне 22: 2 — верно, 1 — частично, 0 — неверно. Оценку по каждому ответу ставит судья, и судья — модель, читающая вопрос, ответ и найденные фрагменты. Его слова по каждому вопросу лежат в разборе ниже, и прочтение можно оспорить.

Средняя по рубрике на десяти вопросах — не статистика: доверительного интервала у неё нет, и разница в один-два вопроса от неё не отличима. Поэтому порог шума на странице считается как два вопроса из набора, а не берётся на глаз.

Признаки «путь назван» и «ссылка на источник есть» ловят форму, а не смысл: путь сверяется подстрокой. Они местами расходятся с оценкой судьи — оценку ставит он, а не признак.

Что именно сравнивалось

Один и тот же набор вопросов, один промпт из реестра агентов, одна стратегия нарезки документов. Отличается то, что ниже промпта: локальная сторона искала в индексе, собранном на ноутбуке, и отвечала моделью на ноутбуке; облачная — свежий прогон дня 22 по проду.

Поиск отдаёт по пять фрагментов на вопрос, фрагмент приходит в промпт срезанным. Из этого и следует главная оговорка: разные индексы отдают разные фрагменты, и на вопросе, где верный документ нашла только одна сторона, разница в ответах — это разница поиска, а не моделей.

«Поиск совпал» означает совпадение документа, а не фрагмента: нужного раздела в найденных пяти фрагментах могло не быть у обеих сторон. Выдачи поиска облачной стороны в данных нет — прогон дня 22 записывает признаки и ответ, а не список путей.

Чего этот замер не мерил
  • Устойчивости всего набора. Один прогон на вопрос; по три ответа — только у трёх вопросов, и это вся стабильность, которую неделя измерила.
  • Скорости облачной стороны. Прогон дня 22 времени запуска не записывает, а сданный день не правится. В таблице на этом месте стоит «нет данных», а не придуманный нуль.
  • Качества поиска как такового. Это мера дня 21 и дня 22; здесь поиск — условие, а не предмет.
  • Потолка железа. Ноутбук был в обычной работе владельца, а не на изолированном стенде.
  • Переносимости секунд на прод. Локальные времена — это времена ноутбука под нагрузкой владельца.

Что уже было закрыто

  • Поиск по документам проекта работает локально: своя единица rag/ на Python, индекс и эмбеддер на машине, без внешнего вызова.

    Закрыто раньше29.09.2026

    ADR 2026-09-29-1639 · ADR 2026-09-30-0957 · rag/

  • Десять контрольных вопросов и механика сравнения: вопросы, прогон и выставление оценок живут отдельно от приложения дня.

    Закрыто раньше04.10.2026

    ADR 2026-10-04-0735 · days/day22/eval/

  • Облачная сторона уже была измерена этими же вопросами: прогон дня 22 по проду лежит в репозитории с ответами и признаками.

    Закрыто раньше05.10.2026

    days/day22/public/eval.json · запись 2026-10-04-2242-day22-rag-modes.md

Пробел, который закрывает эта страница: ответ локальной моделью по локальному поиску не прогонялся ни разу, и сравнения двух сторон на одном наборе вопросов не было. Что поиск работает локально, было известно; что получается, когда и поиск, и генерация уходят на ноутбук, — нет.

По вопросам

Оценка — словом, не баллом: балл по десяти вопросам даёт ложную точность. Колонка «Поиск совпал» говорит, входит ли вопрос в вывод дня.

Читаю результаты прогона…

Стабильность: три вопроса, три ответа каждый

Обрыв ответа или недоступность локальной модели — результат замера, а не пропуск в нём: такой прогон остаётся в таблице со своим вердиктом.

Читаю результаты прогона…

Разбор по вопросам

У каждого вопроса — полный ответ каждой стороны, найденные фрагменты и слова судьи. Ответы не пересказаны: их можно прочитать и оспорить. У трёх вопросов стабильности показаны все три прогона.

Читаю результаты прогона…

    Задание дня

    День 28 «Локальная LLM + RAG»: индекс недели 6, retrieval локально, генерация — локальной моделью; сравнить ответы локальной и облачной модели; оценить качество, скорость, стабильность. Результат: RAG полностью локально.