Автоматизированная проверка качества данных с помощью LLM
1. Введение и актуальность проблемы (2 минуты) Вступление. С ростом числа пользователей, систем и интеграций увеличивается сложность работы с базами данных: не только у аналитиков или архитекторов, но и у всех, кто разрабатывает, поддерживает или тестирует продукты. Ошибки в данных — это не только баги в аналитике, это сбои в работе сервисов, неверные расчёты, падения интеграций и пропадающие данные на фронте. С этой проблемой могут сталкиваться: Системные аналитики при проектировании БД и описании требований; Разработчики при реализации CRUD, миграции; Тестировщики при проверке целостности, полноты, работоспособности бизнес-сценариев; Поддержка и DevOps — при разборе инцидентов и расследовании причин сбоев. Потребность в удобной, быстрой и автоматической проверке качества данных — это повседневная задача каждого, кто взаимодействует с БД, независимо от его роли в команде. 2. Сценарии использования (5 минут) 2.1. Когда проектируете новую базу данных Вы проектируете новую систему — будь то интернет-магазин или сервис доставки. На этапе проектирования базы данных важно, чтобы все таблицы были согласованы между собой: нигде не забыли внешний ключ, не перепутали типы данных, не сделали обязательное поле необязательным. Инструмент для проверки качества данных за несколько минут пробежится по схеме данных и подсветит слабые места: где пропущены связи, где ошибка в типе или миграция была проведена не до конца. Это экономит кучу времени и снижает шанс, что на проде всплывёт неприятный сюрприз. 2.2. Когда обновляете бизнес-логику или контракты API Вы решили обновить бизнес-логику — добавили новые поля в DTO, поменяли структуру API, завели новую версию сервиса. Очень легко ошибиться: забыть обновить где-то тип, не учесть новое поле, не обновить маппинг. Инструмент автоматически проверяет — разъехалось ли что-то между вашим кодом и базой, не остались ли где-то старые форматы, всё ли теперь сходится друг с другом. Это позволяет спокойно вносить изменения, не боясь, что что-то сломается или потеряется. 2.3. Когда вдруг что-то перестаёт работать или пропадают данные Бывают ситуации, когда пользователи жалуются: "у меня не видно заказов", "система показывает пусто" или "после обновления что-то не работает". Чаще всего причина — проблема с качеством данных: где-то пропущено значение, записан не тот формат или данные между таблицами "разъехались". Инструмент проверки качества данных быстро находит такие проблемы: укажет, где есть пропуски, где формат отличается от ожидаемого, где нарушена связь между таблицами, где уползла дата. Это ускоряет разбор инцидентов и экономит время на поиск причины. 2.4. Когда хотите держать всё под контролем и не думать о рутине Если вы хотите быть уверены, что база всегда в порядке — можно просто включить автоматические проверки. Инструмент сам раз в настраиваемых период мониторит базу и, если что-то вдруг пошло не так, сразу приходит уведомление: “Обнаружена проблема с данными!” Это значит, что вы заранее знаете о проблемах и можете решить их ещё до того, как их заметят пользователи данных. 3. Требования к инструменту (5 минут) Во-первых, он должен быть простым в настройке и подключении к разным базам данных. Мы не хотим тратить часы на конфигурацию — добавил хранилище, настроил минимум параметров, и проверки уже работают. Во-вторых, инструмент должен позволять легко добавлять свои, кастомные проверки. Например, вы хотите раз в неделю убеждаться, что все идентификаторы соответствуют вашим внутренним правилам — делаете шаблон, и он автоматически применяется. Очень важный пункт — уведомления. Получать их можно в привычных каналах, например, в Telegram. Но при этом надо помнить о безопасности: никакой чувствительной информации в алертах, всё анонимизировано и аккуратно. Автоматическая генерация запросов для расследования и исправления — прямо из отчёта можно скопировать SQL-запрос, который покажет, где и что сломалось. Причём мы стараемся давать не только выявление, но и решение — примеры исправлений, чтобы можно было быстро починить данные. Наконец, инструмент должен быть экономичным — не нагружать БД лишними запросами, быть гибким и легко встраиваться в существующие процессы. Проще, быстрее и надёжнее сделать свой инструмент, который будет максимально подстраиваться под наши задачи, быстро дорабатываться, легко интегрироваться с нашими пайплайнами и не требовать долгого обучения или внедрения. Это получился компактный, человеческий инструмент, который не просто работает по инструкции, а реально помогает в ежедневной рутине всех, кто связан с данными. 4. Разработанное решение: библиотека проверки качества данных (6 минут) Что у нас получилось реализовать? Это библиотека, которая умеет подключаться и к реляционным базам, например, PostgreSQL, Clickhouse, и к нереляционным — MongoDB. Всё максимально прозрачно: вы указываете настройки в удобном YAML-файле, не надо разбираться в сложных форматах. Инструмент поддерживает целый набор стандартных проверок: уникальность значений, отсутствие пропусков, корректность внешних ключей, соблюдение форматов, например, номера телефонов, проверка согласованности между столбцами, проверки дат и поиск аномалий. Но этим дело не ограничивается. Если у вас есть специфические для бизнеса правила — их тоже легко добавить. Все кастомные проверки повторяемы: вы можете один раз описать правило и использовать его по всей конфигурации. По итогам всех проверок формируются красивые и понятные отчёты: где и что не так, когда это было обнаружено, сколько раз повторялось. Всё логируется, история доступна. Если возникает ошибка — система сразу отправляет уведомление: вы не пропустите ничего важного, при этом все уведомления обезличены и безопасны. Однако важно понимать — ни одна система проверки не даёт 100% гарантии идеального результата. Всегда бывают случаи, когда автоматизация что-то не увидела или, наоборот, перестраховалась. Такие инструменты, как и любой автоматический тест, хороши как первая линия обороны, но не заменяют полностью живой, экспертный взгляд. 5. Автоматизация и эксперименты с использованием LLM (7 минут) Самое интересное — мы интегрировали в решение LLM, большие языковые модели, которые делают рутинные вещи за вас. Во-первых, модель сама по образцу данных предлагает релевантные проверки. Во-вторых, LLM умеет автоматически генерировать SQL-запросы и советы: нашёлся баг — тут же рекомендация, как посмотреть данные, как исправить ошибку. Это особенно важно для больших команд, где не все глубоко погружены в SQL. Мы провели эксперименты с разными моделями — от совсем бюджетных до продвинутых, вроде YandexGPT 5 Pro, Claude-3, Gemini, GPT-4о-mini и других. Сравнивали скорость, качество, стоимость. Сразу скажу: не всегда дороже значит лучше именно для вашей задачи. Здесь важно быть честными: любые решения на базе LLM несовершенны. Да, они снимают огромное количество рутины, но иногда ошибаются — могут придумать неверный запрос, пропустить важный кейс или, наоборот, выдать ложное срабатывание. Мы с этим сталкивались на практике — иногда LLM предлагает неработающий SQL, иногда советует явно небезопасное действие. Для этого предусмотрены этапы валидации, ручные и автоматические проверки того, что действительно попадёт в уведомление. 6. Полученные результаты и примеры успешной реализации (3 минуты) На практике инструмент уже встроен в рабочие пайплайны выгрузки и проверки данных в нашей компании. Что это дало? Резко сократилось время на разбор инцидентов. Количество ручных проверок в команде снизилось в разы. Появилась прозрачная история всех ошибок — команда видит, где “болит” чаще всего, и может менять процессы. Отчёты по качеству данных понятны как техническим специалистам, так и менеджерам — все видят одну и ту же картину. Сейчас мы работаем над масштабированием библиотеки на большие хранилища, тестируем производительность. Автоматизация — это всегда баланс между скоростью, надёжностью и человеческим контролем. Всегда есть место факапам: иногда LLM ошибается, иногда сама логика проверки не до конца покрывает бизнес-кейс. Поэтому живой отклик команды, вовлечённость экспертов и обратная связь — всё это обязательно остаётся частью процесса. 7. Заключение и перспективы развития (4 минуты) Автоматизированная проверка качества данных реально экономит время и силы всей команды: от аналитика до поддержки. Вы быстрее реагируете на проблемы, и они не “доходят” до пользователя. Можно легко и быстро покрыть тестами даже большие, сложные хранилища. Но главный вопрос — а можно ли полностью доверить проверку агенту? Пока — это мощный помощник, который снимает 80% рутины и даёт уверенность в качестве данных. А дальше — вместе с развитием LLM мы идём к полной автоматизации этого процесса.