AI на дровах 🪵
237 subscribers
77 photos
19 videos
1 file
131 links
Привет! Меня зовут Семён, я работаю в сфере ML и аналитики данных, пишу в блог nerdit.ru статьи о своем опыте и том, что может пригодиться начинающим в начале их пути изучения больших данных.

👾HSE ML Unit Head⚡️
❤️Litres DS Team
Download Telegram
AI на дровах 🪵
Как мы будем взаимодействовать с LLM в этом году? Как вы знаете, 2025 год объявлен годом LLM-агентов. И мне стало интересно: как LLM (и в какой степени) может самостоятельно справляться со сложными задачами, если у неё есть возможность использовать сторонние…
Самое интересное!

Буквально вчера я задался вопросом: а как сделать так, чтобы LLM сама могла решать поставленные задачи, даже если у неё нет нужных инструментов?

И знаете что? Это тоже возможно! 🤯

🔄 Как это работает?

Через агента, который способен... создавать новых агентов!

Представьте:

- Пользователь ставит задачу, для которой у системы ещё нет подходящего инструмента.
- Агент анализирует задачу и пишет код нового агента, который способен её решить.
- Система автоматически регистрирует и запускает созданный агент, а затем выполняет задачу.

Это уже напоминает самовоспроизводимую систему, где LLM может не только решать задачи, но и динамически расширять свои возможности.

🤖 Пример:

Пользователь: «Подсчитай, сколько уникальных слов в этом тексте.»
Система: Понимает, что такого агента нет → пишет код нового агента для подсчёта слов → регистрирует его → вызывает → возвращает результат.

И тут возникают новые вопросы:
Что, если таким способом LLM сможет самообучаться и улучшать себя?
Где граница между автономным решением задач и полной автоматизацией?

Похоже год будет интересным ☃️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👨‍💻1
This media is not supported in your browser
VIEW IN TELEGRAM
В этот последний праздничный день решил привнести что-то новое в свои рабочие будни (уже завтра 🙃)

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

Давно хотел подойти к Obsidian, но создание и тегирование заметок там кажется чем-то трудоёмким.

Хочется, чтобы вжух — и готово! 😂

И вот, в качестве эксперимента над собой, решил создать бота, который будет всё делать за меня: записывать, автотегировать и сохранять заметки, чтобы потом быстро просматривать их в Obsidian.

Посмотрим, что из этого выйдет!

На видео пример работы. Пока только базовый функционал, но если мне зайдёт, буду расширять и поделюсь с вами 😎

Всем хорошего начала трудовых будней 🚀

#Obsidian #LLM #Bots
🔥6
Newwhitepaper_Agents2.pdf
4.1 MB
Google выпустил базовый документ, посвященный AI-агентам  

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

#ai #google #agents
🔥3
Эксперты из Центра непрерывного образования ФКН ВШЭ, магистратуры «Искусственный интеллект» и «Яндекс Образования» разработали и опубликовали бесплатный хендбук по математике для анализа данных. Это седьмое онлайн-издание из серии цифровых учебников, посвященных конкретным IT-направлениям для самостоятельного изучения.

Хендбуки — это новый формат онлайн-учебников, которые состоят из нескольких глав для самостоятельного изучения и доступны всем на платформе «Яндекс Образования». Новый хендбук по математике пригодится тем, кто хочет разобраться в математической стороне работы алгоритмов машинного и глубинного обучения. Он подойдет как новичкам в высшей математике, так и тем, кто уже знаком с базовыми концепциями и хочет углубить свои знания.

#вшэ #аналитика #yandex
Друзья, я не пропал!

Последнее время работа меня плотно засосала, и писать сюда удаётся не так часто, как хотелось бы. Но! Это не значит, что мне нечем с вами поделиться. Наоборот — за этот период накопилось столько интересных инсайтов, что скоро будем разбирать их вместе!

Спасибо, что остаетесь здесь. Скоро вернусь с крутым контентом! 🚀🔥
👍6
Реранкер, или кто такие би-энкодер и кросс-энкодер? 🤔🚀

Решил не откладывать в долгий ящик новую информацию, которой готов поделиться. Итак, первый инсайт за последнее время! Сейчас плотно занимаюсь задачей создания и поиска по базе знаний, и — с пылу с жару — хочу рассказать про реранкер и как он помогает в задачах RAG (Retrieval-Augmented Generation).

А теперь обо всём по порядку…

Знали ли вы, что в мире поиска информации есть два таинственных «персонажа», которые помогают быстро докопаться до сути? Представляем:

🤝 Би-энкодер: Спид-дэйтинг с текстами

Представьте, что ваш запрос и документы ходят на быстрые свидания. Встреча длится пару секунд (прогнали текст через модель) — бац, у каждого свой вектор-профиль!

- Би-энкодер отдельно «снимает мерки» (эмбеддинги) запроса и документов.
- Затем они сравниваются по «уровню совместимости» (косинусная близость, евклидово расстояние — кому что нравится).
- Результат: модель мгновенно предлагает список возможных «кандидатов», которые могут вам подойти.

Шутка дня: «Разошлись как-то би-энкодер с документом» — очень быстро, но всё же успели узнать друг о друге достаточно, чтобы подойти или нет. 😎


🤔 Кросс-энкодер: Строгий финальный судья

Когда из толпы претендентов отобраны «возможные фавориты», в дело вступает кросс-энкодер — такой себе строгий критик с лупой:

- Он одновременно читает и запрос, и документ, высматривает малейшие детали и выдаёт оценку релевантности.
- Работает медленнее, зато справедливее — идеально подходит для «реранкинга» и расстановки финальных приоритетов. 🤓

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


Как помогает в задачах RAG?

RAG (Retrieval-Augmented Generation) — подход, когда система (например, ChatGPT) берёт контекст из векторной базы и на его основе генерирует ответ. Чем точнее «подтягивается» этот контекст, тем более релевантной получается генерация.

- Быстрый отбор: Би-энкодер выуживает из большой базы подходящие документы — своего рода «черновой» отбор.
- Снайперская точность: Кросс-энкодер дорабатывает список, убирая нерелевантные фрагменты и расставляя всё по местам.
- Итог: Генеративная модель получает наиболее подходящие данные и выдаёт более «умный» ответ.

Если вы хотите, чтобы ваша векторная база знаний работала, как швейцарские часы, и при этом молниеносно и точно отвечала на запросы (а особенно если используете RAG), то комбинация би-энкодера для быстрого поиска и кросс-энкодера для реранкинга — ваш лучший выбор!

А если у вас есть своя метафора про би- и кросс-энкодеры — делитесь в комментах!

#Нейросети #NLP #ML #DataScience #ВекторныеБазы #БиЭнкодер #КроссЭнкодер #Поиск #Реранкер #AI #DeepLearning #SemanticSearch
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2👌2
🔥 Автоматизация создания базы знаний с помощью LLM

Привет, друзья! Сегодня расскажу, как мы автоматизировали процесс создания базы знаний, интегрировав генерацию контента с помощью LLM. Основная идея – взять данные из Confluence, дополнить их сгенерированными описаниями и сохранить в виде структурированных записей. Ниже описаны ключевые моменты нашего подхода:

1. Определение структуры данных

Мы задаём структуру записи базы знаний с помощью TypedDict, чтобы гарантировать единообразие данных. Пример:
from typing import TypedDict

class KnowledgeBaseEntry(TypedDict):
ticket_key: str
title: str
question: str # Пользовательский запрос, сформулированный по содержанию
content: str
instruction_text: str # Подробная инструкция
keywords: str
usefulness_score: float # Оценка полезности (от 0 до 1)
components: str # Компонент, о котором идёт речь
page_link: str # Ссылка на документ в Confluence
updated: str # Дата обновления (например, "YYYY-MM-DD")


2. Генерация краткого описания (summary)

Используем LLM для создания краткого описания каждой страницы. Промт формируется с учетом заголовка, контента и контекста родительской страницы:
def generate_summary_with_llm(title: str, content: str, parent_summary: str = "") -> str:
prompt = f"""
У нас есть страница (или чанк) из Confluence.

- Заголовок: "{title}"
- Содержание (HTML или Markdown):
{content}

Ниже приводится краткое описание родительской страницы (для контекста):
{parent_summary}

Задача: сделай короткое (1-2 предложения) summary для этой страницы,
дополняющее родительский контекст (если нужно).
Верни ТОЛЬКО текст summary.
"""
# Отправляем запрос к LLM и возвращаем сгенерированный текст


Ключевой момент – учитывать родительский контекст, чтобы summary было максимально информативным.

3. Генерация недостающих полей

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

def generate_missing_fields_with_llm(
title: str,
content: str,
components: str,
parent_summary: str = ""
) -> dict:
prompt = f"""
У нас есть информация о статье (или инструкции) из Confluence.
- Заголовок: "{title}"
- Содержание (HTML/Markdown):
{content}

Краткое описание родительской страницы (для контекста):
{parent_summary}

Прошу сгенерировать JSON со следующими полями:

1) "question":
- Формулировка в стиле реального пользовательского запроса,
- Вопрос должен быть сформулирован с учётом компонента "{components}".

2) "instruction_text":
- Подробное и структурированное описание (или пошаговая инструкция).

3) "keywords":
- Ключевые слова (не более 5-7), через запятую, отражающие основную суть.
- Последним элементом добавь {components}.

4) "usefulness_score":
- Число от 0 до 1 (1 — максимально полезно).

5) "updated":
- Реальная дата, если указана, иначе "неизвестно".

Ответ верни в формате JSON без лишнего текста.
"""
# Выполняем запрос к LLM, парсим ответ и возвращаем словарь с полями


В этом промте мы просим модель сгенерировать нужные данные в виде корректного JSON, что упрощает последующую обработку.

4. Рекурсивное получение родительского summary
👍1
Чтобы добавить контекст, мы рекурсивно получаем summary для родительских страниц:
def get_summary(page_id: str, visited: set = None) -> str:
if not page_id:
return ""
if visited is None:
visited = set()
if page_id in visited:
return ""
visited.add(page_id)
if page_id not in data_map:
return ""
if page_id in summary_map:
return summary_map[page_id]

page_data = data_map[page_id]
payload = page_data.get("payload", {})
parent_id = payload.get("parent_id", "")
parent_summary = get_summary(parent_id, visited)

title = payload.get("title", "")
content = payload.get("content", "")
summary_text = generate_summary_with_llm(title, content, parent_summary)

summary_map[page_id] = summary_text
return summary_text


5. Обработка JSON-файлов и сбор итоговой базы

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

Такой подход позволяет автоматизировать создание базы знаний и значительно ускорить процесс документирования инструкций и статей. Если у вас есть вопросы – пишите в комментариях!
🤔 Чем это круче классического подхода при формировании базы в RAG?

- LLM-based подход: Не нужно вручную парсить и аннотировать документы — LLM сделает большую часть работы.

- Богатый контекст: Благодаря рекурсивному получению summary мы получаем не просто набор статей, а целую систему, где каждая запись знает, откуда она пришла и как вписывается в общую картину.

- Готовые запросы: Подготовленные вопросы сразу «знают», что может быть интересно пользователю, что помогает лучше организовать поиск.

- Гибкость: Изменились требования? Легко перенастроить промты, и база данных адаптируется под новые условия.

В общем, я увидел, что интеграция LLM не только ускоряет процесс создания базы знаний, но и делает её более интеллектуальной, релевантной и гибкой по сравнению с классическим RAG, где всё сводится к извлечению эмбеддингов и статичному анализу текста.

Надеюсь, мой опыт будет вам полезен 😎
🚀 Сегодня я хочу рассказать вам про Structured Outputs — очень удобную вещь, которая здорово облегчает работу с искусственным интеллектом.

Structured Outputs — это подход, когда модель искусственного интеллекта выдает результаты не просто в виде текста или чисел, а в виде чётко организованных структур данных: JSON, XML, таблицы или даже графы.

Почему это важно лично для меня? Потому что это делает работу с ИИ-проектами намного проще. Например, вместо того, чтобы вручную разбирать текстовые ответы модели, я сразу получаю готовые данные, которые легко интегрировать в другие приложения.

Например, если я спрашиваю у модели:
«Какой прогноз погоды в Москве на завтра?»

То она возвращает мне вот такой структурированный ответ:
{
"intent": "weather_forecast",
"entities": {
"location": "Москва",
"date": "2025-03-08"
}
}


Теперь мне не нужно гадать, что именно имелось в виду — информация чётко структурирована и готова к использованию.

Кроме того, Structured Outputs значительно ускоряют аналитику и отчётность. Данные уже разбиты по категориям и готовы к агрегации и визуализации.

Если вы ещё не используете Structured Outputs в своих AI-проектах — советую попробовать.
Это сэкономит вам массу времени и нервов!

#StructuredOutputs #AI #МашинноеОбучение #Автоматизация #AI #JSON #API #DataScience #Интеграция #Технологии
Привет, друзья! Хочу поделиться с вами новыми возможностями @summ_youtube_bot бота 🚀.

Теперь бот умеет преобразовывать YouTube видео в адаптивные образовательные материалы с учетом современных педагогических принципов 🎓.

Вот что нового:

Образовательное видео.
Бот создает структурированные учебные материалы, включающие:

- Учебные цели 📌 — что вы узнаете из материала
- Ключевые концепции 📚 — основные идеи с подробными объяснениями
- Концептуальная карта 🗺 — визуальное представление связей между идеями
- Подробный разбор 🔍 — организованное объяснение содержания
- Резюме 📝 — краткий обзор важнейших моментов
- Применение ⚙️ — как использовать знания на практике
- Самооценка — вопросы для проверки понимания

Подписывайтесь и используйте бота: https://t.iss.one/summ_youtube_bot
🔥2
🤖 Давно не делился новыми статьями в блоге – пора исправляться! 📢

За последнее время появилось много полезных материалов для всех, кто интересуется машинным обучением и анализом данных.
Делюсь:

📌 Что такое Structured Outputs?
Как модели машинного обучения могут выдавать не просто числа, а сложные структурированные данные? Разбираем этот важный концепт!
🔗 Читать →

📌 Pandas за 10 минут
Если вам нужно быстро освежить в памяти основы Pandas или освоить его с нуля – этот краткий гайд поможет вам разобраться!
🔗 Читать →

📌 Подготовка к собеседованию на позицию ML-инженера
Какие темы стоит повторить? Какие задачи вас могут ждать?
Вопросы и ответы по теме.
🔗 Читать →

📌 SMOTE: объяснение алгоритма с примерами на Python
Боремся с несбалансированными данными в ML: разбираем алгоритм SMOTE и показываем, как применять его на практике.
🔗 Читать →

📚 Надеюсь, эти статьи окажутся полезными!
Пишите, какие темы вас интересуют – будем разбирать их в следующих статьях. 🚀
🤖 LLM-агенты: хайп или новая реальность? 📦

В этом году вокруг LLM-агентов особенно много хайпа. Все говорят, что вот-вот автономные агенты на базе GPT и других моделей заменят целые команды людей. Но на самом деле мы пока далеки от полноценного «коробочного» решения, которое можно просто поставить и забыть.

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

Основная сложность в том, что любой агент, даже на самом мощном LLM, всё ещё требует настройки, понимания контекста и непрерывного контроля. Чем сложнее и многограннее задача, тем выше вероятность ошибок и непредсказуемого поведения.

Поэтому мой прогноз: ближайший год-два мы будем активно экспериментировать с агентами, выявлять их ограничения и накапливать опыт. Но до массового появления готовых «агентов в коробке», которые заменят сотрудников на сложных задачах, ещё далеко.

А что думаете вы? 🚀 Верите ли в скорое появление автономных коробочных решений или считаете, что это очередной технологический хайп без реального продолжения?
👍3
А ещё тут ChatGPT обновился и версия 4.5 теперь вот так может 👍:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
💡 Ян Лекун: AGI — это миф. Встречайте AMI

Ян Лекун — лауреат премии Тьюринга, один из отцов глубокого обучения и главный ИИ-учёный в Meta — считает, что термин AGI (Artificial General Intelligence) пора отправить в архив.

🧠 Почему? AGI предполагает создание интеллекта, который справляется с любыми задачами не хуже (или лучше) человека. Но Лекун указывает: человеческий интеллект сам по себе вовсе не "general". Он состоит из набора специализированных механизмов, наточенных эволюцией под конкретные типы задач. Мы не универсальны — мы просто хорошо приспособлены к определённому контексту.

⚙️ Вместо AGI, Лекун и его команда продвигают другой термин — AMI: Advanced Machine Intelligence. Это направление сфокусировано на создании систем, которые будут по-своему интеллектуальны — способные к обучению, планированию, восприятию и действию — но не обязаны повторять или копировать человеческий ум.

📌 Смысл в том, чтобы создавать интеллект, который дополняет человека, а не имитирует его.

🤖 Возможно, AMI — это и есть реальное будущее ИИ, без мифов и футуристических фантомов.
👍3
Бесплатный дизайн-проект 👌

Продолжаю исследовать возможности генерации картинок через llm. В этот раз загрузил фото участка и попросил GPT4.5 придумать вариант благоустройства.

Дальше было предложено нарисовать план схему и подготовить список необходимых материалов.

В какое интересное время живем, не правда ли? ☀️
🔥8👍41
Тут в соседнем канале запостили про https://tv.garden решил поделиться, сам тв не смотрю, но тут исследовательский интерес 🙃

Можно "попутешествовать" по телеканалам разных (похоже всех) стран и посмотреть, что сейчас показывают, например в Индии 🇮🇳
👍2🔥1
Почти всё последнее время варюсь в задаче мультиклассовой классификации тестовых данных.

Хочу поделиться инсайтом
(хотя, может, для кого-то это и очевидно).

🔑 Самое важное в любой ML-задаче — это данные. Чем лучше вы подготовите исходный датасет, тем лучше и стабильнее будет обучаться модель. Очистка — это только первый шаг. Тут важно учитывать особенности самой модели: cased/uncased, максимальная длина токенов, распределение классов и прочие нюансы.

Но один из самых недооценённых этапов — оптимизация датасета. Особенно, если у вас не 10к строк, а, скажем, как у меня — почти 200к.

💡 Что я сделал: применил кластеризацию KMeans на эмбеддингах, чтобы "сжать" датасет и отобрать наиболее репрезентативные примеры. Конкретно:

- Разбил данные на кластеры по эмбеддингам;

- Для каждого класса взял по 5000 наиболее типичных примеров (ближайших к центру кластера);

- Ввёл score threshold = 0.5, чтобы отсеять шумные и нетипичные точки.

📈 В итоге получил компактный, чистый и сбалансированный датасет, который реально помог модели лучше обобщать и ускорил обучение.

Если кто-то использует похожие подходы — делитесь, интересно будет сравнить идеи 👇
👍2