Code-Graph-RAG : un moteur de recherche de code basé sur des graphes de connaissances 81

小编 ·

Code-Graph-RAG : un moteur de recherche de code basé sur des graphes de connaissances

Code-Graph-RAG est un moteur de recherche de code qui combine les graphes de connaissances et la technologie Retrieval-Augmented Generation (RAG), afin d'améliorer la précision des recherches dans le code.

Code-Graph-RAG : un moteur de recherche de code basé sur des graphes de connaissances

Code-Graph-RAG est un moteur de recherche de code qui fusionne la technologie de graphe de connaissances et la génération augmentée par récupération (RAG), dans le but d'améliorer la précision de la recherche de code.

Code-Graph-RAG : un moteur de recherche de code basé sur un graphe de connaissances.webp

Fonctionnalités principales :

  • Prise en charge des bases de code en plusieurs langages tels que Python, JavaScript, TypeScript, Rust et Go

  • Analyse de l'arbre syntaxique abstrait (AST) multilingue basée sur Tree-sitter

  • Utilisation de Memgraph pour stocker la structure du code sous forme de graphe interconnecté

  • Prise en charge des requêtes en langage naturel sur les bases de code

  • Conversion du langage naturel en requêtes Cypher via Google Gemini

  • Accès direct au code source réel des fonctions et méthodes

  • Analyse de pyproject.toml pour examiner les dépendances externes

  • Prise en charge des fonctions imbriquées et de la hiérarchie des classes

  • Schéma de graphe unifié pour tous les langages pris en charge

Principes techniques :

  • Construction du graphe de connaissances : un grand modèle de langage analyse la base de code pour en extraire des entités telles que les classes et les fonctions, ainsi que leurs relations (héritage, dépendances, etc.), afin de construire un graphe interconnecté. Par exemple, après avoir saisi la documentation du code, le système décompose les unités de texte, identifie la structure du code et génère le graphe correspondant.

  • Recherche augmentée par graphe :

  • Recherche de sous-graphe : après une question de l'utilisateur, le système extrait les entités clés et étend les chemins associés dans le graphe (par exemple, un voisinage à 3 sauts) pour générer un sous-graphe correspondant. Par exemple, lors d'une requête sur une fonction, il est possible d'associer les nœuds des classes, modules, etc. liés.

  • Stratégie de recherche hybride : combinaison de la recherche vectorielle (par exemple, les plongements BERT) et des plongements de graphe (par exemple, Node2Vec, TransE), à travers une formule pondérée (par exemple, Score=α⋅cos_sim(q,v)+β⋅graph_score(q,G)) pour déterminer le résultat final.

Architecture du système :

  • Analyseur multilingue : système d'analyse de code et d'importation de données basé sur Tree-sitter

  • Système RAG : interface de requête interactive en ligne de commande

Les composants principaux comprennent :

  • Intégration Tree-sitter : analyse multilingue

  • Base de données graphe : Memgraph pour stocker les nœuds et les relations

  • Intégration LLM : Google Gemini pour le traitement du langage naturel

  • Analyse du code : parcours AST multilingue pour extraire les éléments du code

  • Outils de requête : outils dédiés à l'interrogation de graphes et à la recherche de code

  • Configuration des langages : paramètres de mappage multilingues

Installation et utilisation :

  • Prérequis : Python 3.12+, Docker et Docker Compose (Memgraph), clé API Google Gemini, gestionnaire de paquets uv

  • Étapes d'installation : cloner le dépôt → installer les dépendances → configurer les variables d'environnement → démarrer Memgraph

  • Flux d'utilisation : analyser la base de code pour générer le graphe de connaissances → lancer le RAG CLI pour des requêtes interactives

Cas d'utilisation :

  • Analyse du code : compréhension rapide de la structure du code, par exemple recherche de classes portant un nom précis ou de fonctions liées à la base de données

  • Réutilisation du code : obtenir des extraits de code correspondants sur le plan sémantique en décrivant les besoins en langage naturel, afin d'améliorer l'efficacité du développement

Adresse du projet :

https://github.com/vitali87/code-graph-rag