Code-Graph-RAG: Eine code-suchmaschine auf Basis von Wissensgraphen 82

小编 ·

Code-Graph-RAG: Eine code-suchmaschine auf Basis von Wissensgraphen

Code-Graph-RAG ist eine Code-Suchmaschine, die Wissensgraphen mit Retrieval-Augmented Generation (RAG) kombiniert, um die Genauigkeit von Code-Suchen zu verbessern.

Code-Graph-RAG: Eine code-suchmaschine auf Basis von Wissensgraphen

Code-Graph-RAG ist eine Code-Suchmaschine, die Knowledge Graph- und Retrieval-Augmented-Generation-Technologie (RAG) kombiniert, um die Präzision der Codesuche zu verbessern.

Code-Graph-RAG:一款基于知识图谱的代码搜索引擎.webp

Hauptfunktionen:

  • Unterstützung von Codebasen in mehreren Sprachen wie Python, JavaScript, TypeScript, Rust und Go

  • Sprachübergreifende AST-Analyse (Abstract Syntax Tree) auf Basis von Tree-sitter

  • Speicherung der Codestruktur als vernetzter Graph mittels Memgraph

  • Unterstützung von Suchanfragen in natürlicher Sprache an die Codebasis

  • Umwandlung von natürlicher Sprache in Cypher-Abfragen mithilfe von Google Gemini

  • Direkter Abruf des tatsächlichen Quellcodes von Funktionen/Methoden

  • Analyse externer Abhängigkeiten durch Parsen von pyproject.toml

  • Verarbeitung verschachtelter Funktionen und Klassenhierarchien

  • Einheitliches Graph-Schema für alle unterstützten Sprachen

Technische Grundlagen:

  • Aufbau des Knowledge Graphs: Ein Large Language Model analysiert die Codebasis, extrahiert Entitäten wie Klassen und Funktionen sowie deren Beziehungen (z. B. Vererbung, Abhängigkeiten) und erstellt einen vernetzten Graphen. Wird beispielsweise eine Codedokumentation eingegeben, zerlegt das System die Texteinheiten, erkennt die Codestruktur und generiert den entsprechenden Graphen.

  • Graph-erweiterte Abfrage:

  • Subgraph-Abfrage: Bei einer Benutzeranfrage extrahiert das System die Schlüsselentitäten und erweitert die zugehörigen Pfade im Graphen (z. B. 3-Hop-Nachbarschaft), um einen passenden Subgraphen zu erzeugen. Wird etwa nach einer bestimmten Funktion gefragt, können relevante Knoten wie zugehörige Klassen oder Module einbezogen werden.

  • Hybride Abfragestrategie: Kombination aus Vektor-Suche (z. B. BERT-Embeddings) und Graph-Embeddings (z. B. Node2Vec, TransE), wobei das Endergebnis über eine gewichtete Formel (z. B. Score=α⋅cos_sim(q,v)+β⋅graph_score(q,G)) ermittelt wird.

Systemarchitektur:

  • Mehrsprachiger Parser: Codeparserung und Datenimport auf Basis von Tree-sitter

  • RAG-System: Interaktive Kommandozeilen-Schnittstelle für Abfragen

Zu den Kernkomponenten gehören:

  • Tree-sitter-Integration: Sprachübergreifendes Parsen

  • Graphdatenbank: Speicherung von Knoten und Beziehungen in Memgraph

  • LLM-Integration: Verarbeitung natürlicher Sprache mit Google Gemini

  • Codeanalyse: Sprachübergreifende AST-Traversierung zur Extraktion von Code-Elementen

  • Abfrage-Tools: Spezielle Werkzeuge für Graph-Abfragen und Code-Suche

  • Sprachkonfiguration: Mehrsprachige Mapping-Parameter

Installation und Nutzung:

  • Voraussetzungen: Python 3.12+, Docker und Docker Compose (Memgraph), Google Gemini API-Schlüssel, uv-Paketmanager

  • Installationsschritte: Repository klonen → Abhängigkeiten installieren → Umgebungsvariablen konfigurieren → Memgraph starten

  • Nutzungsablauf: Codebasis parsen, um den Knowledge Graph zu erzeugen → RAG CLI für interaktive Abfragen starten

Anwendungsfälle:

  • Codeanalyse: Schnelles Verständnis der Codestruktur, z. B. Abfrage von Klassen mit einem bestimmten Namen oder von datenbankbezogenen Funktionen

  • Code-Wiederverwendung: Über natürlichsprachliche Anforderungen semantisch passende Code-Snippets abrufen, um die Entwicklungseffizienz zu steigern

Projektadresse:

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