>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Python

Kennisgrafieken in plaats van gigabytes aan embeddings voor code-analyse in monorepo's

Een bekende situatie: je voert een grote monorepo aan een AI-assistent, en het begint functieaanroepen van naburige services door elkaar te halen, verbindingen tussen modules te verliezen en niet-bestaande argumenten te verzinnen. Reguliere vectorzoekopdrachten zijn redelijk goed in het vinden van vergelijkbare tekstfragmenten. Vectorrepresentaties hebben echter moeite met het begrijpen van de strikte structuur van code, waar een enkele hernoemde variabele of impliciete import de logica van de gehele applicatie verandert.

Ontwikkelaar Vitaliy creëerde het code-graph-rag project om dit probleem systematisch op te lossen. In plaats van uitsluitend te vertrouwen op vector-embeddings, bouwt de tool een kennisgraaf van de codebase.

demo

Hoe het onder de motorkap werkt

Het systeem is opgebouwd uit drie kerncomponenten: de Tree-sitter parser, de Memgraph graafdatabase en de Qdrant vectordatabase.

Zo werkt het:

  1. Tree-sitter parseert broncodebestanden naar abstracte syntaxisbomen (AST).
  2. De analyzer extraheert knooppunten: functies, klassen, methoden, modules en de relaties ertussen.
  3. Data wordt weggeschreven naar Memgraph onder een uniform, taalonafhankelijk schema.
  4. Bovenop deze structuur vertaalt een CLI-hulpprogramma cgr natuurlijke-taalvragen naar precieze Cypher-queries naar de graafdatabase.

Als resultaat, wanneer je vraagt "waar wordt functie X gebruikt en waar stroomt de data vervolgens naartoe?", probeert het systeem niet het antwoord te raden op basis van vectorproximiteit in de ruimte. Het voert een gerichte query uit tegen de graaf en retourneert het werkelijke aanroeppad.

Исходный код -> Tree-sitter -> AST-анализ -> Граф знаний Memgraph
                                                  |
Запрос пользователя -> AI-модель (Cypher) -> Запрос Cypher -> Результаты

Wat de tool kan doen

Het project ondersteunt 13 talen, waaronder Python, TypeScript, Go, Rust, Java, C++, C# en PHP. Scala-ondersteuning is nog in ontwikkeling, en Ruby gebruikt ast-grep patroonmatching voor parsing.

Hier zijn de belangrijkste taken die cgr oplost:

  • Navigatie en Q&A over code. Je kunt functiebronnen niet alleen bij naam opvragen, maar ook bij betekenis of rol in de architectuur.
  • Detectie van dode code. Het hulpprogramma doorloopt het relatiegraaf vanaf applicatie-entrypoints en vindt functies of modules die onbereikbaar zijn via elke aanroepketen.
  • Gestructureerd zoeken en vervangen. In plaats van klassieke reguliere expressies gebruikt het ast-grep. De tool zoekt naar patronen in de syntaxisboom en herschrijft code zorgvuldig met behoud van structuur.
  • Data flow tracking. De FLOWS_TO functie traceert hoe een variabelewaarde door een keten van toewijzingen, functieaanroepen en I/O-operaties reist. Momenteel werkt tracking voor C#, Java, C en Go.

Een extra bonus is Model Context Protocol (MCP) ondersteuning. Dit betekent dat code-graph-rag kan draaien als MCP-server en direct kan worden verbonden met Claude Code of elke andere MCP-client. AI-agents kunnen dan zelf de exacte projectstructuur opvragen en wijzigingen voorstellen als kant-en-klare diffs.

Snelle start en systeemvereisten

De tool wordt gedistribueerd als Python-pakket code-graph-rag. Voor volledige functionaliteit moet je Docker installeren (vereist voor Memgraph en Qdrant containers), evenals de cmake en ripgrep systeemhulpprogramma's.

De eenvoudigste manier om de CLI-hulpprogramma te installeren is via uv of pipx:

uv tool install "code-graph-rag[treesitter-full,semantic]"

Na installatie moet je de lokale omgeving instellen en de repository indexeren:

# Запуск контейнеров базы данных
cgr daemon up

# Индексация кодовой базы в новый граф
cgr start --repo-path /path/to/repo --update-graph --clean

# Интерактивный режим работы
cgr start --repo-path /path/to/repo

Als je van plan bent het hulpprogramma te gebruiken als onderdeel van CI/CD of het te verbinden met een agent via MCP, heeft de documentatie een gedetailleerde sectie over configuratie-instellingen en graafexport.

Is het de moeite waard om te adopteren?

Het project ziet er veelbelovend uit voor teams die met meertalige monorepo's werken. Reguliere AI-assistenten schieten vaak tekort wanneer de codebase de honderdduizend regels overschrijdt en service-naar-service-verbindingen afhangen van functieaanroepen in verschillende mappen. De graafbenadering lost dit probleem radicaal op, door strikte codetopologie te mixen met de flexibiliteit van taalmodellen.

Natuurlijk moet je rekening houden met de leercurve. Je moet een Docker-container draaien met Memgraph, resources alloceren voor graafconstructie tijdens de initiële scan, en LLM API-sleutels configureren. Maar als je neural network hallucinaties beu bent tijdens refactoring van een complex project, is een half uur wennen aan code-graph-rag zeker de moeite waard.

Gerelateerde projecten