Тип:Внутрішній експеримент з архітектури AI-продуктуСтатус:activeКонтекст:Внутрішня розробка

Perfume Engine: доказовий recommendation prototype без runtime-LLM

Perfume Engine починався як значно ширша fragrance-intelligence ідея, але на одному з етапів був навмисно звужений до контрольованого validation prototype: 12 perfume identities, 6–8 editorial mappings, exact search, ручна доказова база та deterministic recommendation logic. Мета експерименту полягала не в тому, щоб додати LLM до кожного кроку, а в тому, щоб перевірити, чи можна зробити recommendation system пояснюваною, відтворюваною та provenance-first. Згодом сам Perfume Engine розвинувся в значно ширшу систему, тому ця study документує конкретний історичний architecture experiment, а не поточну повну product architecture.

Задача та контекст

Перевірити, чи здатна система рекомендацій парфумерних альтернатив формувати обґрунтовані висновки без злиття фактів із першоджерел, експертних оцінок, системних умовиводів та ступеня невизначеності в єдину непрозору «відповідь моделі». Головне запитання: чи може рекомендаційний інтерфейс залишатися корисним, якщо кожне публічне твердження має явне походження (provenance) та детерміновану межу логічного виведення?

Чому це складно

Парфумерні сутності мають значну неоднозначність через фланкери, концентрації та синонімічні назви; зв’язки подібності не є простими фактами; доказова база може втрачати актуальність або відкликатися; алгоритмічну впевненість не можна маскувати під фальшиву ймовірність; генеративна модель схильна змішувати фактологію з галюцинаціями; а валідаційний прототип мав залишатися реалізовним для соло-інженера в межах жорсткого бюджету та обсягу.

Системні та операційні обмеження

  • Рівно 12 парфумерних сутностей у валідаційному наборі даних
  • 6–8 цільових експертних зв’язків альтернатив у прототипі
  • Анонімний публічний доступ лише для читання
  • Ручна фіксація доказів та тверджень із першоджерел
  • Концепція редакторської валідації двома незалежними асесорами
  • Виключно точний нормалізований пошук (exact search)
  • Незмінна проекція публічних даних із контентним хешуванням
  • Повна відсутність LLM у runtime-контурі запиту
  • Відсутність векторних ембедінгів та наближеного пошуку
  • Заборона автоматично згенерованих зв’язків альтернатив
  • Відсутність автоматичного парсингу/скрейпінгу в історичному прототипі
  • Відсутність динамічних цін, відгуків чи соцданих у runtime прототипу
  • Fail-closed публікація: блокування випуску при збої валідації чи браку доказів

Архітектура та системні межі

Ключовий технологічний стек:
TypeScriptDeterministic Search EngineNormalized Claim EngineContent-Hashed Release ProjectionZero Runtime LLM
Що створено та протестовано:

Контрольований конвеєр: первинні докази → нормалізовані твердження → експертна оцінка → детерміноване виведення → валідована публічна проекція → точний пошук → граф альтернатив → публічне пояснення походження кожного зв’язку.

Архітектурні артефакти:
  • Функціональна архітектура та модель даних
  • Модель походження тверджень (Claim-Level Provenance)
  • Архітектура даних, пошуку та виведення
  • Контракт нормалізації та точного пошуку
  • Правила узгодження та розрахунку впевненості
  • Модель публічної проекції та незмінного релізу
  • Правила відкликання даних та fail-closed поведінки

Контекст дослідження та історичні межі

Цей документ фіксує результати раннього валідаційного прототипу Perfume Engine — експерименту, спрямованого на перевірку концепції рекомендацій із явним доказовим слідом (claim-level provenance).

Важливе застереження про статус: Ця публікація аналізує виключно історичний архітектурний прототип (12 парфумерних профілів, детермінований пошук, статична проекція). Пізніші фази розробки Perfume Engine вийшли далеко за межі цих обмежень, сформувавши значно масштабнішу систему. Наступний аудит продуктового дизайну та користувацького досвіду показав, що компактний прототип не є фінальним продуктовим контрактом, що ініціювало окремий етап відновлення (recovery). Цей розбір документує саме інженерні рішення щодо ізоляції доказів від генеративних моделей, а не поточний комерційний реліз.


Проблема: розмивання меж між фактом, судженням та вигадкою

Більшість сучасних рекомендаційних систем та споживчих AI-інтерфейсів працюють як непрозорі статистичні агрегатори. Користувачеві надається готова відповідь або перелік альтернатив, проте неможливо з’ясувати:

  1. Що з наданого є перевіреним фактом (наприклад, склад піраміди ароматів, зафіксований виробником)?
  2. Що є суб’єктивною оцінкою експерта чи парфумерного критика?
  3. Що є висновком системного алгоритму на основі схожості профілів?
  4. Який реальний рівень невизначеності стоїть за рекомендацією?

При використанні генеративних LLM у runtime-контурі ця проблема загострюється: модель формулює правдоподібні, але невідтворювані пояснення («цей аромат схожий, бо має спільну амброву глибину»), які не мають під собою верифікованої доказової бази.

Мета інженерного прототипу полягала у створенні протилежної моделі — системи, де кожен крок рекомендації є строго простежуваним, алгоритм працює без генеративних галюцинацій, а публікація даних блокується за найменшої невідповідності доказовому контракту.


Архітектурний конвеєр: 5 рівнів ізоляції даних

Для усунення стохастичності в обробці знань архітектура прототипу була розділена на п’ять строго розмежованих рівнів:

[Рівень 1: Сирі джерела]
       ↓ (Ручна фіксація, URL першоджерела, дата)
[Рівень 2: Нормалізовані твердження (Claims)]
       ↓ (Канонізація сутностей, розв'язання синонімів)
[Рівень 3: Редакторська верифікація (Editorial Assessment)]
       ↓ (Правило двох асесорів, фіксація згоди)
[Рівень 4: Детерміноване виведення (Deterministic Inference)]
       ↓ (Версіоновані правила розрахунку подібності)
[Рівень 5: Публічна незмінна проекція (Immutable Projection)]
       ↓ (Контентне хешування, fail-closed реліз)
[Кінцевий користувач: точний пошук та граф альтернатив]

1. Сирі докази (Raw Evidence)

Кожне твердження про аромат (ноти, концентрація, рік випуску, бренд) реєструється як атомарний запис із посиланням на офіційне джерело (специфікація виробника або верифікована експертна база). Прямий доступ до сирих записів із публічного контуру заборонено.

2. Нормалізовані твердження (Normalized Claims)

Парфумерний домен перенасичений синонімами та варіаціями назв («бергамот», «калабрійський бергамот», «цитрусовий акорд»). На цьому рівні застосовувався строгий словник сутностей. Жоден ненормалізований термін не допускався до етапу зіставлення.

3. Редакторська оцінка (Editorial Assessment)

Зв’язок подібності між двома парфумами не є фізичним фактом — це завжди оціночне судження. У прототипі було впроваджено концепцію згоди двох незалежних оцінювачів. Твердження про подібність ставало валідним лише тоді, коли обидва асесори підтверджували схожість за фіксованими осями (характер звучання, домінантні акорди, сезонність).

4. Детерміноване виведення (Deterministic Inference)

Замість навчання нейромережі чи обчислення косинусної відстані між непрозорими ембедінгами, прототип використовував прозорі, версіоновані формули:

  • Індекс перекриття акордів (Jaccard-подібність на нормалізованих множинах);
  • Коефіцієнт експертної згоди (ваговий множник збігу оцінок);
  • Шкала впевненості (Confidence Score), яка відображала повноту зібраної доказової бази, а не статистичну ймовірність.

5. Незмінна проекція та Fail-Closed реліз

Готові результати компілювалися в статичний JSON-артефакт із розрахунком SHA-256 хешу. Якщо будь-який запис мав незаповнене поле джерела, нерозв’язаний конфлікт оцінок або порушену схему, процес збирання релізу переривався з помилкою (fail-closed). Невалідні дані не могли потрапити до клієнтського інтерфейсу ні за яких обставин.


Чому відмова від LLM у runtime була інженерною перевагою

Рішення не використовувати LLM у контурі відповіді на запит користувача було свідомим архітектурним вибором:

  1. Передбачуваність витрат: Вартість запиту до детермінованої структури даних дорівнює нулю і не залежить від тарифів API чи розміру контекстного вікна.
  2. Нульова латентність: Відповідь на точний запит формується за мікросекунди без очікування генерації токенів.
  3. 100% відтворюваність: Два однакових запити в один і той самий момент часу гарантовано повертають абсолютно однаковий результат і однакове пояснення.
  4. Захист від галюцинацій: Система фізично не здатна «придумати» спільну ноту, якої немає у вихідних сертифікованих специфікаціях ароматів.

Аналіз відмов та обмеження експерименту

Головна цінність валідаційного прототипу полягала у виявленні меж застосування обраного підходу:

  • Проблема надмірної строhostі (Exact Search Trap): Точний пошук без підтримки друкарських помилок чи синонімів на стороні клієнта виявився вкрай незручним для реальних користувачів. Люди часто не знають точної назви фланкера (наприклад, плутають Eau de Toilette та Eau de Parfum).
  • Економіка ручної верифікації: Модель із ручним заповненням та подвійним асесментом чудово працює на 12 сутностях, але стає надзвичайно дорогою при масштабуванні до 10 000 найменувань.
  • Розрив між технічним успіхом та продуктовою цінністю: Прототип бездоганно пройшов усі внутрішні тести валідації та цілісності даних. Проте наступний аудит продуктового напрямку показав, що сама по собі технічна коректність не створює привабливого продукту без багатого користувацького інтерфейсу, гнучкого пошуку та достатнього обсягу каталогу.

Висновки для архітектури AI-продуктів

Експеримент Perfume Engine наочно продемонстрував ключовий принцип сучасної інженерії систем знань: інтелект системи полягає не в кількості згенерованого тексту, а в чіткості меж між тим, що система знає достовірно, і тим, що є припущенням.

Детерміновані механізми виведення залишаються незамінним інструментом там, де ціна помилки висока, а користувач вимагає прозорих і юридично обґрунтованих пояснень кожного кроку рекомендації.

Ключові інженерні рішення та компроміси

01

Розділення сирих доказів, нормалізованих тверджень, редакторських оцінок та системного виведення на ізольовані класи даних.

02

Свідома відмова від runtime-LLM та векторних ембедінгів на користь детермінованої логіки для звуженого простору рішень.

03

Fail-closed проекція: кандидат на реліз блокується, якщо не проходить валідацію схеми, ідентичності, походження, актуальності чи редакторської згоди.

04

Заборона генерації зв’язків: альтернативи витягуються виключно з верифікованого графа зв’язків.

05

Версіонування формул: алгоритми згоди, впевненості та ранжування зафіксовані як версіоновані специфікації, а не приховані евристики.

Розглянуті альтернативи та причини відмови

  • Використання генеративної LLM у runtime для синтезу рекомендацій (відхилено через ризик галюцинацій та відсутність гарантій повторюваності).
  • Векторні ембедінги та семантичний пошук (відхилено через нездатність пояснити причину подібності на рівні конкретних нот та акордів).
  • Нечіткий (fuzzy) пошук без нормалізації (відхилено через змішування споріднених фланкерів та концентрацій).
  • Автоматично згенеровані мапінги парфумів (відхилено через неприйнятність неперевірених тверджень у доказовому шарі).
  • Автоматизований скрапінг форумів та відгуків (відхилено через шум, суперечливість та юридичну невизначеність даних).
  • Розподілена інфраструктура з базами даних та чергами (відхилено як надлишкова для компактного валідаційного прототипу).
  • Універсальний процентний бал подібності (відхилено через оманливе враження математичної точності суб’єктивного сприйняття).

Режими відмов та відомі обмеження

Виявлені режими відмов

  • Надмірна жорсткість точного пошуку: незначна помилка у введенні користувача призводить до нульового результату замість релевантної підказки.
  • Низька репрезентативність вибірки: 12 сутностей недостатньо для перевірки ринкової корисності продукту широкою аудиторією.
  • Масштабованість ручної верифікації: редакторська модель із двома асесорами стає вузьким місцем при зростанні каталогу.
  • Ризик хибної інтерпретації метрик: відвідувачі схильні сприймати системну впевненість як об’єктивну ймовірність збігу.

Граничні умови

  • Цей прототип є історичним архітектурним експериментом, а не фінальним контрактом продукту Perfume Engine.
  • Пізніші етапи розробки Perfume Engine суттєво розширили обсяг системи, додавши персистентну продуктово-дану архітектуру.
  • Власний огляд продукту на пізніших фазах визнав попередній досвід інтерфейсу недостатнім і запустив програму відновлення (recovery).
  • Зелені технічні тести та відповідність специфікаціям не означали автоматичної готовності продукту до публічного запуску.
  • Висновки прототипу підтверджують життєздатність архітектурного підходу, але не доводять комерційного успіху продукту.
  • Система не призначена для заміни лабораторної хімічної експертизи чи хроматографічного аналізу.

Верифікація та доказова база

Поточний стан проєкту

Стан:Валідований інженерний прототип
Життєвий цикл:Історичний валідаційний прототип; цільовий продукт згодом розвинувся за межі цієї архітектури

Висновки та архітектурні уроки

  • Не кожна інтелектуальна задача потребує залучення LLM: вузькі задачі часто ефективніше вирішуються детермінованими правилами.
  • Походження даних (provenance) має бути закладене у структуру моделі на рівні ядра, а не додаватися як текстова примітка post-factum.
  • Детерміноване виведення забезпечує повну відтворюваність та контрольованість результатів, критичну для довіри до рекомендацій.
  • Технічно коректний і валідований прототип може бути надто звуженим для кінцевого споживача (exact search, обмежений каталог).
  • Успішне проходження технічних тестів (PASS) не дорівнює продуктовій цінності, зручності інтерфейсу та готовності до релізу.
  • Звуження обсягу є правильним інструментом для швидкої перевірки гіпотез, проте експериментальні обмеження не повинні ставати постійною архітектурою.

Потрібен інженерний аудит вашої AI-архітектури?

Допомагаю технічним лідерам та інженерним командам верифікувати архітектури штучного інтелекту, усувати непередбачувані збої агентів та будувати детерміновані RAG-системи.