Онтология: что это

Бизнесу не нужен SQL

|
Онтология: что это

Text-to-SQL без онтологии отвечает правильно в половине случаев. И это не вина модели — это вина того, что вы скармливаете ей таблицы и колонки вместо смыслов. Она не знает, что «выручка» и «прибыль» связаны, что у «клиента» бывают «заказы», а у «заказов» — «платежи».

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

Звучит как заумное философское слово, от которого пахнет пылью библиотек и древнегреческим. На деле всё проще и практичнее. Давайте разберёмся, что такое онтология, чем она отличается от семантического слоя и зачем она вашему ИИ-ассистенту.

Онтология: словарь плюс связи

Семантический слой отвечает на вопрос «что означает эта метрика?». Онтология идёт дальше и отвечает на вопрос «как это понятие связано с остальными?». Если семантический слой — это глоссарий терминов, то онтология — это схема того, как термины связаны между собой.

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

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

Технически онтология описывает сущности (классы), их свойства (атрибуты) и отношения (как один класс связан с другим). Удобно думать о них как о частях речи: сущности — существительные («клиент», «заказ», «платёж»), отношения — глаголы («совершает», «оплачивается»), атрибуты — прилагательные («крупный», «оплаченный»). Классические языки описания — RDF и OWL, но на практике не обязательно уходить в такую глубину. Иногда достаточно аккуратной схемы сущностей и связей.

Зачем онтология ИИ-агентам

Теперь главное. Проблема наивного Text-to-SQL в том, что модель видит таблицы и колонки, но не понимает, как понятия связаны между собой. «Выручка» и «прибыль» для неё — просто слова в разных колонках. Она не знает, что прибыль получается из выручки, и что «выручка» у маркетинга и у финансов — это, возможно, разные вещи.

Почему так происходит? Потому что дата-модель — это сжатая копия мира. При моделировании из неё выкидывают всё «неудобное»: контекст, нюансы, правила. Попытка заставить LLM восстановить реальность по одним таблицам — это попытка сделать сыр обратно молоком. Информация уже потеряна, додумать её модель может только галлюцинациями. Онтология — недостающий чертёж, по которому «сыр» можно развернуть обратно хотя бы до творога.

Онтология даёт ИИ-агенту недостающий контекст:

  • какие понятия существуют в бизнесе;
  • как они связаны (выручка → прибыль, клиент → заказ → платёж);
  • какие синонимы и альтернативные названия используются;
  • какие правила и ограничения действуют.

Когда ИИ-агент опирается на онтологию, он перестаёт угадывать и начинает рассуждать в терминах вашего бизнеса. Вопрос «покажи самых прибыльных клиентов» больше не превращается в случайный JOIN — агент знает цепочку: клиент → заказы → выручка → прибыль.

flowchart LR
  A[Вопрос на естественном языке] --> B[ИИ-агент]
  B --> C[Онтология:<br/>понятия и связи]
  C --> D[Семантический слой:<br/>метрики и формулы]
  D --> E[База данных]
  E --> F[Ответ пользователю]

Кейс: два аналитика и ловушка дашборда

Хватит теории. Представьте: директор даёт двум ИИ-агентам один и тот же дашборд по поддержке за квартал.

Цифры прекрасные: новых тикетов стало на 45% меньше, время ответа сократилось вдвое, CSAT — 8.4 из 10.

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

Второй агент знает онтологию бизнеса. А в этой компании действует white-glove-модель: каждый крупный клиент на ручном сопровождении, менеджеры лично звонят по каждому инциденту. Тихий сервис-деск в такой модели — не успех, а тревожный звонок: клиенты просто перестали писать, потому что сдались.

Вопрос Агент без онтологии Агент с онтологией
Как оценить квартал? «Сильное улучшение, руководству понравится» «Красивый дашборд, но бизнес теряет клиентов»
Какие риски? «Красных флагов нет» «−45% тикетов — ведущий индикатор оттока»
Что делать? «Ещё больше автоматизации» «Срочный ре-ингейджмент: личное общение вместо скорости»

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

Онтология против семантического слоя

Это не конкуренты, а партнёры. У них разные задачи:

Семантический слой Онтология
Вопрос Как считается метрика? Почему метрика движется?
Единица Метрика, измерение Класс, отношение
Отвечает «Как посчитать ROAS» «Что заставляет ROAS расти или падать»
Ограничение Только «заготовленные» вопросы Любые вопросы о связях и причинах
Пример Net_Revenue = SUM(amount - refunds) «Заказ принадлежит клиенту»

Семантический слой отвечает только на те вопросы, которые вы заранее спроектировали: агрегаты по определённым метрикам. Всё, что выходит за рамки, он честно не знает. Онтология закрывает эту дыру: она объясняет, какие факторы влияют на метрику и как понятия связаны, — и агент перестаёт додумывать связи сам.

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

Что онтология умеет, чего не умеет модель данных

Дата-модель — это карта водопровода: где что лежит. Онтология — карта логики: что что означает и как себя ведёт. Разница конкретная:

  • Логика и причинность. Модель данных скажет, что две метрики выросли одновременно. Онтология объяснит, какая из них тянет другую и почему.
  • Семантическая гибкость. Новое понятие добавляется на лету, без миграции схемы и «поломавшихся» дашбордов.
  • Поиск по смыслу, а не по словам. «Новые пользователи маркетинга» и «новые пользователи биллинга» — это разные понятия, хотя слова похожи.
  • Ограничения. «У человека одна биологическая мать», «заказ не бывает без клиента» — правила, которые система соблюдает во всех данных.
  • Интероперабельность. Глобальные идентификаторы (URI) позволяют понять, что «Продукт» из одной системы и «Товарная позиция» из другой — одно и то же.

RDF: тройки вместо таблиц

Если решите строить настоящую онтологию, рано или поздно встретите RDF — Resource Description Framework. Это модель данных, а не база: она описывает мир как направленный граф утверждений. Каждое утверждение — тройка «субъект — предикат — объект»: «Клиент — совершает — Заказ».

Выглядит это так, формат Turtle:

@prefix ex: <http://example.com/analytics#> . ex:client-42 a ex:Client ;    ex:hasName "ООО Ромашка" ;    ex:madeOrder ex:order-7 . ex:order-7 ex:hasAmount 125000.50 ;    ex:paidBy ex:payment-9 .

Читается как предложение: «клиент 42 называется ООО Ромашка, сделал заказ 7, заказ 7 оплачен платежом 9». Никаких таблиц — только связи. Тот же граф можно записать в JSON-LD, если ваша команда живёт в мире JSON:

{  "@context": { "ex": "http://example.com/analytics#" },  "@id": "ex:client-42",  "@type": "ex:Client",  "ex:hasName": "ООО Ромашка",  "ex:madeOrder": { "@id": "ex:order-7" }}

У каждого ресурса — свой URI. Благодаря этому «Product» из ERP и «Item» из CRM склеиваются в один узел, а не плодят три сущности в трёх системах. Тройки можно группировать в named graphs — наборы под одним URI, чтобы разделять происхождение данных: что откуда пришло и какой версии.

Главное преимущество RDF — гибкость: добавляй новые предикаты, не трогая старые данные. Схемы RDF не навязывает, поверх него кладутся словари RDFS, SKOS и, наконец, OWL.

Спрашивать RDF-граф удобно на SPARQL — языке запросов по паттернам графа:

PREFIX ex: <http://example.com/analytics#> SELECT ?client (SUM(?amount) AS ?total)WHERE {  ?client a ex:Client ;          ex:madeOrder ?order .  ?order ex:hasAmount ?amount .}GROUP BY ?clientORDER BY DESC(?total)

RDF хватает, когда нужно связать данные из разных систем, построить lineage или лёгкий knowledge graph для поиска. Формальная логика там не обязательна.

OWL: логика, которая умеет думать

OWL — Web Ontology Language — надстройка над RDF со строгой логикой. RDF говорит «этот клиент сделал этот заказ». OWL говорит «клиент и заказ — разные классы, у заказа не может быть клиента, а у клиента не бывает двух биологических матерей».

Вот та же онтология, но уже с классами и правилами:

@prefix owl: <http://www.w3.org/2002/07/owl#> .@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .@prefix ex: <http://example.com/analytics#> . ex:Client a owl:Class .ex:Company a owl:Class ;    rdfs:subClassOf ex:Client .ex:Order a owl:Class . ex:madeOrder a owl:ObjectProperty ;    rdfs:domain ex:Client ;    rdfs:range ex:Order . ex:hasAmount a owl:DatatypeProperty . ex:Client owl:disjointWith ex:Order .

Свойствам можно задавать характеристики: functional (у клиента один основной менеджер), transitive («владеет» — транзитивно), symmetric («партнёр» — симметрично), inverse («владеет» ↔ «принадлежит»). Reasoner — движок логического вывода — использует их, чтобы выводить новые факты:

ex:owns a owl:ObjectProperty, owl:TransitiveProperty ;    rdfs:domain ex:Holding ;    rdfs:range ex:Company . ex:holding-1 ex:owns ex:daughter-1 .ex:daughter-1 ex:owns ex:service-2 . # reasoner сам выведет: ex:holding-1 ex:owns ex:service-2

OWL основан на description logic — формальной логике с понятными вычислительными свойствами. Это значит, что reasoner может:

  • проверить онтологию на противоречия (нельзя быть одновременно «клиентом» и «заказом»);
  • классифицировать сущности (этот объект — «крупный клиент» или «обычный»);
  • достроить неявные связи, которых нет в исходных данных.

Важный нюанс — open world assumption. В реляционном мире «не записано» значит «ложь». В OWL «не записано» значит «неизвестно». Поэтому два разных URI могут оказаться одним объектом — для этого есть owl:sameAs.

Полный OWL 2 бывает тяжёлым, поэтому есть профили под задачи: OWL 2 EL — быстрая классификация для больших онтологий, OWL 2 QL — эффективные запросы поверх реляционных баз, OWL 2 RL — масштабируемые правила. Начинать можно с малого: импорт чужих онтологий позволяет собирать домен из модулей, а не лепить монолит.

RDF или OWL?

RDF OWL
Роль Модель данных Язык онтологий
Что делает Хранит утверждения «субъект-предикат-объект» Определяет смысл и ограничения этих утверждений
Выразительность Простая, без сложной логики Классы, подклассы, ограничения, характеристики свойств
Вывод Ограниченный (RDFS) Reasoner: проверка противоречий, классификация, инференс
Стиль моделирования Гибкий, каждый моделирует как хочет Дисциплинированный, формальный

На практике это не «или-или», а «насколько глубоко вам нужно». RDF хорош как интеграционный слой: lineage, каталоги, связывание систем. OWL подключают туда, где важны согласованность и правила: регуляторика, сложные продукты, управление мастер-данными. Классическая связка — RDF снизу, OWL сверху.

Не нужно пугаться. Для большинства проектов достаточно описать схему понятий и связей в YAML или JSON, а RDF/OWL — это уже уровень формальной строгости, к которому приходят, когда масштаб и требования к выводам растут.

С чего начать

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

  1. Выпишите ключевые понятия бизнеса: клиент, заказ, продукт, выручка, прибыль, отток.
  2. Определите связи между ними: кто кому принадлежит, что из чего следует.
  3. Свяжите с метриками в семантическом слое: каждое понятие должно указывать на конкретные метрики и формулы.
  4. Подключите к ИИ-агенту: отдайте онтологию как контекст вместе с определениями метрик.

Практический лайфхак: не нужно сразу строить полную онтологию «сверху вниз». Достаточно серии уточняющих вопросов предметному эксперту — «что такое клиент в отделе продаж?», «а в биллинге?», «как связаны заказ и платёж?». Двадцать таких вопросов дают рабочую онтологию, с которой LLM перестаёт каждый раз заново угадывать семантику ваших данных.

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

Итог

Онтология — это следующий шаг эволюции семантического слоя в эпоху ИИ. Она даёт машинам не только слова, но и связи между ними. В паре с семантическим слоем она превращает Text-to-SQL из лотереи в предсказуемую инженерию, а вашего ИИ-ассистента — из генератора случайных запросов в эксперта по вашему бизнесу.

Метафора напоследок: семантический слой даёт ИИ калькулятор и аккуратно подписанную таблицу. Онтология даёт ему диплом бизнес-школы и карту рынка. С первым он — исполнительный репортёр, который честно докладывает цифры. Со вторым — стратег, который видит причины и предлагает решения. Выбирайте, с кем разговаривать.