Привет! Меня зовут Игорь Дмитриев, я Data Business Partner в Wildberries & Russ — и, по совместительству, ленивый человек. Если вижу возможность что-то автоматизировать — обязательно это делаю. Всё, что можно, я обложил автоматизациями: они работают за меня, повышают эффективность и улучшают результаты. Также стараюсь внедрять автоматизацию в процессы, связанные с моей работой. Сегодня расскажу о своём опыте в автоматизации сопровождения данных.
Забегая вперёд
В этой статье я покажу, на каком уровне зрелости («прожарки») описания данных уже можно подключать LLM, чтобы ИИ-агенты меньше галлюцинировали. Расскажу, какой уровень описания данных целевой, и какой уровень точности между ними.
Но обо всём по порядку.
Почему сопровождение описания данных — это боль
Во-первых, это медленно. В небольших организациях с малым объёмом данных ручной подход ещё работает. Но в крупном бизнесе с сотнями тысяч таблиц описание данных фатально отстаёт. Новых таблиц создаётся больше, чем отдел успевает описать. В итоге метаданные устаревают быстрее, чем их успевают создавать. Бывали случаи, когда подготовка аналитического отчёта требовала более 100 источников. Без нормального бизнес-каталога и качественных метаданных даже простая задача — найти нужные таблицы — превращалась в детективный квест.
Во-вторых, это ведёт к неверным бизнес-решениям. Ранее я сталкивался с ситуацией, когда один и тот же бизнес-показатель рассчитывался по-разному в разных витринах. В итоге руководству поступали отчёты с разными значениями за один и тот же период. Чтобы избежать таких инцидентов, нужно качественное описание не только физических данных, но и логического слоя — глоссария. Иначе аналитики работают вслепую, полагаясь только на названия столбцов.
В-третьих, это рискованно. Доступ к плохо размеченным или вовсе не размеченным таблицам может привести к утечке данных. С введением штрафов до 3% от годовой выручки за утечку персональных данных этот риск становится критическим. Но если закрывать доступ ко всем неразмеченным данным, бизнес теряет в скорости и эффективности. Получается замкнутый круг.
Всё это сводится к одной проблеме: ручная работа не масштабируется. Не хватает экспертов, безопасников, ресурсов на сопровождение. Описывать всё вручную — путь в никуда. Нужен системный подход. В этой статье — о том, как ИИ, в частности LLM, помогает автоматизировать сопровождение данных. Для классификации уровней зрелости я использую метафору «прожарки стейка».
«Прожарка» данных: три уровня зрелости
Я выделяю три уровня зрелости описания данных — от Rare до Well-Done. Каждый уровень — шаг к более полной автоматизации и безопасному использованию данных.
Уровень 1: Rare (слабая прожарка)
На этом уровне данные только начинают описываться. Достаточно трёх базовых атрибутов, которые требует любая служба ИБ: владелец, физическая модель и разметка конфиденциальности.
Физическая модель
Зачем нужна: Это технический профиль — названия таблиц, столбцов, типы данных (int, varchar, date), ключи. Без неё невозможно сформировать SQL-запрос. Важны и описания: в СУБД обычно есть поля description для таблиц и колонок. Их стоит заполнять.
Как автоматизировать: Каркас физической модели всегда извлекается автоматически через коннекторы дата-каталогов (DataHub, OpenMetadata). Если поля description пустые, раньше их восстанавливали вручную — через Excel, Wiki, Confluence.
Чтобы сократить трудозатраты:
- Ввести строгий Naming Convention (стандарт именования) и требовать заполнение описаний.
- Подключать AI-утилиты как плагины к каталогу. Если описание отсутствует, ИИ пытается его восстановить: либо расшифровывая название (по Naming Convention), либо обращаясь к корпоративным базам знаний через RAG или MCP-серверы.
Владелец (Data Owner)
Зачем нужен: Чтобы знать, к кому обращаться по вопросам качества данных, кто согласовывает доступ и несёт ответственность за инциденты. Без владельца данные считаются «сиротскими», и выдача доступа нарушает политики безопасности.
Как автоматизировать: Автоматизация здесь ограничена. ИИ может предложить кандидата на основе контекста (например, по бизнес-домену), но назначать владельца должен человек. Ответственность нельзя делегировать скрипту.
Разметка конфиденциальности
Зачем нужна: Это критический фильтр. Без понимания, содержатся ли в таблице персональные данные или коммерческая тайна, вы не можете безопасно предоставлять доступ. Риск утечки слишком высок.
Как автоматизировать: Это одна из ключевых точек пользы LLM на старте. Есть два подхода:
- Анализ описания (метаданных): Присвоение тегов ИБ на основе названий таблиц, столбцов и бизнес-терминов — без доступа к данным.
- Анализ содержимого (сигнатур): Глубокое сканирование таблиц на паттерны (номера карт, телефонов и т.д.).
Оба подхода стоит внедрять вместе — у каждого свои плюсы и минусы. Однако первый проще в реализации и уже повышает зрелость. В рамках статьи рассматривается именно он: алгоритм работает по описаниям, не обращаясь к данным. Но для полноценной DLP-системы второго подхода не избежать.
Уровень 2: Medium (средняя прожарка)
Здесь начинается переход от технического к бизнес-смыслу. Появляются бизнес-глоссарий и логический слой.
Логический слой — это абстракция над физической моделью. Если физическая модель отвечает на вопрос «как хранится», логический слой — на вопрос «что это значит для бизнеса». Например, таблица clients_v2_f и колонка c_inn превращаются в сущность «Клиент» и атрибут «ИНН». Это мост между языком баз данных и языком бизнеса.
Такое разделение заложено в международных стандартах, например, ISO/IEC 11179, который строго разделяет концептуальный «смысл» данных и их физическое «представление».
Создание логического слоя — трудоёмкий процесс. Обычно этим занимаются дата-стюарды. Но ИИ может помочь: он анализирует физическую модель и предлагает, какие поля соответствуют каким бизнес-терминам. Особенно эффективно, если у физических данных уже есть качественные описания.
Это можно автоматизировать через MCP-сервер дата-каталога. Дата-стюард в чате с ИИ-агентом запрашивает метаданные по таблице. Агент обращается к каталогу, анализирует глоссарий и предлагает: привязать существующие термины или создать новые. Без ИИ эта работа занимает часы, с ним — минуты. Агент не заменяет стюарда, а усиливает его, беря на себя рутину.
Однако одной таблицы часто недостаточно. Чтобы строить инсайты, нужно понимать связи между данными. Часть связей можно извлечь из первичных ключей, но более полезные паттерны — из SQL-запросов. Анализ логов запросов показывает, какие таблицы джойнятся, какие фильтры и агрегации используются.
Парсинг логов выполняется с помощью LLM: модель разбирает запросы, выделяет связи и паттерны, которые затем обогащают метаданные.
Уровень 3: Well-Done (полная прожарка)
Это уровень соответствия бизнес-смыслу. Описание собирают бизнес-аналитики, но его можно восстанавливать полуавтоматически: парсить SQL-запросы и использовать уже готовые физические и логические описания.
Здесь важен стандарт OSI (Open Semantic Interchange) — открытая, вендор-нейтральная инициатива по обмену семантическими метаданными. OSI задаёт единый формат описания бизнес-сущностей и их связи с физическими таблицами. Ключевые элементы:
- Факты — количественные атрибуты (суммы, количества).
- Метрики — агрегированные показатели (SUM, AVG, COUNT), то есть KPI.
- Измерения — категориальные признаки (кто, что, где, когда).
- Связи — как логические таблицы соединяются.
- Фильтры — часто используемые условия.
- Проверенные запросы — примеры вопросов на естественном языке с готовыми SQL-ответами.
Всё это описывается в YAML — формате, понятном и человеку, и машине. Например, «валовая выручка» получает бизнес-имя, описание и правило расчёта — и становится единым стандартом для всех.
OSI сегодня популярен в мировой Data-индустрии. Его используют dbt Semantic Layer, Snowflake, Cube.dev. Открытые стандарты обеспечивают совместимость с инструментами. Например, dbt реализует семантику через MetricFlow — значит, инвестиции в слой не привязывают вас к одному вендору. Описание легко переносится между ИИ-агентами, BI-системами и другими инструментами.
Почему логический слой критичен для Text-to-SQL
Может показаться, что ИИ-агенту достаточно физического и логического описания, чтобы генерировать SQL. На практике — нет. Большой объём сырой структуры заставляет модель галлюцинировать: она путает таблицы и выбирает неверные поля.
Исследования показывают: сокращение описания до нужного логического контекста повышает качество text-to-sql. Но и этого не всегда достаточно.
Пример: ИИ посчитал «активных клиентов» как всех, у кого в столбце стоит статус «active». На самом деле, по бизнес-логике — это те, кто сделал хотя бы один заказ на сумму свыше 1000 рублей.
Такие ошибки возникают, когда семантический слой не описан. Решение — либо более детальное описание логики, либо переход к семантическому слою. Я выбираю второе: это понятнее для бизнеса и позволяет унифицировать метрики.
Исследования Snowflake в рамках Cortex Analyst показывают: семантический слой повышает точность text-to-sql на 20% по сравнению с запросами без него. В реальных кейсах это позволяет достичь более 90% точности. Без семантики модель вынуждена угадывать логику по названиям — и ошибки неизбежны.
Итог
Уровень Well-Done — наш горизонт. Семантический слой по стандарту OSI — ключ к точной работе ИИ-агентов с данными. Мы движемся в этом направлении.