Habr AI→ оригинал

Microsoft GraphRAG and Ollama: How Graph-Based RAG Performed on Local Models

A practical breakdown of Microsoft GraphRAG combined with Ollama and local LLMs has been released. The author built a knowledge graph from "Johnny Mnemonic," co

Microsoft GraphRAG and Ollama: How Graph-Based RAG Performed on Local Models
Источник: Habr AI. Коллаж: Hamidun News.

Появился подробный разбор Microsoft GraphRAG в связке с Ollama и локальными LLM. Автор проверил, можно ли поднять графовый RAG без дорогой инфраструктуры, и прогнал систему на рассказе «Johnny Mnemonic» Уильяма Гибсона, чтобы оценить качество ответов на знакомом киберпанковом материале.

Как ставили тест

Эксперимент строился вокруг практического вопроса: действительно ли графовый подход способен заменить привычный векторный поиск в корпоративных RAG-системах. Для проверки автор выбрал Microsoft GraphRAG, локальный запуск через Ollama и текст объёмом около 38 тысяч слов. Результатом стал не только индекс для поиска, но и полноценный граф знаний с сущностями, связями и сообществами.

Визуализация через Gephi показала, что система умеет собирать довольно богатую структуру из одного художественного текста. Важно, что GraphRAG формирует не только буквальные связи между объектами, но и тематические кластеры. В отчётах сообщества группировались вокруг Якудзы, Джонни, Молли Миллионс и других ключевых элементов сюжета.

При этом обнаружились и типичные ограничения: сущности склеиваются не всегда, если имена расходятся по форме, поэтому часть дублей приходится учитывать отдельно. Для ответов на русском автор подправил системные промпты, хотя сами вопросы советует задавать на английском, иначе точность падает.

«Если коротко, кое-как работает даже на 4b моделях».

Как отвечает система В тесте сравнивались несколько режимов.

Global search работает по описаниям сообществ в логике MapReduce и лучше подходит для вопросов про весь корпус. Local search смешивает связи из графа с фрагментами исходного текста и оказывается полезнее, когда нужно разобрать конкретного персонажа, объект или эпизод. Есть ещё BASIC, то есть обычный поиск по чанкам, и DRIFT — более тяжёлый режим, который напоминает query expansion и пытается расширять контекст.

  • Global search собрал основные киберпанковские темы рассказа: слияние технологий и биологии, дистопический город, корпоративные конфликты и технологическое неравенство.
  • Local search дал более предметный ответ по персонажу Jones и его связям с Johnny, Molly и Yakuza.
  • DRIFT search на том же вопросе отработал около сорока минут и не дал ощутимого скачка качества по сравнению с локальным режимом.
  • BASIC остаётся полезной контрольной точкой, потому что внутри GraphRAG векторный поиск никуда не исчезает. Из этого автор делает важный практический вывод: в реальном продукте понадобится отдельный агент или маршрутизатор, который будет выбирать тип поиска по формулировке вопроса и истории запроса. Иначе все режимы придётся переключать вручную. Ещё одна деталь — ответы GraphRAG ссылаются на human_readable_id из parquet-файлов, так что для пользовательского интерфейса эти ссылки нужно дополнительно раскрывать и обрабатывать. Это превращает GraphRAG из просто поиска в надстройку, которую надо адаптировать под живой пользовательский сценарий.

Где возникли проблемы С локальными моделями картина оказалась неровной.

Mistral 7B из найденных примеров не справился с global search из-за проблем со структурированным JSON-выводом: map-запросы просто падают. Gemma 3 в версиях 4B и 12B сохранила основные сущности, но упростила граф и местами исказила факты, вплоть до того, что Jones превратился в человека вместо дельфина. Наиболее рабочим вариантом автор назвал Qwen3 14B.

Для эмбеддингов использовалась модель user-bge-m3, которая нормально ведёт себя и на русском, и на английском. Инфраструктурных нюансов тоже много. GraphRAG опирается на LiteLLM, и автор отдельно предупреждает не подниматься выше версии 1.

82.6, потому что 1.82.

7 и 1.82.8 были скомпрометированы.

В связке с Ollama встречается ложная 404-ошибка при запросе параметров модели, а длинные вызовы могут упираться в таймауты очереди. Ещё больнее ведут себя эмбеддинги: bge-m3 через Ollama иногда падает из-за сериализации Inf и NaN, поэтому пришлось выносить embedding в отдельный прокси на HuggingFace. Плюс нужно вручную править settings.

yaml, выставлять api_base, размер вектора 1024 и включать graphml для визуализации. Даже на машине с 16 ГБ GPU индексация текста такого размера занимает больше часа.

Что это значит

Главный вывод статьи в том, что Microsoft GraphRAG не выглядит прямой заменой классическому векторному RAG. Он скорее полезен там, где важнее глубина семантических связей, чем скорость ответа: в аналитике, экспертных системах и сложных корпусах документов. При этом у подхода уже есть API, тестовое приложение и понятный путь к MVP. Но за более релевантные ответы приходится платить временем индексации, хрупкостью пайплайна и заметно более сложной настройкой по сравнению с обычной векторной базой.

ЖХ
Hamidun News
AI‑новости без шума. Ежедневный редакторский отбор из 400+ источников. Продукт Жемала Хамидуна, Head of AI в Alpina Digital.
Загружаем комментарии…