Code-Graph-RAG: поисковая система по коду на основе графов знаний
Code-Graph-RAG — это поисковая система для кода, объединяющая технологии графов знаний и генерацию с дополненной выборкой (RAG), направленная на повышение точности поиска кода.

Основные функции:
Поддержка кодовых баз на различных языках, включая Python, JavaScript, TypeScript, Rust и Go
Кросс-языковой парсинг абстрактных синтаксических деревьев (AST) на основе Tree-sitter
Хранение структуры кода в виде взаимосвязанного графа с использованием Memgraph
Поддержка запросов к кодовой базе на естественном языке
Преобразование естественного языка в запросы Cypher с помощью Google Gemini
Возможность напрямую извлекать исходный код функций/методов
Анализ внешних зависимостей путём разбора pyproject.toml
Поддержка обработки вложенных функций и иерархии классов
Единая графовая схема для всех поддерживаемых языков
Технические принципы:
Построение графа знаний: большая языковая модель анализирует кодовую базу, извлекает сущности, такие как классы, функции, и их связи (например, наследование, зависимости), формируя взаимосвязанный граф. Например, после ввода документации кода система разбивает текст на блоки, распознаёт структуру кода и генерирует соответствующий граф.
Поиск с расширением графа:
Поиск по подграфу: после запроса пользователя система извлекает ключевые сущности и расширяет связанные пути в графе (например, окрестность в 3 перехода), формируя соответствующий подграф. Например, при запросе определённой функции можно получить связанные узлы — классы, модули и т. д.
Гибридная стратегия поиска: сочетание векторного поиска (например, BERT-эмбеддинги) и графовых эмбеддингов (например, Node2Vec, TransE) с использованием взвешенной формулы (например, Score=α⋅cos_sim(q,v)+β⋅graph_score(q,G)) для определения итогового результата.
Архитектура системы:
Многоязычный парсер: система парсинга кода и импорта данных на основе Tree-sitter
Система RAG: интерактивный интерфейс запросов через командную строку
Основные компоненты:
Интеграция с Tree-sitter: обеспечивает кросс-языковой парсинг
Графовая база данных: Memgraph для хранения узлов и связей
Интеграция с LLM: Google Gemini для обработки естественного языка
Анализ кода: обход AST для разных языков с извлечением элементов кода
Инструменты запросов: специализированные средства графовых запросов и поиска по коду
Языковые конфигурации: параметры сопоставления для разных языков
Установка и использование:
Требования: Python 3.12+, Docker и Docker Compose (Memgraph), ключ API Google Gemini, менеджер пакетов uv
Шаги установки: клонировать репозиторий → установить зависимости → настроить переменные окружения → запустить Memgraph
Порядок использования: распарсить кодовую базу для построения графа знаний → запустить RAG CLI для интерактивных запросов
Сценарии применения:
Анализ кода: быстрое понимание структуры кода, например, поиск классов по определённому имени или функций, связанных с базой данных
Повторное использование кода: получение семантически подходящих фрагментов кода по описанию需求 на естественном языке, что повышает эффективность разработки
Адрес проекта:
https://github.com/vitali87/code-graph-rag
Помощник сценариста▸
AI Приложения
AI Новости 