Как устроен пайплайн
Отзывы из RuStore превращаются в сигналы, сигналы — в живой каталог потребностей. Каталог никто не задаёт руками: темы выделяются из данных, дубли объединяются, и у каждой потребности постоянная идентичность — поэтому ряды по месяцам сравнимы между собой, а любое число раскрывается до конкретных цитат.
Жизнь одного сигнала
Отзыв от 14 июля собирается в субботу 18-го → извлечение даёт сигнал про вход по отпечатку → классификация относит его к теме «Вход по биометрии» → на графике темы +1 в точке «июль», у банка-владельца. Если бы такой темы не было — сигнал ждал бы в «Прочем», пока похожих не наберётся 15, и вошёл бы в новую тему — тоже задним числом в свой июль.
Сбор отзывов из RuStore
еженедельно + кнопкаИзвлечение сигналов
LLM · deepseek/deepseek-v4-flash-0731→ jtbd: «Когда вхожу в приложение, я хочу входить по отпечатку, чтобы не вводить пароль каждый раз» · quote: «не могу войти по отпечатку, каждый раз пароль» · type: боль
Векторизация
Классификация: сигнал → потребность
LLM · deepseek/deepseek-v4-flash-0731Выделение новых потребностей из «Прочего»
LLM · deepseek/deepseek-v4-flash-0731Так каталог и появился: на холодном старте весь корпус лежал в «Прочем», темы выделялись волнами. Никто не задавал список руками.
Объединение дублей
LLM ×2 · deepseek/deepseek-v4-flash-0731 ежемесячно + кнопкаЕженедельно — по понедельникам в 05:00 0 5 * * 1
Свежие отзывы → сигналы → векторы → раскладка по темам, остаток в «Прочее», из накопившихся кластеров выделяются новые потребности. Каталог живой на недельном такте: новая тема недели появится, как только наберёт 15 похожих сигналов.
Ежемесячно — 1-го числа каждого месяца в 06:00 0 6 1 * *
Гигиена: объединение дублей с подтверждением по цитатам, выделение новых тем, возврат сигналов из «Прочего», контрольная классификация. Исправляет накопившийся дрейф, не трогая идентичность тем.
Чего здесь нет
Перекластеризации корпуса, предрасчитанных отчётов, снапшотов. Ряды считаются на лету из назначений; месяц берётся из даты отзыва, так что каждый сигнал попадает в свой календарный месяц независимо от того, когда его обработали.
Параметры
| параметр | значение | смысл |
|---|---|---|
| FBM_WINDOW_START | 2025-01-01 | отзывы старше не обрабатываются |
| FBM_CLASSIFY_TOPK | 8 | тем-кандидатов на сигнал при классификации |
| FBM_REG_BIRTH_COS / _MIN | 0.75 / 15 | плотность и размер кластера для новой темы |
| FBM_REG_BIRTH_MAX_COS | 0.90 | потолок ужесточения при уплотнении разнородного кластера |
| FBM_REG_BIRTH_CAP_FRAC | 0.02 | кластер крупнее этой доли «Прочего» не оценивается по выборке, а уплотняется |
| FBM_REG_MERGE_COS | 0.80 | близость центроидов — кандидаты на объединение |
| FBM_REG_RESCUE_COS | 0.60 | возврат из «Прочего» на переклассификацию |
Модели по стадиям меняются на «Настройках», параметры — в .env. Все решения LLM записываются в журнал с причинами — журнал на вкладке «Пайплайн».
Что заказывать для внутренней ручки LLM (контур банка, TODO-0001) на сопоставимом объёме сырья. Цифры — факт из этой базы, reasoning везде выключен; токенизатор другой модели ±20%.
Холодный старт — разово
Корпус 237К сырых отзывов (окно с 2025-01-01). Квота на месяц запуска с запасом ×1.5: 240 Мток.
Онгоинг — в месяц
Приток ~9.5К отзывов/мес. Квота с запасом (включая добавление нового банка): 11–18 Мток/мес.
Потоки
Заказывать 12–16 параллельных потоков: холодный старт ≈ 21 ч, недельный контур ≈ 15 мин (на 12 потоках). 6 потоков растягивают старт до ≈41 ч, 24 дают ≈10 ч — дальше не масштабируется.
Как посчитано: удельные расходы по стадиям
| стадия | объём | вход, Мток | выход, Мток | удельно (in / out) |
|---|---|---|---|---|
| извлечение сигналов (JTBD) | 136 878 отзывов | 17.0 | 15.7 | 124 / 114 ток/отзыв |
| классификация | 161 616 сигналов | 120.1 | 3.7 | 743 / 23 ток/сигнал |
| обслуживание каталога | — | 0.9 | 0.2 | ≈0.1 Мток/прогон |
Итого ≈6.6e+02 Мток на 1000 сырых отзывов. До извлечения доходит ~58% сырья (фильтр длины), ~0.6 сигнала на извлечённый отзыв; на холодном старте каждый сигнал классифицируется в среднем 1.9 раза (каскад рождения каталога) — основной расход именно здесь. Потоки: генерация ~30 ток/с, префилл ~1000 ток/с, ~3 с обвязки на вызов — сходится с замером (12 потоков ≈ 7К отзывов за ~40 мин). Векторизация LLM-токенов не тратит (локальная эмбеддинг-модель; в контуре нужна GPU или эмбеддинг-ручка). Если внутренняя ручка — reasoning-модель без выключателя, +50–100% к выходу.