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:
    1. Агент парсинга анамнеза: извлечение списка сопутствующих патологий и текущей терапии.
    2. Агент графовой верификации: запрос подграфа рисков из Neo4j.
    3. Агент клинического арбитража: проверка дозировок и тяжести взаимодействий.
    4. Агент генерации отчета: составление обоснования со ссылками на пункты рекомендаций.
  • Тестирование: сборка датасета из 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 часа»).

5. Мобильное приложение

6. Multi-agent debate