🕸 Graphify: Навигация по кодовой базе через структуру, а не сходство — 29 мая 2026 г. в 05:49:55.486
🕸 Graphify: Навигация по кодовой базе через структуру, а не сходство При построении RAG-систем для работы с репозиториями разработчики часто сталкиваются с фундаментальным ограничением векторного поиска. Семантическое сходство (cosine similarity) отлично находит похожие по смыслу слова, но абсолютно слепо к архитектурным связям: импортам, цепочкам зависимостей и графам вызовов (call graphs). Две функции, вызывающие друг друга, могут иметь совершенно разный словарь, и ни один классический эмбеддинг не сможет обнаружить эту связь. Инструмент с открытым исходным кодом Graphify предлагает альтернативный подход — замену векторного сходства жесткой структурой. Он строит граф знаний кодовой базы, позволяя ИИ-агентам ориентироваться в архитектуре проекта и принимать более точные контекстные решения. Разбираемся, как это устроено под капотом: 👇 📂 1. Топология графа вместо «мешка чанков» Вместо нарезки исходного кода на текстовые фрагменты и их последующего эмбеддинга, Graphify анализирует реальную структуру проекта. На выходе формируется интерактивный граф связей, а также аналитический отчет `GRAPH_REPORT.md`, описывающий «god-nodes» (ключевые модули, через которые проходит большая часть логики) и скрытые кросс-компонентные зависимости. Архитектурный инсайт: Топология графа выступает в качестве основного сигнала сходства. Алгоритм детекции сообществ Лейдена (Leiden community detection) группирует связанные компоненты по плотности ребер, а не по косинусному расстоянию в многомерном пространстве. Это дает агенту наглядную карту связей, сокращая объем контекста. В тестах на смешанных репозиториях затраты токенов на один сложный архитектурный запрос снизились в 71,5 раза (1 700 токенов против 123 000 при анализе «сырых» файлов). 🛠 2. Трехуровневый гибридный конвейер экстракции Построение графа разделено на три pass-этапа с разной стоимостью инференса, что минимизирует затраты на API: 1. AST-анализ (Локально, бесплатно): Парсеры Tree-sitter анализируют код на 20 языках (Python, TS, Go, Rust, C++), извлекая классы, функции, импорты и комментарии. 2. Локальная транскрипция (Локально, бесплатно): Аудио- и видеофайлы обрабатываются через `faster-whisper` с кэшированием по SHA256 для ускорения повторных запусков. 3. Субагенты Claude (API-токены): Документы, схемы, PDF и скриншоты маркерных досок размечаются с помощью LLM. Архитектурный инсайт: Такой подход позволяет создать мультимодальный граф знаний, связывающий концептуальные наброски с маркерной доски напрямую с кодом, который их реализует, и научными статьями, послужившими основой архитектурного решения. Все связи размечаются тегами: `EXTRACTED` (прямые связи из AST), `INFERRED` (логические выводы ИИ с оценкой уверенности) или `AMBIGUOUS` (требующие проверки человеком). 🔌 3. Интеграция с ИИ-агентами через протокол MCP Инструмент поддерживает интеграцию с популярными средами разработки (Claude Code, Cursor, Aider, Trae, Copilot CLI). Архитектурный инсайт: Для агентов с поддержкой динамического вызова инструментов Graphify запускается в режиме локального MCP-сервера, предоставляя методы `query_graph`, `get_neighbors` и `shortest_path`. Прежде чем использовать стандартные утилиты поиска (Grep или Glob), агент обращается к графу через MCP, локализуя область поиска до архитектурно связанных модулей и избавляясь от перебора всего репозитория. 💡 Резюме: Векторный RAG остается эффективным решением для поиска точечных совпадений или работы с плоской документацией. Однако для глубокого понимания архитектуры, трассировки зависимостей и выявления системных взаимосвязей граф знаний показывает значительно более высокую точность и экономичность. В зрелых промышленных системах наиболее логичным решением выглядит гибридный подход: использование векторов для неструктурированных текстов и графов для кода. 🔗 Ссылки: * Репо * Пакет на PyPl * NetworkX Leiden Algorithm Docs * Model Context Protocol Specification #AIArchitecture #GraphRAG #Graphify #AST #MCP #SystemDesign #CodebaseRAG