MVP-версия
Функции первого релиза:
- Ввод понятий (Concept, Skill, Example), приемы мышления (связь между понятиями), системный промпт, примеры через шаблон;
- SHACL-валидация (название, перевод, пример, связь);
- Генерация раздела универсального руководства с использованием шаблонов (intro, explain, task, check);
- Создание пользовательского профиля стажёра (чек-лист);
- Адаптивная траектория (подбор тем по сложности);
- Простое отображение траектории и прогресса;
- Сбор событий обучения (xAPI).
Мета-мета-модель и МетаУ-модель
У проекта есть описание MVP так что можно уже пробовать описать отдельные его этапы. Я начну с графа знаний.
У меня немного изменилось видение относительно архитектуры графа, но в целом идея автора осталась той же. В графе предполагается 2 слоя(если так можно выразиться) с метками
- :CoreConcept(мета-мета) - трансдисциплинарные понятия, которые никогда не расходяться между разными курсами. Не знаю какое кол-во понятий должно быть в mvp, но по ощущениям - это 30-50.
- :DomainConcept - понятия конкретного курса. Меняются чаще и могут конфликтовать по названию, но не по IRI.
Т.е. понятие core:Emergence и course-sm-01:Emergence - это 2 разных понятия с разными описаниями
Паспорт узла
• iri — строка формата https://example.org/concept/{slug}
• name_ru — название понятия.
• purpose_ru — назначение / зачем нужно.
• conceptType — тип (enum или строка).
• usageContext_ru — где применяется.
• synonyms_ru — список синонимов.
• not_this_ru — чем НЕ является.
• definition_ru — определение ≤ 600 симв.
• summary_ru — краткая выжимка (опционально).
• example_ru — мини-кейс 1-2 предложения.
• promptHint_ru — совет по использованию в промптах.
• opposite_ru — противоположное по смыслу.
• metaphor_ru — образ / метафора.
• formula_ru — формула / признак (если применимо).
• difficulty — целое 0-5.
• bloom — одно из {Remember, Understand, Apply, Analyze, Evaluate, Create}.
• solo — одно из {Prestructural, Unistructural, Multistructural, Relational, Extended_Abstract}.
• dok — целое 1-4 (глубина знаний Вебба).
• fink — массив из {Foundational_Knowledge, Application, Integration, Human_Dimension, Caring, Learning_to_Learn}.
• marzano — одно из {Retrieval, Comprehension, Analysis, Knowledge_Utilization}.
• version — всегда "1.0".
• related_concepts — массив объектов {relation, target_concept}, relation ∈
{IS_A, PART_OF, RELATES_TO, HAS_EXAMPLE, ALIGNS_WITH}.
• examples — объект {positive_ru: ["..."], negative_ru: ["..."]}.
• discipline — объект {name_ru, level}, level ∈ {L2, L3}.
О свойствах marzano, fink, dok, solo и bloom написано тут
Типы связей
- :IS_A - для родственных связей (как в биологии: кошка → животное)
- :PART_OF - когда что-то физически входит в состав другого
- :RELATES_TO - любая интересная связь между понятиями
- :HAS_EXAMPLE - добавляем конкретные примеры для понятий
- :ALIGNS_WITH - помогаем соотнести наши термины с общепринятыми
Такая архитектура будет экономной и “вытянется” то, что действительно нужно. Что из перечисленного будет храниться для RAG:
- summary каждого понятия(свойство в neo4j) - Короткий факт для LLM
- Embedding - Быстрый поиск похожих понятий/примеров.
- Узел :Example {text, embedding} - кейсы
- Связи - :PART_OF, :IS_A, :ALIGNS_WITH
Есть предложение от волонтеров еще добавить свойство Это не это c перечислением того, что не является понятием(данным узлом)
к понятию
? TTL-файлы + Git — проще, чем хранить историю в графе.