Code-Graph-RAG: поисковая система по коду на основе графов знаний 78

小编 ·

Code-Graph-RAG: поисковая система по коду на основе графов знаний

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

Code-Graph-RAG: поисковая система по коду на основе графов знаний

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

Code-Graph-RAG: поисковая система для кода на основе графа знаний.webp

Основные функции:

  • Поддержка кодовых баз на различных языках, включая 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