Дата публикации
ai_products

GraphRAG от Microsoft и Ollama: как собрать киберпанк-RAG из «Джонни-Мнемоника»

Что появилось / что изменилось

Автор несколько лет строит корпоративные RAG-системы и протестировал связку Microsoft GraphRAG + локальные LLM через Ollama на конкретном кейсе: рассказе Уильяма Гибсона Johnny Mnemonic.

Что именно удалось получить:

  • Граф знаний по тексту рассказа с сущностями и связями, выгруженный в graph.graphml и визуализированный в Gephi с алгоритмом Лейдена.
  • Тематические сообщества (кластеры), автоматически выделенные GraphRAG. В примере автор получил 15 сообществ, среди топовых:
    • «Yakuza, Sons of the Neon Chrysanthemum, and Ono-Sendai»;
    • «Johnny, Ralfi Face, and Related Entities»;
    • «Molly Millions, Ralfi, and the Drome».
  • Автоматические описания этих сообществ в community_reports.parquet — по сути, краткие аналитические сводки по сюжетным линиям и группам персонажей.
  • Глобальный поиск по графу: GraphRAG отвечает на вопросы, проходя по описаниям сообществ в режиме MapReduce и ссылкой на источники ([Data: Reports (5, 7, 12, 2, +more)]).
  • Локальный запуск LLM через Ollama: автор проверил, что RAG-цепочка «кое-как работает» даже на 4B-моделях, то есть на очень скромных вычислительных ресурсах.
  • Поддержка русского языка в ответах: автор подправил промпты local_search_system_prompt.txt и global_search_reduce_system_prompt.txt, и GraphRAG начал генерировать ответы по английскому графу уже на русском.

Итого: есть воспроизводимый пайплайн — от текста рассказа до графа знаний, сообществ, отчётов и диалогового поиска на русском поверх английского исходника.

Как это работает

GraphRAG строит поверх классического RAG дополнительный слой — граф знаний и тематические кластеры.

Ключевые шаги:

  1. Извлечение сущностей и связей из текста рассказа LLM-моделью, подключённой через Ollama. На выходе — набор узлов (персонажи, организации, места, объекты) и рёбер (типы отношений, конфликты, принадлежность, операции).
  2. Сборка графа и экспорт в graph.graphml. Этот файл автор открыл в Gephi и запустил алгоритм Лейдена для выделения сообществ. На графе видно, что узлы группируются только при буквальном совпадении имён:
    • Molly Millions не слилась с Molly;
    • Lo Tek отдельно от Lo Teks;
    • Ralfi Face отдельно от Ralfi. То есть нормализация сущностей минимальная.
  3. Тематические кластеры внутри GraphRAG. Параллельно GraphRAG сам группирует сущности по тематике, а не только по названию. Эти кластеры сохранены в community_reports.parquet и описаны натуральным языком.
  4. Глобальный поиск (MapReduce). При запросе вроде "What are the top cyberpunk elements in this story?" GraphRAG:
    • проходит по описаниям сообществ;
    • формирует промежуточные ответы (Map);
    • агрегирует их в итоговый ответ (Reduce);
    • прикладывает ссылки на отчёты (Reports (5, 7, 12, 2, +more)).
  5. Локальный запуск через Ollama. Все LLM-инференсы (извлечение сущностей, генерация описаний, ответы на вопросы) идут не в облако, а через Ollama. Автор подчёркивает: нижняя планка — 4B-модели, они тащат пайплайн, но с заметными ограничениями по качеству.
  6. Локализация ответов. Граф и отчёты — на английском, но ответы можно получать на русском, если:
    • LLM в Ollama уверенно отвечает по-русски;
    • эмбеддинги понимают английский запрос. При этом автор советует сами запросы формулировать по-английски — точность выше.

Что это значит для вас

Кому эта связка пригодится:

  • ML-инженерам и data scientist’ам в корпорациях. GraphRAG показывает, как выйти за пределы «голого» векторного поиска: вы получаете не только ближайшие пассы текста, а структурированную карту домена — сущности, связи, кластеры и отчёты. Это полезно для сложных корпоративных баз знаний, где важны связи между объектами.
  • Аналитикам и исследователям. Граф по «Johnny Mnemonic» автор оценил как результат нескольких дней работы аналитика. Для больших массивов текстов (отчёты, регламенты, тикеты) GraphRAG может сэкономить много часов ручного картирования сущностей и связей.
  • Разработчикам, тестирующим RAG в локальном окружении. Ollama позволяет прогнать весь стек на офисном ПК или даже хорошем ноутбуке. Если в проде у вас GPU-кластеры, а локально только CPU, этот опыт даёт реальное чувство «нижней планки» по качеству.

На что обратить внимание:

  • Векторный поиск не исчезает. GraphRAG не «убивает» вектора, а дополняет их графовым уровнем. Классический vector search всё ещё нужен, но его слабые места — поиск сложных, многошаговых связей — закрывает граф.
  • Качество сущностей и кластеров зависит от LLM. На 4B-модели:
    • не происходит слияния схожих сущностей (Molly vs Molly Millions);
    • возможны неточности в описаниях сообществ. Если вы строите граф для продакшена, лучше сразу закладываться на более крупную модель в Ollama или выносить часть вычислений в облако.
  • Язык запросов. Сами данные и кластеры — на английском. Русские ответы поверх английского графа работают, но точность выше, если писать запросы по-английски.
  • Доступность. GraphRAG и Ollama можно поднять локально. Никаких прямых ограничений вроде регионального бана в описанном опыте нет, но при скачивании моделей через Ollama может пригодиться VPN.

Если вы строите RAG-систему для внутренней документации, техподдержки, расследований инцидентов или исследуете сложные сюжеты (как в киберпанке Гибсона), GraphRAG даст вам надстройку из графа и тематических отчётов, которую обычный векторный поиск не предоставляет.

Место на рынке

GraphRAG стоит в одном ряду с классическими RAG-решениями, которые опираются только на векторный поиск по эмбеддингам. Главное отличие — добавление уровня графа знаний и тематических сообществ.

На фоне привычного пайплайна «текст → эмбеддинги → поиск ближайших пассов» эта связка даёт:

  • графовое представление домена (узлы, рёбра, кластеры), пригодное для визуальной аналитики в Gephi;
  • отчёты по сообществам вроде «Yakuza, Sons of the Neon Chrysanthemum, and Ono-Sendai», которые сразу подсвечивают сюжетные и деловые линии;
  • глобальные ответы через MapReduce по кластерам, а не только по соседним фрагментам текста.

По инфраструктуре связка GraphRAG + Ollama интересна тем, кто не хочет тащить весь трафик в GPT-4o или Claude 3.5 Sonnet и предпочитает локальный запуск. Автор честно показывает нижнюю ступень: 4B-модели в Ollama уже позволяют собрать работающий прототип, но качество слияния сущностей и глубина анализа ограничены.

Если вы сейчас используете только векторный поиск с локальной LLM, GraphRAG — логичный следующий шаг, когда нужно понимать не только «что рядом в эмбеддинговом пространстве», а как сущности связаны и во что они собираются тематически.


Читайте также