NPS (Net Promoter Score)
Вчера посмотрел новое видео на канале Y Combinator, Consumer Startup Metrics. Метрики для B2C стартапов.
Две ключевые метрики:
- User Growth, % (рост продукта)
- NPS (довольные пользователи)
1. User Growth. Прирост числа пользователей в месяц. Считается хорошим ростом +15% месяц-к-месяцу. У нас в adam сейчас рост месяц к месяцу в диапазоне от +70% до +110% (если говорить про платных пользователей), но в первые месяцы, понятно, это ожидаемо итак.
2. NPS (Net Promoter Score). Вы наверняка встречали неоднократно опросы вида "Какая вероятность от 0 до 10, что вы порекомендуете наш сервис друзьям?". Вот это оно и есть. NPS крайне хорошо коррелирует с качеством продукта и, главное, с тем, как активно работает сарафанное радио.
NPS считается как разница в % между пользователями которые любят ваш продукт (и проголосовали 9 или 10 в озвученном опросе, их называют promoters) и теми, кого что-то серьезно не устраивает (проголосовали от 0 до 6 в опросе, их называют distractors). Довольные пользователи – это ваш коллективный Head of Marketing. Вообще, у любого крупного IT игрока органический трафик (новые пользователи привлечённые бесплатно) занимает 80% или больше, чем платный трафик.
Хорошим NPS считается +50 и выше.
У Tesla NPS, сколько бы вы думали? +97!
В adam на данный момент NPS в районе +24 (положительный, но ещё не на "вирусном" уровне). Судя по опросам, примерно 48% очень довольны ("loves"), 29% умеренно довольны ("likes") и ещё четверть пока неудовлетворены.
Очевидно, в следующие 2-3 месяца нужно сделать упор на том, чтобы желтых (нейтральных) из like превратить в love, перед тем как запускать полномасштабный маркетинг.
Ну и ключевой совет, который даётся в видео, keep it consistent – измерять NPS надо регулярно (например 1-2 раза в месяц) и в одной и той же форме (формат сбора сильно влияет на то, как люди голосуют, иначе риск попасть в ловушку, что вы сравниваете разные NPS).
P.S. А какие ключевые метрики у вас в продукте?
#adam
А если вы хотите сделать Богдану подарок на новый год, то лучший способ – это стать пользователем его AI стартапа, перейдя в t.me/adamgame_bot и применив промокод #ADAM2024 на скидку 24% 😎
(его достаточно отправить в бота сразу после онбординга; действует до 1 января включительно)
Наткнулся на старую заметку в Notion о том, что Я считаю своими сильными сторонами. Верхнеуровнево, список сводится к 3 пунктам: системность, эмпатия, любознательность.
Кто Меня знает какое-то время, что бы вы добавили или убрали и почему?
Читаю подобные посты и ловлю себя на мысли, что очень многие вещи 3 месяца назад были сделаны очень грамотно, когда мы запускали @adamgame_bot
Вообще искренне благодарен всем нашим первым платным пользователям (которых уже 90!) за их поддержку, терпение, вовлеченность. Это сильно мотивирует.
Но впереди у нас ещё очень длинный путь и нужно не терять темп.
Stay tuned.
Каждый день Я начинаю с персонального daily, который занимает 10 минут и во время которого Я планирую, что сделаю за день.
Для разбивки задач по приоритетам Я использую адаптированный MoSCoW фреймворк:
• Must Do: 1-2 Top-Goals (часто требуют deep work, поэтому день начинается с них), и срочные задачи (с дедлайном сегодня). Сюда закладываем 4-6 часов.
• Should Do: важные задачи, например те планы на неделю, которые не вошли сегодня в Must. Например, не-критичные баги или стратегия. Сюда ещё 2-4 часа.
• Could Do: разная nice-to-have косметика, не требующая большой концентрации. Это ставим на конец дня, если останется время и желание. Сюда на сдачу с барского плеча ещё пару часов.
• Won’t Do: сюда попадает разная неважная мелочь которую можно сделать за пару минут, либо could/should если их вытесняют задачи более высокого приоритета.
День считается успешным, если выполнены все Must. День считается супер успешным если ещё успел и все Should.
Все задачи оцениваются в начале дня и дублируются в календарь. Если что то занимает больше запланированного времени, то задачи более низкого приоритета служат буфером: так, Must вытесняет Should, Should вытесняет Could.
Самый сложный квест - придерживаться дисциплины не делать Should/Could, пока не сделаны Must (ведь наш мозг так любит между важным и срочным переключаться на понятное).
#LifeOps
Кстати, а кто-то пробовал в (полу-)автоматическом режиме нагенерить под каждый документ вопросы, ответы на которые можно найти в доке, и каждый вопрос положить в вектор, чтобы ссылались на один и тот же док? Либо может видел кто-то статью об этом?
HyQE
HyDE (Hypothetical Document Embeddings)
Звучит прямо как название босса Hades из God Of War 3 (с англ., Аид). В принципе, клыки которыми тот разбрасывался, цепляясь за души, вполне рифмуются с содержанием подхода. Не удивлюсь, если авторы те ещё геймеры и вдохновлялись игрой при написании статьи.
HyDE это приём из серии Advanced RAG techniques, который позволяет качественно повысить покрытие нашего ретривера (алгоритма поиска релевантного контекста из базы знаний), выцепляя тот контекст, который обычный RAG почему-то не выцепил. Как работает обычный RAG (Retrieval Augmented Generation), Я описывал в этом посте.
Идея в чём? При стандартном RAG в качестве "ответов" служат документы из базы знаний. В качестве "запросов" служат вопросы от пользователей. Есть гипотеза, что эмбеддинг вопроса и эмбеддинг ответа – несколько из разного семейства. По аналогии, ключи и значения в механизме внимания трансформеров – это разные вектора.
Вместо этого, в HyDE вместо поиска по запросу мы сначала генерируем "гипотетические ответы", т.е. что было бы написано в "гипотетическом документе, содержащем ответ" (какой он был бы по форме и что примерно в нём написано) – получаем его эмбеддинг и по нему ищем. Таким образом, мы будем считать близость уже не между эмбеддингом запроса и эмбеддингом ответа, а между эмбеддингами ответов. Для генерации гипотетического документа используем любимую LLM, например, для удешевления костов и ускорения, GPT-3.5.
Важно. Это может дать буст вашему RAG, а может и не дать. Так, ребята из OpenAI на DevDay говорят, что когда работали с одним из клиентов, им удалось повысить покрытие с 45% до 98% за счёт разных техник, однако в том конкретном случае HyDE (наравне с файн-тюном эмбеддингов документов) оказался не в числе модифицкаций, повышающих точность. No Free Lunch Theorem: не узнаете, пока не попробуете на своём конкретном кейсе.
Оригинальная статья: https://arxiv.org/abs/2212.10496
#LLMOps
3. Ensemble with choice shuffle. Здесь начинается уже специфика бенчмарков, где на выходе ожидается вариант ответа, выбранный из заранее определённого списка. Если это не кейс вашего приложения, вам эта часть будет бесполезна. Проблема: как показала практика, порядок вариантов, из которых нужно выбирать, статистзначимо смещает выбор варианта при перезапуске генерации много-много раз. Чтобы это обойти, перемешиваем варианты, например, 5 раз и выбираем самый популярный (что требует 5 вызовов, вместо 1, Я ещё не думал в сторону, можно ли оптимизировать косты промпта здесь с помощью Моего любимого магического параметра n, но да ладно).
Вот и весь Medprompt. Даёт какие-то мощные приросты в точности и обгоняет fine-tuned модель от Google, Med-PaLM 2.
Мне в юзкейсах достаточно few-shot kNN + CoT + ещё разной магии, у Меня нет заранее предопределённых вариантов, поэтому нам choice shuffle не актуален. Шаблоны промптов с картинки можно покурить здесь, там ничего сложного. За ссылочки и помощь в разборе спасибо Игорю (@seeallochnaya).
P.S. Поделитесь, а какие из этих техник вы применяете у себя в LLM-продуктах? Мне и другим будет интересно узнать.
#LLMOps
Квиз на проверку эмпатии
Значит, есть такой клип с Джилленхолом, “Time to Dance”: https://youtu.be/pt9wnawn7xQ?si=cZ3vUUsAIQbWkJ3M
Вопрос: Почему он убивал? Какую мотивацию закладывал режиссёр главному герою?
FITNESS AI
После Trial недели взял подписку на год. Понравилось. Это ровно то, о чем давно мечтал. UI/UX максимально вылизанные, сразу видно, сделано для людей. Это и не удивительно, стартап прошёл Y Combinator.
https://www.fitnessai.com
Core фича - адаптивные тренировки: приложение само понимает какие группы мышц ты давно не тренировал (но также можно выбрать желаемый сплит) и подбирает под них упражнения. Запоминает какие тебе не нравятся совсем (очень быстро и удобно заменить / убрать на другое), экстраполирует веса от похожих упражнений и многое другое.
Кто ходит в качалку – рекомендую, лучше не найдете.
10 ПОЖЕЛАНИЙ
Всё меняется, всё течёт. Ничего не остаётся на месте.
– Гераклит Эфесский
2023 год стал во многом для Меня трансформационным. Я научился более чутко слышать людей и дальше смотреть. Я пробую себя в новых ролях и смотрю на знакомые вещи под новым углом. Меняются компании, меняются инструменты и цели. Не меняемся только Я и Мои друзья, с которыми мы через всё это проходим. На 2024 год у Меня амбициозные планы, с собой он принесёт ещё больше вызовов, чем 2023ий, но на их рост Я смотрю как на число блинов на штанге: растёт вес – растут мышцы.
В марте Я завёл этот блог, чтобы делиться своим опытом, боевыми заметками и праздными наблюдениями. Человек животное социальное, да у Меня не самая скучная жизнь, почему бы тем, что попробовал или узнал, не поделиться с другим, верно? Мне несложно, другим полезно. Тем более что личный блог даёт много побочных плюшек вроде нетворкинга и личного бренда, что ценные ресурсы.
Чтобы мы вместе с вами бодрее вошли в 2024 год, набросал 10 случайных уроков, которые Я или усвоил, или повторил за 2023.
Напишите в комментариях, какие 1-2 важных урока вы извлекли за 2023, а также чего вам больше хотелось бы видеть в этом блоге в 2024?
С наступающим всех 😈
90-DAY PLAN
Уделил 10 минут (остальные 20 потратил на саморазвитие), подготовил шаблон в Miro для квартального планирования, который любой из вас может взять на вооружение, наверняка кому-то пригодится. В углу написал легенду, в комментарии задавайте вопросы, если что-то непонятно – дополню.
https://miro.com/app/board/uXjVODg5odE=/?moveToWidget=3458764574208194942&cot=14
Ключевые идеи:
- разбивка по 3-4-5 направлениям (например, сферам жизни или проектам; про цветовую кодировку рассказывал здесь)
- в каждом направлении одна-две цели на квартал
- для каждой цели есть какие-то промежуточные майлстоуны (которые могут играть роль целей на месяц или на неделю)
- сплошная обводка для достигнутых целей, пунктиром для тех что In-Progress, полупрозрачные – те, что сейчас вне фокуса внимания (будущие цели) + граница того, что сейчас в фокусе
Вероятно, вы будете просматривать и актуализировать этот план раз в неделю, во время еженедельного планирования. Думаю, подходит как для персональных целей, так и для планирования развития продукта или компании.
А как вы организуете планы на квартал или на год?
#LifeOps
Фреймворк понравился. Матчится с тем как Я о целях думаю в голове. Продлеваем ещё на квартал.
Читать полностью…Бытовой лайфхак для deep work. Всегда в одном из экранов открыты Todoist + Session (задачи + трекер времени).
Как писал ранее, когда ведёшь лог того, что ты делаешь, это проясняет, а что ты сейчас сделал или какой шаг планируешь сделать; помогает быстрее вовлечься (войти в поток), а также не отвлекаться на ерунду и видеть прогресс того, что уже сделал и попробовал. Когда видишь на глазах растущий лог, это само по себе стимулирует не прерывать "комбо".
#LifeOps
Спасибо Борису, да, что-то такое есть в LangChain, жаль без статьи с метриками и экспериментами:
https://python.langchain.com/docs/modules/data_connection/retrievers/multi_vector#hypothetical-queries
"HyDE пытается зацепиться за убегающий от него релевантный контекст с помощью двух гипотетических документов, а тот всё равно убегает"
Читать полностью…Недавно на Симуляторе ML мы презентовали чат-бота Аду, который помогает нашей команде сопровождения. А еще мы разрабатываем Co-Author — сервис, который помогает команде генерировать новые задачи. Быстро реализовать столько идей команде позволяет навык работы с LLM (т.е. большими языковыми моделями, подобными ChatGPT). А хотите расскажем про LLM подробнее?
21 декабря в 18:00 (по Москве) пройдёт вебинар, где Богдан Печёнкин, один из авторов Симулятора ML-инженера, поделится секретами построения успешного LLM-продукта.
В программе:
● Паттерны проектирования и построения таких систем (всё проще, чем кажется!);
● Разбор кейсов, где языковые модели ускорят, а где наоборот помешают разработке продукта;
● Навыки, необходимые для работы с LLM.
[Регистрация]
MEDPROMPT
Как выжать максимум из LLM до того как заводить fine-tuning (который дорогой, долгий и сложный)? Ответ: продвинутый prompt engineering. Есть, значит, такой Medprompt, который со страшной силой бьёт бенчмарки на каких-либо узких доменах за счёт довольно простых приёмов.
Нам понадобятся 3 ингредиента:
1. kNN few-shot
2. Chain-of-Thought (CoT)
3. Ensemble choice shuffle
1. kNN few-shot: LLM сильно лучше понимают, что от них хотят, когда даёшь пару примеров (прямо как и люди). kNN few-shot практически тоже самое, что RAG (Retrieval Augmented Generation), с той лишь разницей, что если в RAG мы векторизуем сырую базу знаний (набор документов, разбитых на кусочки), то во few-shot kNN мы векторизуем запросы пар "запрос - ответ". Конкретно в Medprompt по запросу достаём "запрос - рассуждение (CoT) - ответ" (рассуждение и ответ могут быть как прописаны экспертом, так и сгенерированы LLM, а затем провалидированные экспертом).
Вы можете использовать в любом своём приложении few-shot как статичный (руками прописанный в промте), так и динамический (в kNN режиме, когда по запросу пользователя из векторной базы данных достаются похожие примеры запросов с их правильными ответами) – и это гарантированно повысит качество.
2. Chain-of-thought (CoT): цепочка рассуждений – по-простому, мы просто говорим модели подумать перед выбором финального ответа. Например, Before crafting a reply, describe your observations in 3 sentences with clarifying strategy we should choose in <draft></draft> tags
. Вариаций как организовать CoT масса. Главное, что это позволяет модели порефлексировать, набросать черновые варианты или выделить, на что обратить внимание, – до того как давать ответ.
CoT также значимо бустит качество генерации практически в любом приложении, переводя модель из режима "ответа сходу" на "обдуманное решение. Ведёт к дополнительным костам и секундам на "токены рассуждения", которые вы вероятно не будете показывать пользователю, но с GPT-4-Turbo цена и время стали приятнее.
#LLMOps
ЦИКЛ СНА
До знакомства с Miro для подобных персональных (а затем рабочих) диаграмм Я использовал OmniGraffle (в отличие от Miro, он поддерживает Pie Chart и сектора круга из коробки).
Вообще, инструменты для visual communication, в том числе для communication с самим собой – как будто одна из Моих сильных (хоть и побочных) сторон. Видимо side effect того что Я всё детство рисовал.
Конкретно этот вид диаграмм для режима дня, где по кругу отмеряется 24 часа, и ты выделяешь, где сон, работа, тренировки – Я подобрал и активно эксплуатировал в студенческие годы, когда (как думаю, и многие из вас) баловался с полифазным сном. Лично у Меня локально он не завёлся и пробовать опять не планирую.
Но, чисто из любопытства, кто из вас тоже пробовал? Что пробовали? Какие успехи? Какие извлекли уроки?
VISUAL INTENT
Сделал прослойку с visual intent classification. Теперь интерфейс взаимодействия с Моим AI-агентом ещё проще и интуитивнее. Раньше пользователю нужно было писать подпись к картинке либо на что-то кликать, чтобы сервис понял, что ему нужно, какую OCR/visual логику подтянуть под капотом. Теперь не нужно.
Где такой зверь встречается? Например, в приложении Yandex, где одна и та же камера умеет и QR сканировать, и товар распознает, и текст переведёт, и уравнение решит.
С GPT-4V это выглядит ровно также как простая классификация интента с той лишь разницей, что в промпт добавляем картинку (для экономии токенов, в низком разрешении – в высоком она нужна уже в специализированной обработке).
Удобно 😈
#LLMOps
Книга с очень здоровыми убеждениями и принципами на тему:
https://readmake.com/
Стартапы автора:
photoai.com ($75K MRR)
interiorai.com ($43K MRR)
remoteok.com ($46K/m)
nomadlist.com ($37K/m)