Графы знаний - это не модно, это практично. Особенно когда облака отключат
Представьте, что ваша RAG-система не просто тыкается в ближайшие чанки, а видит связи между понятиями. Компания Microsoft разработала GraphRAG - подход, который строит граф знаний из документов. А Ollama позволяет запускать это всё на вашем ноутбуке. В 2026 году это не эксперимент, а necessity.
Я собрал стек, который работает без интернета, API ключей и прочей облачной шелухи. Если вы читали про практику Knowledge Graph, то знаете - теория это одно. А вот когда 16 ГБ оперативки начинают плакать - совсем другое.
Что у нас в арсенале на март 2026 года
Инструменты за два года сильно эволюционировали. Особенно в части эффективности.
| Инструмент | Версия (актуально на 27.03.2026) | Зачем нужен |
|---|---|---|
| Microsoft GraphRAG | v2.1 (с поддержкой мультимодальности) | Ядро для извлечения сущностей и связей, теперь умеет работать с таблицами и изображениями |
| Ollama | 0.6.0 | Локальный движок для запуска LLM. Поддержка новых форматов моделей, встроенный RAG (но нам он не нужен) |
| Gephi | 0.10.2 | Визуализация графа. Старая, но единственная, которая не глючит на больших графах |
Какую модель качать? Спойлер: не ту, что советуют все
В архиве на случай апокалипсиса я писал про модели для 24 ГБ VRAM. Но для извлечения сущностей нужна не мощность, а точность. Mistral 7B - классика, но в 2026 году она уже не та.
Новые фавориты для локального NER (распознавания именованных сущностей):
- Llama 3.1 8B Instruct - оптимизирована именно для задач structured output. Вытаскивает связи как бульдозер.
- Qwen 2.5 7B - китайская, но для английских текстов работает не хуже. Плюс - контекст 32k токенов по умолчанию.
- Microsoft Phi-4 - да, та самая маленькая модель. Для графов знаний из 10-20 документов её хватает с головой, а ест ресурсов в 3 раза меньше.
Не берите модели больше 13B параметров. Для извлечения сущностей это overkill. Вы будете часами ждать обработки, а прирост качества составит 2-3%. Проверено на горьком опыте.
1 Ставим Ollama 0.6.0 и качаем модель
Ollama теперь ставится одной командой даже на Windows. Но если вы на Linux, то всё ещё проще.
curl -fsSL https://ollama.ai/install.sh | sh
ollama pull llama3.1:8b-instruct-q4_K_M
Флаг q4_K_M - это квантование. Без него модель займет 16 ГБ, с ним - 5 ГБ. Потери в качестве минимальны, особенно для нашей задачи.
2 Клонируем и настраиваем GraphRAG
Официальный репозиторий Microsoft - microsoft/graphrag. Но там много лишнего для нашего эксперимента. Я выдрал только ядро.
git clone https://github.com/microsoft/graphrag.git
cd graphrag
pip install -e . # Установит зависимости, включая llama-index 0.10.25
Самая большая проблема - совместимость версий. Llama-index 0.10.25 (актуальная на март 2026) требует Python 3.10+. Если у вас 3.9 - будет боль.
3 Пишем скрипт извлечения сущностей через Ollama
Здесь теория из статьи про извлечение сущностей сталкивается с практикой. GraphRAG ждёт OpenAI API, но мы подсунем ему Ollama.
from graphrag.index.entities import EntityExtractor
import ollama
import json
# Создаём клиент Ollama вместо OpenAI
def ollama_extract(text):
prompt = f"""Извлеки именованные сущности и их связи из текста.
Верни JSON: {{"entities": [{{"name": "...", "type": "PERSON|ORG|LOCATION"}}], "relations": [{{"from": "...", "to": "...", "type": "..."}}]}}
Текст: {text}"""
response = ollama.chat(model='llama3.1:8b-instruct',
messages=[{'role': 'user', 'content': prompt}])
try:
return json.loads(response['message']['content'])
except:
# Fallback для случая, если модель наглючила
return {"entities": [], "relations": []}
# Используем в GraphRAG
extractor = EntityExtractor(llm_caller=ollama_extract)
docs = ["Ваш текст здесь..."] # Загрузите свои документы
entities = extractor.extract(docs)
Это упрощенный пример. В реальности GraphRAG делает несколько проходов: сначала извлекает сущности, потом кластеризует, потом устанавливает глобальные связи. Но суть ясна - мы заменяем облачные вызовы локальными.
А что с альтернативами? LangChain с Neo4j уже не в тренде
Когда все начали делать графы знаний, стандартом был LangChain + Neo4j. В 2026 году это выглядит как паровоз в эпоху гиперлупов.
| Подход | Плюсы | Минусы | Когда выбирать |
|---|---|---|---|
| Microsoft GraphRAG + Ollama | Полная локальность, не требует графовой БД, хорошая кластеризация | Сложная настройка, долгая обработка на больших данных | Для анализа закрытых документов, PoC проектов |
| LangChain + Neo4j | Готовая экосистема, много примеров | Требует отдельную БД, дорого в масштабе, устаревшие цепочки | Если уже есть Neo4j в продакшене и команда её знает |
| GOG (Graph-Oriented Generation) | Экономия токенов до 89%, идеально для кода | Специфично для AST, сложно адаптировать под другие данные | Анализ репозиториев, документов со структурой (JSON, XML) |
| Векторный RAG (Chroma, Qdrant) | Быстро, просто, дешево | Не видит семантических связей, только похожесть | Для простого поиска по документам, когда связи не важны |
GraphRAG выигрывает там, где нужно понять контекст всего корпуса документов, а не найти похожий фрагмент. Если у вас 100 PDF-ок по конкурентам, GraphRAG покажет, как компании связаны через общих людей и технологии. Векторный поиск такого не сделает.
4 Визуализируем граф в Gephi - где красота побеждает утилитарность
GraphRAG умеет экспортировать граф в GraphML. Это XML для графов. Gephi жуёт его на ура.
import networkx as nx
from graphrag.index.graph import KnowledgeGraph
# После построения графа
graph = KnowledgeGraph(entities, relations) # Ваши сущности и связи
nx.write_graphml(graph.networkx_graph, "knowledge_graph.graphml")
Запускаете Gephi, открываете файл, выбираете layout «Force Atlas 2». Ждёте, пока узлы перестанут дёргаться. Экспортируете в PNG и показываете начальству - они думают, что вы гений. (Хотя вся работа за LLM).
Gephi падает на графах больше 10k узлов. Если столько сущностей - фильтруйте по весу связей или используйте NetworkX для анализа, а для визуализации берите подвыборку.
Кому это реально нужно? (Спойлер: не всем)
После прочтения дискуссии про графы для агентов я понял - большинству хватит и векторной БД. GraphRAG с Ollama - инструмент для конкретных сценариев:
- Исследователи анализируют корпус научных статей. Им нужно видеть связи между концепциями, а не просто цитаты.
- Юристы работают с судебными решениями. Прецеденты связаны сложными путями, которые векторный поиск не улавливает.
- Консалтинговые компании изучают рынок. GraphRAG вытащит связи между компаниями через общих директоров, патенты, суды.
- Параноики (я к ним отношусь), которые не хотят загружать данные в чужие облака. Всё работает на вашей машине.
Если же вам нужен просто чат-бот с документами - собирайте агентный RAG локально. Это проще и быстрее.
Ошибка, которую совершают 90%: пытаются обработать всё и сразу
Вы скачали 500 PDF с исследованиями по ИИ. Запускаете GraphRAG на всём этом и уходите пить кофе. Через 6 часов скрипт падает из-за нехватки памяти. Знакомо?
Правильный путь - инкрементальное построение графа. Обработали 10 документов - сохранили граф. Добавили ещё 10 - обновили. GraphRAG так умеет, но об этом мало кто читает в документации.
# Инкрементальное обновление графа
from graphrag.index.graph import load_knowledge_graph, save_knowledge_graph
# Пытаемся загрузить существующий
try:
old_graph = load_knowledge_graph("graph.pkl")
except FileNotFoundError:
old_graph = KnowledgeGraph()
# Добавляем новые сущности и связи
new_graph = build_graph(new_documents) # Ваша функция построения
combined_graph = old_graph.merge(new_graph)
save_knowledge_graph(combined_graph, "graph.pkl")
Что будет дальше? Графы станут дешевле и злее
На март 2026 года тренд ясен: маленькие специализированные модели для извлечения сущностей. Microsoft уже анонсировала GraphRAG Lite - версию, которая работает в 10 раз быстрее за счёт предобученных энкодеров для сущностей.
Ollama в версии 0.6.0 получил встроенную поддержку графовых запросов - можно будет делать Cypher-like запросы прямо к модели. Это убьёт отдельный слой графовых БД для маленьких проектов.
Мой прогноз: к концу 2026 года сборка графа знаний из 1000 документов будет занимать не 10 часов, а 20 минут на ноутбуке. И это сделает технологию не экзотикой, а стандартным инструментом как сегодня векторный поиск.
А пока - качайте код, экспериментируйте с моделями и не верьте тем, кто говорит, что графы знаний это сложно. Это просто другой способ смотреть на данные. Иногда - единственно верный.