Как стать автором
Обновить
14
0

Пользователь

Отправить сообщение

Добавление собственных данных в LLM с помощью RAG

Уровень сложностиСредний
Время на прочтение28 мин
Количество просмотров31K

Этот материал посвящён тому, как добавлять собственные данные в предварительно обученные LLM (Large Language Model, большая языковая модель) с применением подхода, основанного на промптах, который называется RAG (Retrieval‑Augmented Generation, генерация ответа с использованием результатов поиска).

Большие языковые модели знают о мире многое, но не всё. Так как обучение таких моделей занимает много времени, данные, использованные в последнем сеансе их обучения, могут оказаться достаточно старыми. И хотя LLM знакомы с общеизвестными фактами, сведения о которых имеются в интернете, они ничего не знают о ваших собственных данных. А это — часто именно те данные, которые нужны в вашем приложении, основанном на технологиях искусственного интеллекта. Поэтому неудивительно то, что уже довольно давно и учёные, и разработчики ИИ‑систем уделяют серьёзное внимание вопросу расширения LLM новыми данными.

До наступления эры LLM модели часто дополняли новыми данными, просто проводя их дообучение. Но теперь, когда используемые модели стали гораздо масштабнее, когда обучать их стали на гораздо больших объёмах данных, дообучение моделей подходит лишь для совсем немногих сценариев их использования. Дообучение особенно хорошо подходит для тех случаев, когда нужно сделать так, чтобы модель взаимодействовала бы с пользователем, используя стиль и тональность высказываний, отличающиеся от изначальных. Один из отличных примеров успешного применения дообучения — это когда компания OpenAI доработала свои старые модели GPT-3.5, превратив их в модели GPT-3.5-turbo (ChatGPT). Первая группа моделей была нацелена на завершение предложений, а вторая — на общение с пользователем в чате. Если модели, завершающей предложения, передавали промпт наподобие «Можешь рассказать мне о палатках для холодной погоды», она могла выдать ответ, расширяющий этот промпт: «и о любом другом походном снаряжении для холодной погоды?». А модель, ориентированная на общение в чате, отреагировала бы на подобный промпт чем‑то вроде такого ответа: «Конечно! Они придуманы так, чтобы выдерживать низкие температуры, сильный ветер и снег благодаря…». В данном случае цель компании OpenAI была не в том, чтобы расширить информацию, доступную модели, а в том, чтобы изменить способ её общения с пользователями. В таких случаях дообучение способно буквально творить чудеса!

Читать далее
Всего голосов 22: ↑22 и ↓0+22
Комментарии1

Кто такие LLM-агенты и что они умеют?

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров34K

В последнее время большие языковые модели (Large Language Models, LLM) стали невероятно популярными — кажется, их обсуждают везде, от школьных коридоров до Сената США. Сфера LLM растёт бурными темпами, привлекая внимание не только специалистов в области машинного обучения, но и обычных пользователей. Кто-то высказывает массу опасений насчет их дальнейшего развития, а кто-то и вовсе предлагает бомбить дата-центры — и даже в Белом Доме обсуждают будущее моделей. Но неужели текстом можно кому-то навредить? А что если такая модель приобрела бы агентность, смогла создать себе физическую оболочку и полностью ей управлять? Ну, это какая-то фантастика из (не)далёкого будущего, а про агентов нашего времени я расскажу в этой статье. И не переживайте — знание машинного обучения вам не понадобится!

Читать далее
Всего голосов 23: ↑23 и ↓0+23
Комментарии13

DDD в golang. Превозмогая трудности

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров11K

В последнее время достаточно много выступлений, посвященных реализации подходов Domain Driven Design(DDD) в golang.

Я не буду останавливаться на value object, они в golang хорошо реализуются с помощью type defintions. А разберу работу с изменением аггрегатов.

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

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии35

Как мы обучили нейросеть создавать «разумные» протоколы совещаний

Время на прочтение8 мин
Количество просмотров9.2K

Применение искусственного интеллекта в окружающей нас действительности стремительно растет — международная консалтинговая компания McKinsey подсчитала, что среднее количество возможностей ИИ, используемых в организациях, удвоилась за последние четыре года. Занимаясь автоматизацией бизнес‑процессов, мы также начали исследования в этой области для упрощения и ускорения решения корпоративных задач. Мы уже писали ранее о первом опыте работы над автоматической генерацией протоколов совещаний. А в данной статье расскажем, как применили нейросетевые технологии для абстрактивной суммаризации, требующей минимальной доработки человеком.

Читать далее
Всего голосов 5: ↑3 и ↓2+2
Комментарии5

Эра ИИ и генеративного дизайна в интерфейсах. Что нас ждёт?

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.8K

Всем привет, с вами Ростислав — продуктовый дизайнер в Домклике. Сегодня хочу поднять довольно важную тему про ИИ и генеративный дизайн. И про то, как они повлияют на индустрию дизайна цифровых продуктов в ближайшем будущем.

Генеративный дизайн (англ. Generative Design, далее GD), или порождающий дизайн, — подход к проектированию и дизайну цифрового или физического продукта, при котором человек делегирует часть процессов компьютерным технологиям и платформам.

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

Читать далее
Всего голосов 24: ↑23 и ↓1+26
Комментарии2

Революция от OpenAI — полный обзор: что означают последние анонсы для продуктовой разработки

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров24K

Неделю назад я получил уведомление о начале трансляции первой разработческой конференции от OpenAI. Было неудобно смотреть эфир живьём, так что я уложил детей спать, и ночью, заварив себе какао, с предвкушением открыл YouTube.

Конечно, я к тому времени не выдержал и посмотрел краткие описания анонсов, так что был готов к тому, что увижу, но скажу честно: не смотря на презентацию в стиле студенческих конференций (на финальный слайд (под катом) вообще без слёз не взглянешь), чем дольше я слушал об анонсах, тем больше у меня отвисала челюсть.

Это не просто небольшие улучшения; это действительно скачок вперед. Я слушаю про увеличение длины контекста до 128К, обновлении данных до апреля текущего года, об интеграции в API интерпретатора, нового "рисователя" DALLE-3, анализ изображений, извлечение данных из массивов, безлимитных "ассистентов" и чуть ли не подпрыгиваю на стуле от оживления: решилось огромное количество проблем, которые до этого требовали человеко-месяцы доработки довольно квалифицированной командой.

Как только презентация подходит к концу, я судорожно открываю беклог и начинаю записывать и редактировать идеи. Я уверен, что перед разработчиками открыли действительно большие возможности, которые переопределят способ разработки и восприятия продуктов. И если тема AI вас как минимум интересует и вы ещё и занимаетесь продуктовой разработкой, а перепосченных по 150 раз новостей не хватает понять, что это значит лично для вас и команды, этот обзор будет весьма кстати.

Итак, что нового
Всего голосов 15: ↑13 и ↓2+13
Комментарии25

Простой, но масштабируемый State Management для Flutter

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров4.7K

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

Чувствуете ли вы легкое покалывание при виде OnRefreshPostsButtonClickedHomeScreenEvent? Возможно, вы используете bloc.

Нет? А сейчас -firstNameUserProfileStateProvider ? Ага, riverpod.

Все еще нет? Тогда, может: Succeeded after 104.6s with 364 outputs (2412 actions)? Все ясно - MobX

"Нужен ли нам еще один State Management", или как я написал библиотеку, с которой снова начал любить Flutter.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии23

Интеграция Axum с S3-хранилищем

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.3K

Недавно столкнулся с проблемой подружить веб-фреймворк Axum и библиотеку rust-s3. Собственно, задача сделать 2 эндпойнта:

Загрузка файла в хранилище и получение ссылки

Скачка файла из хранилища по ссылке

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

Читать далее
Всего голосов 4: ↑2 и ↓20
Комментарии8

Введение в Event Modeling

Время на прочтение12 мин
Количество просмотров9.6K

Event Modeling — это метод описания информационных систем на основе анализа изменений информации с течением времени. В частности, опускаются временные детали и выделяется то, что хранится долговременно, то что пользователь видит в любой конкретный момент времени. Это события на временной шкале, формирующие описание системы.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии3

Робототехнические манипуляторы с компьютерным зрением

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров8.7K
Картинка Freepik

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

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

Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии3

Dream Booth — очень умное дообучение stable diffusion

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров11K

Как можно наказать модель за то что она забывает "абстрактные" признаки какого-то обьекта? Почему это важно при обучении дифузионных генеративных моделей на специфичном датасете

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии6

Как работать с GPT-4 с помощью продвинутых промтов

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров52K

ChatGPT – это один из сервисов на базе большой языковой модели GPT. Модель генерирует текст, похожий на созданный человеком, и отвечает на вопросы в разговорной манере. Чтобы профессионально использовать чат-бота, этому нужно учиться. Все мы знаем, что такое программа Excel, что там есть формулы и функции. Но немногие могут использовать все возможности в программе и быстро получать результат. Такая же ситуация с ChatGPT. 

Промт-инжиниринг стал важным набором навыков, необходимых для эффективного взаимодействия с ChatGPT. Промты – это инструкции для чат-бота, которые задают правила, автоматизируют процессы и позволяют эффективно использовать диалоговые модели искусственного интеллекта. В частности, промты задают контекст разговора и сообщают модели, какая информация важна и какой должна быть желаемая форма вывода и содержание.

Например, в промте может быть указано, что GPT должен генерировать только код, соответствующий определенному стилю кодирования или парадигме программирования. Аналогичным образом можно указать, что GPT должен помечать определенные ключевые слова или фразы в сгенерированном документе и предоставлять дополнительную информацию, связанную с этими ключевыми словами. Эти подсказки облегчают получение более структурированных и детальных результатов.

В этой статье я расскажу о 16 наиболее распространенных промтах, которые применяют в промт-инжиниринге. Все примеры были протестированы в версии ChatGPT, доступной в России без VPN. В качестве такой русифицированной версии я использовал MashaGPT, которая работает с оригинальной GPT-4 через API.

Читать далее
Всего голосов 17: ↑9 и ↓8+6
Комментарии13

Введение в венчурные сделки в IT

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2K

Всем привет! У нас с коллегой, Анастасией Акулич, есть идея просто и понятно рассказать о том, как структурируются сделки по привлечению инвестиций и с какими правилами совместной жизни с инвестором придется столкнуться фаундерам. В интернете много статей на тему, но разобраться в них иногда сложно даже юристу.

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

Итак, потенциальный инвестор найден, и вот-вот стартуют первые переговоры по сделке. С чего же начать?

Читать далее
Всего голосов 6: ↑4 и ↓2+4
Комментарии5

А давайте убьем все фреймворки?

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров51K

Общая тенденция развития технологий характеризуется рывками и спадами. Рассмотрим, например, массовое перемещение человеческих тел. Изначально применялись лошади и повозки, которые постепенно стали сложными, и эта технология превратилась в отдельную индустрию. Затем внезапно появились поезда. Про лошадей быстро забыли, и фокус сместился на новое направление. Пар стал объектом исследований и превратился в сложную науку. Параллельно развивались дизель и электричество. В определенный момент паровые двигатели ушли в прошлое, и все перешли на дизель и электричество. Аналогично сейчас происходит переход на электромашины, требующие значительно меньшего количества жидкостей.

Технологии эволюционируют и функционируют, а новые технологии их полностью заменяют. Считаю, что сейчас наступает эпоха, когда технологии фреймворков и Электрона могут быть вытеснены генеративными AI. Рассмотрим несколько примеров.

Нажимайте вот эту вот кнопотуленку
Всего голосов 115: ↑89 и ↓26+82
Комментарии274

Десятикратное улучшение производительности React-приложения

Время на прочтение6 мин
Количество просмотров13K

image


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


Около года назад в Techgoise я получил возможность поработать с большим React-приложением. Мы получили (унаследовали) готовую кодовую базу, внесли основные правки и начали добавлять в приложение новые интересные возможности.


Однако, мы часто получали жалобы от тестировщиков и конечных пользователей о том, что они видят эту злополучную ошибку. После проведенного анализа мы установили, что причина происходящего состоит в том, что приложение расходует целых 1,5 Гб памяти!


В данной статье я расскажу о том, как нам удалось добиться уменьшения этой цифры с 1,5 Гб до 150 Мб, что, как следствие, привело к улучшению производительности почти в 10 раз, и мы больше никогда не сталкивались с Ошибкой.


Поиск узких мест в производительности


Существует большое количество инструментов и библиотек для обнаружения узких мест в приложении. Мы испытали большое количество таких инструментов. Ниже представлено три из них, которые оказались наиболее полезными.


1. Профилирование компонентов с помощью расширения для Google Chrome

Читать дальше →
Всего голосов 28: ↑21 и ↓7+19
Комментарии13

Отслеживание лиц в реальном времени в браузере с использованием TensorFlow.js. Часть 1

Время на прочтение8 мин
Количество просмотров9K

Такие приложения, как Snapchat, предлагают удивительное разнообразие фильтров для лиц и объективов, которые позволяют накладывать интересные эффекты на фотографии и видео. Если вы когда-либо дарили себе виртуальные собачьи уши или праздничную шляпу, вы знаете, насколько это может быть весело!
Задумывались ли вы о возможности создания таких фильтров с нуля? Что ж, теперь у вас есть возможность научиться всему, используя только веб-браузер! В этой серии статей мы узнаем, как создавать в браузере фильтры в стиле Snapchat, обучать модель искусственного интеллекта (ИИ) понимать выражения лиц и добиваться ещё большего, используя библиотеку Tensorflow.js и отслеживание лиц.

Приятного программирования!
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Обнаружение эмоций на лице в браузере с помощью глубокого обучения и TensorFlow.js. Часть 2

Время на прочтение15 мин
Количество просмотров4.5K

В предыдущей статье мы узнали, как использовать модели ИИ для определения формы лиц. В этой статье мы используем ключевые ориентиры лица, чтобы получить больше информации о лице из изображений.

В этой статье мы используем ключевые ориентиры лица, чтобы получить больше информации о лице из изображений. Мы используем глубокое обучение на отслеженных лицах из набора данных FER+ и попытаемся точно определить эмоции человека по точкам лица в браузере с помощью TensorFlow.js.

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

Приятного программирования!
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Кластер PostgreSQL внутри Kubernetes: что нужно знать для успешного внедрения

Время на прочтение8 мин
Количество просмотров23K
Хабр, привет!

В этой статье расскажу про PostgreSQL и его работу внутри кластера Kubernetes. Небольшое превью, о чем поговорим: как появился PostgreSQL, какие у него есть High Availability обвязки, как обеспечивается отказоустойчивость внутри Kubernetes и какие существуют Kubernetes-операторы.



Будут схемы-примеры для наглядности и обзор возможных кейсов, начнем!
Читать дальше →
Всего голосов 18: ↑16 и ↓2+19
Комментарии17

DataStore — CRUD (Create Read Update Delete)

Время на прочтение11 мин
Количество просмотров7.5K

Прощай Redux, MobX, Apollo! Грань между бэкендом и фронтендом сломана! Инновационый шаг эволюции стейт менеджеров.


Одна из самых сложных задачах при разработке веб и мобильных приложений — это синхронизация данных между устройствами и выполнение автономных операции. В идеале, когда устройство находится в автономном режиме, ваши клиенты должны иметь возможность продолжать использовать ваше приложение не только для доступа к данным, но также для их создания и изменения. Когда устройство возвращается в оперативный режим, приложение должно повторно подключиться к бэкэнду, синхронизировать данные и разрешить конфликты, если таковые имеются. Для правильной обработки всех крайних случаев требуется много недифференцированного кода, даже при использовании кэша AWS AppSync SDK на устройстве с автономными мутациями и дельта-синхронизацией.


Amplify DataStore предоставляет постоянное хранилище на устройстве для записи, чтения и наблюдения за изменениями данных, если вы подключены к Интернету или в автономном режиме, а также позволяет легко синхронизировать данные с облаком и между устройствами.


Amplify DataStore позволяет разработчикам писать приложения, используя распределенные данные, без написания дополнительного кода для автономного или онлайн-сценария.


Вы можете использовать Amplify DataStore для автономного использования в режиме «только локальный» без учетной записи AWS или предоставить весь бэкэнд с помощью AWS AppSync и Amazon DynamoDB.


DataStore включает в себя Delta Sync с использованием вашего бэкенда GraphQL и несколько стратегий разрешения конфликтов.

Читать дальше →
Всего голосов 9: ↑2 и ↓7-2
Комментарии39

Intersection Observer API: примеры использования

Время на прочтение7 мин
Количество просмотров88K


Доброго времени суток, друзья!

Обзор


Intersection Observer API (IOA) позволяет приложению асинхронно наблюдать за пересечением элемента (target) с его родителем (root) или областью просмотра (viewport). Другими словами, этот API обеспечивает вызов определенной функции каждый раз при пересечении целевого элемента с root или viewport.

Примеры использования:

  • «ленивая» или отложенная загрузка изображений
  • бесконечная прокрутка страницы
  • получение информации о видимости рекламы для целей расчета стоимости показов
  • запуск процесса или анимации, находящихся в поле зрения пользователя

Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии4
1

Информация

В рейтинге
Не участвует
Откуда
Усогорск, Коми, Россия
Дата рождения
Зарегистрирован
Активность