Как я построил AI-пайплайн для видео о здоровье. Часть 1
Представьте: человек долго живёт с загадочным или тяжелым заболеванием. Он ходит к врачам, возможно и проходит курс лечения. Но для него это недостаточно. Он хочет услышать того, кто через это уже прошёл.
В HealHub люди записывают видео о своём опыте со здоровьем. Другие описывают свои симптомы в приложении — и находят релевантные истории. Кто-то ищет ответы, кто-то — надежду, кто-то — просто ощущение, что он не один.
Проблема
Видео — это неструктурированный поток. Человек говорит двадцать минут, упоминает симптомы, триггеры, лечения — вперемешку, своими словами, с эмоциями и отступлениями.
Чтобы это можно было сопоставлять с другими видео, нужна структура. Не теги, расставленные вручную, а автоматически извлечённая картина: какие симптомы, какие состояния, что их вызывает, чем лечили, что помогло.
Что нужно было построить
Систему, которая:
— превращает транскрипт видео в структурированные данные
— сохраняет связи между сущностями, а не просто список
— работает на масштабе, без ручной разметки
— не требует клинической точности (это не диагностика), но требует связности и предсказуемости
Архитектура: общая картина
Пайплайн — это четыре LLM-прохода и детерминированный слой между ними:
1. Транскрипция — видео превращается в текст
2. Извлечение — LLM находит симптомы, состояния, части тела, триггеры, лечения
3. Нормализация — Comprehend Medical приводит сущности к кодам SnomedCT
4. Обогащение — второй LLM-проход вытаскивает атрибуты: тяжесть, длительность, частоту, статус, дозировку, побочные эффекты
5. Структурирование — третий проход собирает JSON со связями между сущностями
6. Контроль качества — четвёртый проход проверяет логическую целостность
7. Запись — данные уходят в Neo4j Neo4j хранит две вещи одновременно: граф связей (Триггер → Симптом → Состояние → Лечение) и векторные эмбеддинги транскрипта. Это даёт семантический поиск и навигацию по связям в одном хранилище.
Почему именно так
Три решения определили всю архитектуру:
— Не один мега-промпт, а четыре прохода. Когда LLM делает слишком много за раз, качество падает. Каждый проход решает одну задачу и делает это хорошо.
— Гибрид LLM + Comprehend Medical. LLM извлекает из естественного языка, Comprehend Medical даёт канонические коды. Ни один из них не справился бы в одиночку.
— Граф, а не список. Связи между сущностями — это и есть ценность. «Какие симптомы» — это поиск. «Что вызвало что и как лечилось» — это понимание.
Что дальше
Во втором посте разберу поток подробнее: что именно делает каждый проход, как устроен граф и почему Neo4j, а не отдельная векторная БД.
📩 Telegram: @kevnorm 🔗 LinkedIn: linkedin.com/in/kevinglick89