Vision - MedGraphRag/med-graph-rag GitHub Wiki
PROJECT VISION & ROADMAP: MedGraphRAG
1. Постановка проблемы
| Проблема | Пациенты с несколькими заболеваниями не могут безопасно проверить совместимость выписанных разными врачами лекарств: универсальные LLM выдают опасные для жизни галлюцинации, а аптечные справочники (Видаль, РЛС) заставляют читать десятки страниц неструктурированных инструкций. | | Кого касается | Люди с сопутствующими диагнозами, принимающие несколько препаратов одновременно. | | Последствия | Побочные эффекты, взаимная нейтрализация лекарств. | | Решение | GraphRAG-сервис: автоматическая проверка списка лекарств по графу официальных клинических рекомендаций Минздрава РФ (МКБ-10 + ГРЛС в Neo4j) с прямым указанием рисков без галлюцинаций. |
2. Границы проекта
Входит в проект:
- Парсинг официальных клинических рекомендаций Минздрава РФ (
cr.minzdrav.gov.ru) по выбранным терапевтическим нозологиям (кардиология, эндокринология). - Онтологическая привязка диагнозов к МКБ-10 и торговых марок лекарств к действующим веществам (МНН) из реестра ГРЛС.
- Автоматический вывод транзитивных противопоказаний по дереву МКБ-10 в Neo4j.
- Мультиагентный анализ анамнеза через LangGraph с проверкой фактологической точности (Faithfulness).
- Сравнительный бенчмаркинг (GraphRAG против классического RAG и чистого LLM) на 50 клинических кейсах.
Не входит в проект (Non-Goals):
- Прямая постановка диагнозов: система только проверяет совместимость уже выбранных препаратов с указанными диагнозами.
- Распознавание рукописных рецептов (OCR): на вход подаются нормализованные текстовые данные.
- Использование как сертифицированного медицинского изделия: проект носит статус исследовательского прототипа.
3. Направления разработки
1: Инженерия данных и онтологический NLP-пайплайн (Python / NLP)
- Парсинг неструктурированных клинических гайдлайнов: извлечение таблиц, схем дозирования и списков ограничений из 50+ официальных документов Минздрава РФ.
- Нормализация терминов (Entity Resolution): сопоставление торговых марок с реестром МНН ГРЛС и привязка формулировок болезней к кодам МКБ-10 через комбинацию эвристик и векторных эмбеддингов (
sentence-transformers). - Оценка качества экстракции: разметка тестовой выборки и расчет метрик полноты/точности извлечения медицинских сущностей (NER F1-score).
2: Графовое моделирование и логический вывод (Neo4j / Ontologies)
- Проектирование онтологии: классы
Disease(иерархия МКБ-10),Drug(действующее вещество МНН),Interaction(межлекарственное взаимодействие),Symptom. - Онтологический вывод (Inference): реализация транзитивного распространения ограничений (если препарат противопоказан для родительского класса МКБ-10, он автоматически противопоказан для всех дочерних нозологий).
- GraphRAG Query Engine: оптимизированные Cypher-запросы для поиска k-hop путей несовместимости при пересечении $N$ диагнозов и $M$ препаратов.
3: Мультиагентный контур, бенчмарк и UI (LangGraph / Evaluation)
- Стейт-машина LangGraph:
- Агент парсинга анамнеза: извлечение списка сопутствующих патологий и текущей терапии.
- Агент графовой верификации: запрос подграфа рисков из Neo4j.
- Агент клинического арбитража: проверка дозировок и тяжести взаимодействий.
- Агент генерации отчета: составление обоснования со ссылками на пункты рекомендаций.
- Тестирование: сборка датасета из 50 сложных коморбидных кейсов (случаи, на которых обычные LLM допускают опасные назначения).
- Бенчмаркинг: автоматический замер метрик Ragas (Faithfulness, Context Recall) и интерфейс на Streamlit.
4. Roadmap
1-й СЕМЕСТР: База данных, онтология и первый вертикальный срез
- 1. Сбор данных и онтологическая схема
- Выгрузка корпуса клинических рекомендаций по кардиологии и эндокринологии с сайта Минздрава, парсинг реестра МНН ГРЛС.
- Развертывание Neo4j в Docker, загрузка иерархического дерева МКБ-10, проектирование схемы связей
[:CONTRAINDICATED_WITH],[:INTERACTS_WITH]. - Базовый интерфейс Streamlit (форма ввода диагнозов и списка препаратов), настройка доступа к API моделей (Groq/DeepSeek).
- 2. Экстракция связей и логический вывод
- Извлечение триплетов
(Препарат) -> [:ПРОТИВОПОКАЗАН] -> (Заболевание)через LLM с Pydantic-схемами (Instructor). - Реализация Cypher-логики транзитивного наследования противопоказаний по дереву классов МКБ-10.
- Промпт-инжиниринг базового агента-проверяльщика, исключение галлюцинаций через подачу изолированного подграфа из Neo4j.
- Извлечение триплетов
- 3. Сквозной MVP и валидация связей
- Нормализация и склейка названий препаратов через эмбеддинги.
- Заливка первых 5 000 проверенных связей в Neo4j, оптимизация индексов.
- Сборка MVP:
Ввод 2 диагнозов + препарата -> Neo4j находит путь противопоказания -> LLM выдает объяснение -> вывод в UI. Промежуточная защита.
2-й СЕМЕСТР: Мультиагенты, полипрагмазия и научный эксперимент
- 4. Мультиагентный контур (LangGraph)
- Расширение корпуса текстов: добавление разделов межлекарственных взаимодействий (DDI).
- Реализация проверки полипрагмазии (граф одновременного приема 3+ препаратов и взаимного усиления токсичности).
- Стейт-машина в LangGraph: распределение ролей между агентом извлечения анамнеза, графовым верификатором и составителем отчета.
- 5. Бенчмарк
- Очистка графа, вычисление метрик качества извлечения сущностей (Precision/Recall парсинга).
- Экспорт онтологии в формат OWL/RDF, проверка непротиворечивости через внешний резонер.
- Формирование выборки из 50 сложных клинических тестов, запуск оценки по фреймворку Ragas (замер фактологической точности).
5 Перспективы развития проекта
1. Учет показателей анализов (Численные ограничения)
- Сейчас: жесткая проверка «Препарат запрещен при болезни X».
- Развитие: учет конкретных цифр из бланка анализов (Инвитро, Гемотест).
Пользователь вводит показатель из анализа крови (например, креатинин или билирубин) $\to$ система корректирует дозировку или предупреждает о перегрузке почек/печени.
2. Распознавание упаковок и штрихкодов
- Пользователь не вбивает сложные названия руками, а наводит камеру на коробку таблеток или штрихкод.
- Печатный текст на пачке или штрихкод распознается стандартными библиотеками со 100% точностью и сразу переводится в МНН.
3. Автоматический подбор безопасных аналогов
- Если система выявила, что выписанный препарат несовместим с диагнозом, она не просто выдает запрет, а ищет по графу альтернативу:
Находит препарат из той же клинико-фармакологической группы, у которого нет данного противопоказания.
4. Временные интервалы приема
- Для препаратов, которые нейтрализуют друг друга в желудке (например, антибиотики и антациды/железо): система подсказывает безопасный график приема («разнесите прием этих таблеток минимум на 3 часа»).