Перейти к содержанию

Trust First — архитектурная философия Lyumi

Зафиксировано: 2 мая 2026, поздний вечер. Контекст: после марафонского дня (8 sprint'ов, BiOT 90%, reasoning layer deployed) ночной разговор привёл к moral pivot — не «как сделать продукт привлекательным для продажи», а «как сделать продукт за который не стыдно».

Этот документ — не roadmap, не execution plan. Это философский фундамент Lyumi, к которому можно возвращаться через 6 месяцев / год / при принятии любых архитектурных решений. Roadmap живёт в lyumi/sprints/2026-05-02-sprint-truth-roadmap. Здесь — почему.


Главный принцип

Lyumi не должна быть «как все, только умнее». Lyumi должна быть инструментом, которому можно доверять в compliance-домене.

Доверие здесь — не «общее ощущение», а техническое свойство:

  1. Lyumi не выдумывает ссылки на НПА (architectural guarantee, не promise)
  2. Lyumi умеет сказать «не знаю» когда retrieval не нашёл достаточно подтверждённых источников
  3. Lyumi различает что есть норма, что есть вывод, что есть мнение
  4. Lyumi показывает свои источники (verbatim quote + ссылка), а не пересказывает с риском искажения

Всё остальное — accuracy, скорость, стоимость, NPA citation rate — производные от этого принципа.


Корневой инсайт — bottleneck не в моделях

Доказательства из тестов 2 мая:

  1. Opus subset test: 6 из 7 wrong-id Sonnet и Opus сошлись на ОДНОМ И ТОМ ЖЕ неправильном ответе. Convergent failure → проблема не в reasoning, а в retrieval.
  2. Voyage rerank Run 4: идентичная accuracy с Cohere (76.8%, 63 correct, 18/19 wrong-ids совпадают). Замена реранкера эффект ≈ 0pp.
  3. Reflection лог: «Фантомный приказ МТСЗН №109 от 31.03.2022», «Ложная ссылка на СП РК 1.03-106-2012». Phantom rate существует несмотря на 184 НПА в базе.

Вывод: замена модели — band-aid. Замена реранкера — не помогает. Расширение базы — не помогает. Промптом (level 0-1 enforcement) лечится плохо.

Нужен architectural enforcement на уровне 2-4 (mechanical filter / JSON schema / tool-use forced citation / server-side verification).

Прямая цитата от Камала: «промпты не работают, нужно на уровне спинного мозга».


6 типов hallucination — карта проблем

Один из главных результатов разговора 2 мая — разделение hallucination на дискретные классы. Это не один баг, это семь.

# Тип Что это значит Compliance impact
1 Phantom NPA citation Бот приводит несуществующий приказ или статью Fatal — бесполезен в любом юридическом контексте
2 Paraphrase distorts meaning Корректный источник, но пересказ искажает смысл High — особенно опасно в сложных формулировках
3 Wrong reasoning around correct citation Правильная статья, но вывод из неё неверный High — кейс СИЗ/ТР ТС 019 (2 мая утром)
4 Mixed correct + incorrect claims Ответ частично прав, частично выдуман Medium-high — юзер не знает где правда
5 Отсутствие «не знаю» refusal Бот уверенно отвечает когда не должен Critical — главный fingerprint untrustworthy AI
6 Retrieval of wrong document Достали не тот чанк, бот ответил по нему High — главный bottleneck Lyumi (доказано)
extra Numerical reasoning errors Высоты, концентрации, сроки, статьи путаются Domain-specific — HSE особенно чувствителен

Каждый тип лечится разными механизмами. Citations API закрывает только #1 (на 99%+). Остальные требуют отдельных решений.


Принципы решений

1. Architectural enforcement > prompt instructions

Когда Lyumi регулярно делает ошибку, запрос не «как переписать промпт», а «какой mechanical filter / JSON schema / tool / API guarantee» гарантирует невозможность этой ошибки.

Это та же логика, что v4 SQL для номеров статей: вместо «не путай ТК и УК» в промпте — структурированная база с code_type metadata.

2. Refusal — first-class capability

«Не знаю» — это не failure mode, это функция продукта. Бот, который умеет отказаться, доверительнее бота, который всегда отвечает. Refusal должен быть встроен архитектурно (через should_refuse() на уровне retrieval score), не как промпт-инструкция.

3. Verifiability > convenience

Юзер должен видеть verbatim quote из НПА, не доверять пересказу. Это медленнее, длиннее, менее «гладко» — но проверяемо. В compliance-домене проверяемость > pleasant UX.

4. Coverage gaps признаются открыто

Вместо «делаем вид что покрываем всё» — явное разграничение что Lyumi знает (через retrieval) и не знает (refuse). Юзер должен понимать границы инструмента.

5. No paraphrased reasoning без оригинала

Каждый factual claim в ответе должен иметь supporting citation. Без citation → mark_as_unsupported или strip. Юзер видит «✅ Поддержанные» vs «⚠️ Неподдержанные» части ответа.


Что НЕ является trust

  • «90% accuracy на BiOT» — это competence на MCQ, не trust в проде
  • «80% NPA citation» — лучше 0% у Gemini, но всё равно 20% потенциально неправильных
  • «Reflection layer ловит ошибки» — pre-deployment safety net, а не trust по умолчанию
  • «У нас 184 НПА в базе» — coverage, не correctness
  • «Бот вежливо извиняется когда ошибся» — это UX, не архитектура

Trust — это техническая невозможность определённых классов ошибок. Не снижение вероятности, а архитектурная гарантия.


Personal stance Камала

Это часть документа, потому что архитектурная философия отражает позицию основателя.

«Я не готов за неё платить». Камал сам не в target audience — он эксперт с 20+ лет HSE-опыта, ChatGPT good enough для его собственных задач. Lyumi — для junior'ов и middle-специалистов в HSE-нише КЗ нефтегаза, которым нужна юридически корректная привязка к НПА.

«Реклама неправды, не готов стоять за продуктом». Это написано после BiOT 90%. То есть триумфальный результат не отменил sense что в проде phantom rate всё равно слишком высок. Sprint Truth = restore integrity.

«Не хочу за неё деньги, хочу чтобы реально работало». Это moral pivot от B2B SaaS / pilot frame. Lyumi пока не оптимизируется под продажу — оптимизируется под correctness. Бизнес-стратегия lyumi/strategy_2026 требует ревизии под этот сдвиг (TODO).


Следствия для всех будущих решений

Когда возникает архитектурный выбор — спрашивать не «какой вариант быстрее / точнее на eval», а:

  1. Какой вариант делает определённый класс ошибок невозможным?
  2. Какой вариант позволяет боту явно сказать «не знаю»?
  3. Какой вариант показывает юзеру источник, а не пересказ?
  4. Какой вариант делает проверку независимой от LLM-prior?

Если ответы «никакой» — решение не архитектурное, оно patch-уровня. Принимать осознанно, документировать как temporary.


Что НЕ делаем (вытекает из философии)

  • ❌ Не роутим больше на Opus как «спасение качества» — модель не bottleneck
  • ❌ Не меняем reranker как silver bullet — реранкер effect ≈ 0pp
  • ❌ Не добавляем больше НПА чтобы «закрыть пробелы» — coverage не trust
  • ❌ Не пивим в B2B SaaS / showcase до восстановления integrity
  • ❌ Не делаем fine-tune custom model как replacement архитектуры — overkill, не лечит retrieval
  • ❌ Не идём в GraphRAG как «модный» паттерн — research track, Q3+

Связанные документы

  • [[lyumi/sprints/2026-05-02-sprint-truth-roadmap]] — execution plan этой философии (9 тасков, timeline, ROI оценки)
  • [[lyumi/v4_structured_retrieval]] — первая архитектурная победа (factual grounding через SQL)
  • [[lyumi/reasoning_layer_design]] — второй слой (reasoning correctness через rules файл)
  • [[lyumi/sprints/2026-05-02-biot-eval]] — accuracy benchmark, не trust benchmark
  • [[lyumi/strategy_2026]] — устарела частично, требует ревизии под trust-first frame

Возврат к этому документу

Если через месяц Lyumi показывает 95% accuracy, но у юзера в Telegram появилась хотя бы одна phantom citation — этот документ выиграл. Если 80% accuracy и 0 phantom — этот документ выиграл больше.

Цель — не самая умная Lyumi. Цель — самая trustworthy Lyumi для compliance-домена.

Всё остальное вторично.