Pull to refresh

Technotext

Методы распознавания матерных (и не только) языков

Level of difficultyMedium
Reading time8 min
Views1.6K

Всем привет! Меня зовут Миша, я работаю Backend-разработчиком в Doubletapp. В одном из проектов появилась фича по добавлению тегов по интересам. Любой пользователь может создать интерес, и он будет виден всем остальным. Неожиданно (!!!) появились интересы с не очень хорошими словами, которые обычно называют матерными. Встала задача по распознаванию языка с матерными словами, чтобы исключить возможность добавления гадости в наш огород!

Читать далее

Архитектура фронтенд-приложений на React. (Нам не нужен FSD)

Level of difficultyMedium
Reading time9 min
Views20K

Всем привет, меня зовут Павел Рожков, я lead фронтенда в компании Doubletapp. Мы занимаемся заказной разработкой, и в нашей работе над React-проектами важную роль играет наш архитектурный гайдлайн, который мы постоянно совершенствуем. Это свод договоренностей о том, каким образом будет организован код в нашем проекте.

Гайдлайн помогает нам:

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

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

Поддерживать старые проекты, т.к. они написаны по тем же принципам. 

Поднять качество кода: работать на проекте становится удобнее и можно сосредоточиться на важных вещах.

Онбордить новых членов команды благодаря готовой документации.

Содержание:

Почему бы нам просто не взять FSD?
Шаблон проекта с архитектурой
Структура кода приложения
Заключение

Читать далее

Как общаться с базой знаний на естественном языке с помощью LLM и объективно оценить работу полученной системы

Level of difficultyEasy
Reading time11 min
Views8.2K

Привет, Хабр! Меня зовут Даниил, работаю в ML-отделе Doubletapp. В статье расскажу про особенности применения больших языковых моделей для оптимизации бизнес-процессов.

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

Тем не менее LLM все еще имеют ряд проблем, одной из которых является галлюцинирование (придумывание фактов). Сложно винить модель за то, что она не знает, как устроен тот или иной процесс/продукт в вашей компании, и пытается придумать вразумительный ответ. Поэтому нужно подсказать LLM фактическую информацию, а она уже даст нам понятную человеку персонализированную реплику.

Такая система ответов на вопросы с использованием фактической информации называется RAG (Retrieval Augmented Generation).

Данная статья состоит из двух частей:

мы рассмотрим построение RAG-системы на основе библиотеки langchain;

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

Читать далее

Как запоминать и не забывать: применяем и автоматизируем Spaced Repetition System

Level of difficultyEasy
Reading time6 min
Views2.9K

Привет! Меня зовут Дима, я Backend-разработчик в Doubletapp. Мне хотелось бы поделиться опытом реализации автоматизации изучения большого объёма информации.

В статье я расскажу:
C какой проблемой я столкнулся
Про возможное решение
Про готовые инструменты, использующие SRS
Notion + ActivePieces + ChatGPT
Опыт использования: плюсы и минусы
Про возможное применение

Читать далее

Битвы языковых моделей: сравниваем LLM Т-Банка с конкурентами в рабочих условиях

Level of difficultyMedium
Reading time25 min
Views7.5K

На российском рынке искусственного интеллекта произошло событие, мимо которого сложно пройти даже самому заядлому скептику — T-Банк представил свои языковые модели T-Lite и T-Pro, основанные на китайской LLM Qwen 2.5. И хотя анонсов «революционных» нейросетей в последнее время становится всё больше, этот случай действительно заслуживает пристального внимания — перед нами не очередной наспех слепленный форк с громкими заявлениями, а результат полугодовой работы над полноценным решением с открытой лицензией Apache 2.0.

Что в итоге получилось

Как Яндекс создал свою шину данных, чтобы передавать сотни гигабайт в секунду

Level of difficultyEasy
Reading time7 min
Views43K

10 лет назад сотни серверов Яндекса работали на Apache Kafka®, но в этом продукте нам нравилось далеко не всё. Наши задачи требовали единой шины для передачи всех видов данных: от биллинговых до журналов приложений. Сегодня объёмы достигли уже десятков тысяч именованных наборов сообщений.

При таком количестве данных в Apache Kafka® становилось сложно управлять правами доступа, организовывать распределённую работу нескольких команд и многое другое. Проблемы роста и отсутствие подходящего решения в открытом доступе привели к тому, что мы разработали своё решение YDB Topics и выложили его в опенсорс в составе платформы данных YDB. В этом посте расскажу о предпосылках создания продукта, нашей архитектуре передачи данных, возникающих задачах и возможностях, которые появились вместе с YDB Topics.

Читать далее

Как найти и удалить 2 Тб ненужных файлов, которые не видит СУБД? Дорабатываем pg_orphaned

Level of difficultyHard
Reading time22 min
Views6.3K

PostgreSQL, как и все СУБД, основанные на его открытом коде, устроен так, что всю информацию хранит в большом количестве отдельных файлов. И они при разных обстоятельствах могут потеряться. Например, бывает так, что при заполнении таблицы или обработке транзакции происходит сбой. Процесс, породивший файл, прерывается, не удалив результаты своей работы. СУБД про этот файл ещё ничего не знает, поскольку транзакция, создавшая его, не успела закоммититься. Часть таких файлов удалится при перезапуске СУБД, а часть — нет. Так неиспользуемые файлы копятся и занимают всё больше места. Иногда их объём исчисляется терабайтами.

Меня зовут Роман Дягелев, я инженер в СберТехе, сопровождаю и разрабатываю СУБД Platform V Pangolin. Наш продукт основан на открытых решениях PostgreSQL и включает в себя собственные доработки в области безопасности, отказоустойчивости и удобства эксплуатации. Я расскажу о том, почему нам не хватило готового инструмента PostgreSQL для очистки файлового мусора и как я вместе с коллегами дорабатывал его. Надеюсь, наш опыт станет полезен тем, кто работает с инструментарием PostgreSQL и ищет решения для работы с ненужными файлами.

Читать далее

Как построить убежище и (не)облажаться

Reading time11 min
Views19K

Вселенная культовой игры Fallout получила очередное перерождение с выходом сериала от Amazon. Хотя фабула произведения (почти) и не пересекается с играми, главная сюжетная арка осталась прежней: сливки общества укрываются в убежищах от ядерного безобразия, а выйдя на поверхность, оказываются совершенно не готовы к царящей там анархии. Как построить качественный бункер и не облажаться, и что на самом деле случится с людьми и убежищем даже не за двести, а всего за два года изоляции? Под впечатлением от сериала вспоминаем самый масштабный эксперимент по созданию «прототипа убежища» и разбираемся, насколько обнадеживающими оказались его результаты. Спойлер — не очень.

Читать далее

Делаю умный дом в бетонной коробке, где (пока) нет даже раковины: начинаю с умных розеток

Level of difficultyEasy
Reading time28 min
Views26K

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

Читать далее

«Шапочка из фольги не поможет»: что такое handover в базовых станциях и как его тестируют

Level of difficultyEasy
Reading time7 min
Views7.1K

Привет, Хабр! Меня зовут Анастасия Беднова, я тестирую базовые станции в стандартах 4G (LTE) в YADRO. В профессии я почти 20 лет: начинала карьеру в крупной компании-вендоре как тестировщик одного из компонентов сети 3G. Когда два года назад YADRO объявила о разработке собственной базовой станции, я решила, что хочу стать частью этого проекта — в России такого еще никто не делал, задача показалась крайне амбициозной. 

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

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

Читать далее

Век поиска кратчайшего решения задачи о кратчайшем пути

Level of difficultyMedium
Reading time22 min
Views12K

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

Может показаться, что на самом деле просто не было существенного прогресса с 60х годов, так как Дейкстра предоставил почти асимптотически оптимальный алгоритм решения задачи. На самом деле нет, прогресс был и придумали много чего интересного, хоть и действительно с того времени фокус сместился на другие задачи. Приглашаю под кат если интересно узнать что такого напридумывали, что используется в современных логистических системах, почему меня огорчает отсутствие учёта флага единства в HOMM3 при расчёте пути, ну и наконец, что за мужики на картинке выше рядом с Дейкстрой?

Читать далее

Интеграция LLM в корпоративные чат-боты: RAG-подход и эксперименты

Level of difficultyEasy
Reading time11 min
Views8.2K

Всем привет! На связи команда AI-Run из X5 Tech, мы занимаемся генеративными сетями в целом и языковыми моделями в частности. В этой статье мы опишем наш опыт работы с большими языковыми моделями (LLM), их внедрение для обработки корпоративных данных, а также поделимся нашими результатами и выводами.

Ещё мы расскажем о нашем подходе к использованию LLM, подробно остановимся на методе Retrieval Augmented Generation (RAG) и рассмотрим примеры использования чат-ботов на корпоративных порталах X5.

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

Читать далее

Построение инфраструктуры для работы с языковыми моделями: опыт X5 Tech

Reading time4 min
Views2.2K

Привет, Хабр! Я Мичил Егоров, руководитель команды разработки продуктов искусственного интеллекта в X5 Tech. В последнее время языковые модели (LLM) стали неотъемлемой частью многих бизнес-процессов, начиная от чат-ботов и заканчивая автоматической обработкой отзывов клиентов. Однако, чтобы эффективно использовать такие модели, необходима мощная и гибкая инфраструктура. 

За последний год команда X5 Tech значительно выросла, проверила множество гипотез и протестировала различные модели. Основные кейсы использования включают чат-боты, суфлёры для модераторов, автоматическое резюмирование и обработку отзывов клиентов. В этой статье расскажу, как команда X5 Tech построила инфраструктуру для работы с языковыми моделями, какие вызовы преодолели и какие решения были приняты.

Читать далее

Как я сделал PR на 14К строк в проект YDB будучи студентом

Reading time12 min
Views12K

В этой статье я хотел бы рассказать о задаче, решение которой легло в основу моей дипломной работы. На момент ноября 2023 года я был студентом Физтеха — учился на базовой кафедре Яндекса, программа обучения которой реализуется совместно с ШАДом. Задача заключалась в переводе парсера языка запросов YQL (диалект SQL для YDB и YTsaurus) с ANTLR3 на ANTLR4. Мой наставник в ШАД и руководитель команды разработки клиентских библиотек YDB в Яндексе к. т. н. Алексей Мясников @asmyasnikovотметил еёе как особо сложную. Но меня это не отпугнуло:, тема работы из всех тем, предложенных в ШАД, эта показалась самой интересной и близкой мне.

Читать далее

Как я ad-hoc задачи аналитиков автоматизировал

Level of difficultyEasy
Reading time6 min
Views12K

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

Читать далее

Заглядываем под капот FrozenDictionary: насколько он быстрее Dictionary и почему

Level of difficultyMedium
Reading time9 min
Views14K

С релизом .NET 8 в арсенале C# разработчиков появилась новая коллекция – FrozenDictionary. Особенность этого словаря в том, что он неизменяемый, но при этом обеспечивает более быстрое чтение по сравнению с обычным Dictionary. Я неспроста разбил результаты на обложке по типам – используемые во FrozenDictionary алгоритмы сильно зависят от типа ключа, размера словаря или даже, например, количества строковых ключей одинаковой длины. В этой статье подробно разберем, насколько FrozenDictionary быстрее и почему.

Заглянуть под капот

Что может квантовый компьютер уже сегодня. По фактам

Reading time19 min
Views18K

Обычно, когда говорят о квантовых вычислениях, либо рассуждают о красотах квантовой механики, либо восторженно рассказывают о счастливом будущем, либо считают кубиты. Достаточно поискать новости по этой теме, чтобы наткнуться на десятки заголовков а-ля «Квантовое превосходство достигнуто», «Квантовые вычисления стали возможны при комнатной температуре». В итоге представление темы в медиаполе получается как в том меме и, мягко говоря, не соответствует действительности. 

Давайте познакомимся: я Михаил Ремнев, ученый-физик, кандидат физико-математических наук, занимался численным моделированием и исследованием разных квантово-механических систем. Немного потрудился в государственном фонде, финансирующем инновационные проекты, участвовал в первых российских проектах по созданию кубитов, сейчас аналитик в Cloud.ru. В этой статье я расскажу о том, чего на самом деле достигли квантовые компьютеры, какие задачи и в каком объеме решены на данный момент, и так ли уж близок квантовый апокалипсис. Опираться мы будем не на медиа, а на рецензируемые публикации в научных изданиях.

Читать дальше

Киберпанк. Заводы без людей

Level of difficultyEasy
Reading time6 min
Views14K


Сейчас 2025-й год, и будущее, которое представляли себе писатели-фантасты, — наступило. По крайней мере, в части автоматизации производства и промышленной робототехники. Некоторые современные заводы проектируются с таким расчётом, что на конвейере будет минимальное количество людей, в идеале — ни одного.
Читать дальше →

О том, как легкомысленное использование полиморфных аллокаторов может испортить вам жизнь

Level of difficultyMedium
Reading time11 min
Views3.2K

Вы хотите идти в ногу со временем и перевести ваш проект на полиморфные аллокаторы? Вас не могут отговорить от этого даже затраты на виртуальные вызовы? Тогда вы просто обязаны знать о нюансах с лайфтаймом, и почему нельзя просто взять и поменять свои контейнеры на аналоги из пространства имён pmr.

Читать далее

Разбор тестового задания по электронике в Яндекс

Level of difficultyHard
Reading time9 min
Views45K

Сегодня в очередной раз наткнулся на вакансию старшего инженера - схемотехника в Яндекс. Решил, что это знак и настало время разобрать их тестовое задание. Звучит оно следующим образом:

Читать далее