Code-Graph-RAG: motor de búsqueda de código basado en grafos de conocimiento 79

小编 ·

Code-Graph-RAG: motor de búsqueda de código basado en grafos de conocimiento

Code-Graph-RAG es un motor de búsqueda de código que combina grafos de conocimiento con la tecnología de Retrieval-Augmented Generation (RAG), con el objetivo de mejorar la precisión de las búsquedas en código.

Code-Graph-RAG: motor de búsqueda de código basado en grafos de conocimiento

Code-Graph-RAG es un motor de búsqueda de código que combina grafos de conocimiento con la tecnología de Generación Aumentada por Recuperación (RAG), con el objetivo de mejorar la precisión en la búsqueda de código.

Code-Graph-RAG: un motor de búsqueda de código basado en grafos de conocimiento.webp

Funciones principales:

  • Compatible con repositorios de código en varios lenguajes como Python, JavaScript, TypeScript, Rust y Go

  • Análisis del Árbol de Sintaxis Abstracta (AST) entre lenguajes basado en Tree-sitter

  • Utiliza Memgraph para almacenar la estructura del código como un grafo interconectado

  • Permite consultas en lenguaje natural sobre el repositorio de código

  • Convierte lenguaje natural a consultas Cypher mediante Google Gemini

  • Permite recuperar directamente el código fuente real de funciones/métodos

  • Capaz de analizar pyproject.toml para examinar dependencias externas

  • Soporta el manejo de funciones anidadas y jerarquías de clases

  • Utiliza un diseño de esquema de grafo unificado para todos los lenguajes soportados

Principios técnicos:

  • Construcción del grafo de conocimiento: un modelo de lenguaje grande analiza el repositorio de código y extrae entidades como clases, funciones y sus relaciones (por ejemplo, herencia, dependencias) para construir un grafo interconectado. Por ejemplo, tras introducir la documentación del código, el sistema divide las unidades de texto, identifica la estructura del código y genera el grafo correspondiente.

  • Recuperación aumentada por grafos:

  • Recuperación de subgrafos: tras una pregunta del usuario, el sistema extrae entidades clave y amplía las rutas asociadas en el grafo (por ejemplo, vecindario de 3 saltos), generando un subgrafo coincidente. Por ejemplo, al consultar una función, se puede asociar con nodos de clases, módulos, etc. relacionados.

  • Estrategia de recuperación híbrida: combina la recuperación vectorial (como incrustaciones BERT) y la incrustación de grafos (como Node2Vec, TransE), determinando el resultado final mediante una fórmula ponderada (por ejemplo, Score=α⋅cos_sim(q,v)+β⋅graph_score(q,G)).

Arquitectura del sistema:

  • Analizador multilingüe: sistema de análisis de código e importación de datos basado en Tree-sitter

  • Sistema RAG: interfaz de consultas interactiva por línea de comandos

Los componentes principales incluyen:

  • Integración con Tree-sitter: análisis entre lenguajes

  • Base de datos de grafos: Memgraph almacena nodos y relaciones

  • Integración con LLM: Google Gemini procesa el lenguaje natural

  • Análisis de código: recorrido del AST entre lenguajes para extraer elementos del código

  • Herramientas de consulta: herramientas dedicadas de consulta de grafos y recuperación de código

  • Configuración de lenguajes: parámetros de mapeo multilingüe

Instalación y uso:

  • Requisitos previos: Python 3.12+, Docker y Docker Compose (Memgraph), clave de API de Google Gemini, gestor de paquetes uv

  • Pasos de instalación: clonar el repositorio → instalar dependencias → configurar variables de entorno → iniciar Memgraph

  • Flujo de uso: analizar el repositorio de código para generar el grafo de conocimiento → iniciar la CLI de RAG para realizar consultas interactivas

Escenarios de aplicación:

  • Análisis de código: comprensión rápida de la estructura del código, como consultar clases con un nombre específico o funciones relacionadas con bases de datos

  • Reutilización de código: obtención de fragmentos de código con coincidencia semántica mediante la descripción de necesidades en lenguaje natural, mejorando la eficiencia del desarrollo

Dirección del proyecto:

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