idea_world_labDEV JOURNAL
Sonntag, 21. Juni 2026

Godot offizielle Dokumentation RAG Klassifikator Schema und Architektur

Erstellungsdatum: 21. Juni 2026

Zweck

Es wird eine Referenzarchitektur festgelegt, um die gesamte Sammlung der Godot‑Dokumentation über den Fluss JSONL -> PostgreSQL -> Retriever -> Validator -> Qwen 3.6 zu verbinden. Dieses Dokument ist kein Implementierungsleitfaden zur Erstellung von Trainingsdaten, sondern definiert die Design‑Grundlagen, wie die bereits im Verzeichnis outputs/godot_docs_full/pages gesammelten Markdown‑Dokumente strukturiert und in eine durchsuchbare Referenz‑DB überführt werden sollen.

Godot initiales RAG Klassifikator‑Architektur

Aktuelle Eingabedaten

Die gesammelten offiziellen Dokumente befinden sich im Repository unter outputs/godot_docs_full.

Pfad Rolle
outputs/godot_docs_full/pages/ Original‑Markdown der einzelnen Godot‑Dokumentationsseiten
outputs/godot_docs_full/manifest.json Original‑URL, lokaler Dateipfad, Sammelstatus, Byte‑Größe
outputs/godot_docs_full/summary.json Gesamtzahl der gesammelten Dateien und Prüfungs‑Zusammenfassung
outputs/godot_docs_full/urls.txt Liste der tatsächlich gesammelten URLs
outputs/godot_docs_full/searchindex_urls.txt Ziel‑URL‑Liste, aus dem Sphinx‑Suchindex rekonstruiert
outputs/godot_docs_full/failed.json Liste fehlgeschlagener Sammlungen
outputs/godot_docs_full/missing_from_searchindex.txt Fehlende Einträge im Vergleich zum Suchindex

Aktueller Stand:

Element Wert
Zielseiten des Suchindex 1568
Gesammelte Seiten 1570
Seiten‑Dateien 1570
Fehlgeschlagene Abrufe 0
Fehlend im Suchindex 0

Gesamte Pipeline

  1. Der crawler sammelt die offizielle Godot‑Dokumentation aus dem Internet.
  2. Die Sammelergebnisse werden pro Seite als Markdown gespeichert.
  3. Das Markdown wird normalisiert und mit Metadaten zu JSONL‑Datensätzen konvertiert.
  4. Die JSONL‑Datensätze werden in PostgreSQL importiert.
  5. PostgreSQL speichert Dokument‑Chunks, API‑Mappings und Label‑Prototypen getrennt.
  6. Wenn ein Nutzer eine Analyse des Godot‑Quellcodes anfordert, strukturiert ein AST‑Parser den Projektcode.
  7. Der Retriever sucht anhand der Nutzerfrage und der AST‑Analyse in PostgreSQL nach relevanten Belegen.
  8. Der Validator bündelt Frage, AST‑Ergebnis und Suchbelege und übergibt sie an Qwen 3.6.
  9. Qwen 3.6 fungiert nicht als End‑Entscheider, sondern erstellt die Antwort anhand der verifizierten Belege.
  10. Der Validator prüft Beleg‑/Format‑/Verbot‑Muster der Antwort und gibt sie anschließend an den Nutzer zurück.

Umwandlung von Markdown zu JSONL

pages/*.md sind leserfreundliche Originalseiten, aber für RAG zu groß. Daher zerlegt das Umwandlungsskript die Seiten in Abschnitts‑/API‑Member‑/Beispiel‑Einheiten und bewahrt die Original‑URL sowie den Dokumenttyp.

Gemeinsame Normalisierungsregeln

Schritt Verarbeitung
Datei laden Das Markdown wird anhand von file, url, status, bytes aus manifest.json gelesen.
Inhalt bereinigen Wiederholte Überschriften, Sphinx‑UI‑Texte, defekte Anker‑Zeichen und überflüssige Leerzeichen werden entfernt.
Dokumenttyp klassifizieren Anhand von URL und Pfad wird in class_reference, tutorial, migration, engine_details, about, other unterschieden.
Abschnitt trennen Auf Basis von Überschriftenhierarchie und Godot‑Klassen‑Referenz‑Mustern werden Chunk‑Kandidaten erstellt.
Code‑Blöcke erhalten GDScript, C#, Shader und CLI‑Beispiele werden nicht aus dem Text entfernt, sondern separat in code_blocks gespeichert.
Provenance hinzufügen Jeder Datensatz erhält Original‑URL, Dateipfad, Original‑Hash und Version des Umwandlungsskripts.

JSONL‑Ausgabe

Datei Zweck Ziel‑Tabelle
work/godot_rag/jsonl/docs_chunks.jsonl Such‑Chunks für offizielle Dokumentations‑Beschreibungen/Tutorials/Referenzen docs_chunks
work/godot_rag/jsonl/api_mapping.jsonl Godot 3 → 4 API‑Änderungen, Umbenennungen, Deprecations, Ersatz‑Regeln api_mapping
work/godot_rag/jsonl/label_prototypes.jsonl Prototypen für Klassifizierung/Transformation/Verweigerung/Korrektur label_prototypes
work/godot_rag/jsonl/ingest_report.jsonl Warnungen, Überspringungen und Qualitäts‑Logs während der Umwandlung Validierung vor DB‑Import

docs_chunks.jsonl Schema

{
  "chunk_id": "godot-stable:classes/class_node.html#description:0001",
  "doc_version": "stable",
  "source_url": "https://docs.godotengine.org/en/stable/classes/class_node.html",
  "source_file": "outputs/godot_docs_full/pages/classes__class_node__....md",
  "source_sha256": "...",
  "doc_type": "class_reference",
  "symbol": "Node",
  "section_path": ["Node", "Description"],
  "heading": "Description",
  "content": "Nodes are Godot's building blocks...",
  "code_blocks": [],
  "language_tags": ["gdscript"],
  "godot_version_tags": ["4.x", "stable"],
  "api_symbols": ["Node", "_ready", "_process", "queue_free"],
  "token_count": 420,
  "metadata": {
    "status": "copied_old",
    "bytes": 12345
  }
}

Erforderliches Feld:

Feld Beschreibung
chunk_id Deterministische ID, die sich bei Wiederholungen nicht ändert
doc_version Dokumentversionsangabe, z. B. stable, 4.6
source_url Original‑URL der offiziellen Dokumentation
source_file Pfad zur Markdown‑Datei im Repository
source_sha256 SHA‑256‑Hash der Original‑Markdown‑Datei
doc_type Dokumenttyp
symbol Repräsentatives Symbol bei Klassen‑/API‑Dokumentation
section_path Überschriftenhierarchie
content Volltext, der für Suche und Embedding verwendet wird
code_blocks Array von Code‑Blöcken, die aus dem Text extrahiert wurden
api_symbols Im Text erkannte Godot‑API‑Symbole

api_mapping.jsonl Schema

{
  "mapping_id": "godot3-to-4:kinematicbody2d-to-characterbody2d",
  "source_api": "KinematicBody2D",
  "target_api": "CharacterBody2D",
  "change_type": "rename_or_replacement",
  "godot_from": "3.x",
  "godot_to": "4.x",
  "confidence": "verified_from_docs",
  "evidence_chunk_ids": [
    "godot-stable:tutorials/migrating/upgrading_to_godot_4.html#..."
  ],
  "match_terms": ["KinematicBody2D", "CharacterBody2D"],
  "notes": "Godot 4 character movement node replacement candidate.",
  "negative_patterns": ["do not suggest KinematicBody2D for Godot 4 projects"]
}

Prinzip:

Element Kriterium
confidence Wenn es eine offizielle Dokumentationsgrundlage gibt, verified_from_docs, Regelkandidaten werden als candidate bezeichnet.
Automatischer Export Kandidaten können aus Migrationsdokumenten und Klassenreferenzen erstellt werden.
Genehmigungskriterien Regeln, die für Training/Labeling verwendet werden, werden nur nach menschlicher Prüfung in den Status approved gehoben.
exact index source_api, target_api, match_terms sind genaue Suchziele.

label_prototypes.jsonl Schema

{
  "prototype_id": "label:godot3-api-in-godot4:kinematicbody2d",
  "label": "godot3_api_in_godot4",
  "task_type": "version_classification",
  "input_pattern": "extends KinematicBody2D",
  "expected_finding": "Godot 3 style physics body API detected.",
  "recommended_action": "Use CharacterBody2D or CharacterBody3D depending on project dimension.",
  "evidence_mapping_ids": [
    "godot3-to-4:kinematicbody2d-to-characterbody2d"
  ],
  "evidence_chunk_ids": [],
  "severity": "high",
  "validator_rules": {
    "requires_ast_symbol": "KinematicBody2D",
    "forbidden_answer_terms": ["KinematicBody2D is recommended in Godot 4"]
  }
}

Label‑Vorschläge:

Label Bedeutung
godot4_valid_api Verwendung einer für Godot 4 gültigen API
godot3_api_in_godot4 Godot 3‑API ist in einem Godot 4‑Projekt gemischt
deprecated_or_removed_api Verwendung einer veralteten/entfernten API
migration_required Migration von Godot 3 → 4 erforderlich
ambiguous_version_signal Unklare oder kollidierende Versionsinformationen
non_godot_noise Daten, die nichts mit Godot zu tun haben (Python/Web/Unity usw.)
unsafe_or_obfuscated_code Obfuskierter, kontrollierter oder verdächtiger Schadcode

Entwurf des PostgreSQL‑Schemas

PostgreSQL geht davon aus, dass pgvector verwendet wird. Die Stichwortsuche nutzt tsvector oder einen Trigram‑Index.

docs_chunks

Spalte Typ Beschreibung
id bigserial primary key interne ID
chunk_id text unique not null deterministische ID aus JSONL
doc_version text not null Dokumentenversion
source_url text not null URL der offiziellen Dokumentation
source_file text not null Pfad zur Markdown‑Datei
source_sha256 text not null Original‑Hash
doc_type text not null Dokumenttyp
symbol text repräsentatives API‑/Klassen‑Symbol
section_path jsonb not null Hierarchie der Überschriften
heading text aktueller Chunk‑Titel
content text not null zu durchsuchender Textkörper
code_blocks jsonb not null default '[]' Code‑Blöcke
api_symbols text[] not null default '{}' extrahierte Symbole
metadata jsonb not null default '{}' weitere Metadaten
embedding vector Einbettung
search_tsv tsvector Stichwortsuche
created_at timestamptz default now() Einfügezeitpunkt

Indizes:

Index Zweck
unique(chunk_id) Verhindert doppelte Einfügungen
ivfflat/hnsw(embedding) Semantische Suche
gin(search_tsv) Stichwortsuche
gin(api_symbols) Filter für API‑Symbole
btree(doc_type, symbol) Filter für class/API‑Dokumente

api_mapping

Spalte Typ Beschreibung
id bigserial primary key interne ID
mapping_id text unique not null deterministische ID
source_api text not null vorherige/Problem‑API
target_api text empfohlene API
change_type text not null rename, removed, behavior_change usw.
godot_from text Ausgangsversion
godot_to text Zielversion
confidence text not null Evidenzstufe
status text not null default 'candidate' candidate, approved, rejected
evidence_chunk_ids text[] not null default '{}' Beleg‑Chunks aus der offiziellen Dokumentation
match_terms text[] not null default '{}' Such‑Keywords
notes text Beschreibung
negative_patterns jsonb not null default '[]' verbotene Muster

Indizes:

Index Zweck
unique(mapping_id) Duplikatvermeidung
btree(source_api) exakte Suche
btree(target_api) Rückwärtssuche
gin(match_terms) Stichwortsuche
btree(status, confidence) Filter für Genehmigungsregeln

label_prototypes

Spalte Typ Beschreibung
id bigserial primary key interne ID
prototype_id text unique not null deterministische ID
label text not null Klassifizierungslabel
task_type text not null classification, migration_fix, patch_generation usw.
input_pattern text not null Erkennungsmuster
expected_finding text not null erwartetes Ergebnis
recommended_action text empfohlene Maßnahme
evidence_mapping_ids text[] not null default '{}' API‑Mapping‑Belege
evidence_chunk_ids text[] not null default '{}' Dokument‑Chunk‑Belege
severity text not null low, medium, high
validator_rules jsonb not null default '{}' Validierungsregeln
embedding vector Suche nach ähnlichen Fällen
search_tsv tsvector Stichwortsuche

Indizes:

Index Zweck
unique(prototype_id) Duplikatvermeidung
btree(label, task_type) Abfrage nach Label
ivfflat/hnsw(embedding) Suche nach ähnlichen Labels
gin(search_tsv) Stichwortsuche

AST Parser Eingabe/Ausgabe

Der AST Parser wandelt den Quellcode des Benutzers in eine durchsuchbare Struktur um, bevor er ihn direkt an das LLM übergibt. Das anfängliche Ziel sind .gd, .tscn, project.godot.

Eingabe

Eingabe Beschreibung
Benutzerfrage z. B.: „Bitte prüfe, ob dieses Projekt für Godot 4 sicher ist.“
Quellcode‑Dateien .gd, .tscn, .tres, project.godot
Projektstruktur Dateipfade, Szenenverbindungen, Ressourcenpfade

Ausgabeschema

{
  "project_id": "local-analysis-...",
  "godot_project": {
    "config_version": 5,
    "features": ["4.4", "Forward Plus"]
  },
  "files": [
    {
      "path": "scripts/player.gd",
      "language": "gdscript",
      "extends": "CharacterBody2D",
      "class_name": "Player",
      "symbols": ["CharacterBody2D", "Input", "move_and_slide"],
      "annotations": ["@onready"],
      "version_signals": ["godot4_annotation_syntax"],
      "diagnostics": []
    }
  ],
  "version_evidence": {
    "godot4": ["config_version=5", "@onready"],
    "godot3": []
  }
}

Initiale Extraktionsfelder:

Feld Zweck
extends Node/API‑Version bestimmen
class_name Projektinterne Symbolzuordnung
annotations @onready, @export usw. Godot‑4‑Signale
legacy_keywords onready var, export var, KinematicBody usw. Godot‑3‑Signale
method_calls Dokumentensuche und API‑Mapping‑Abfrage
scene_dependencies Szene‑/Skript‑Verknüpfungsprüfung
resource_paths Fehlende Ressourcen‑ und Asset‑Verknüpfungsprüfung

Retriever‑Verhalten

Der Retriever ist die Schicht, die vor dem LLM Belege auswählt.

  1. Absicht und Zielaufgabe aus der Benutzerfrage extrahieren.
  2. API‑Symbol, Versionssignal und Dateipfad aus dem AST‑Parser‑Ergebnis übernehmen.
  3. Zunächst ein exaktes Lookup in api_mapping durchführen.
  4. In docs_chunks gleichzeitig API‑Symbol‑Filter + Schlüsselwortsuche + Vektorsuche ausführen.
  5. Ähnliche Labels und Validierungsregeln aus label_prototypes holen.
  6. Die Suchergebnisse als Beleg‑Bundle sortieren.

Beleg‑Bundle:

{
  "query_id": "analysis-...",
  "task_type": "version_classification",
  "ast_summary": {},
  "doc_evidence": [],
  "api_mapping_evidence": [],
  "label_evidence": [],
  "retrieval_scores": {
    "exact_api_hits": 2,
    "keyword_hits": 8,
    "vector_hits": 12
  }
}

Validator und Qwen 3.6 Rollenaufteilung

Qwen 3.6 ist das Modell, das die gefundenen Belege liest und die Antwort zusammenstellt. Die endgültige Kennzeichnung, die Annahme von Belegen und die Prüfung verbotener Muster übernimmt der Validator.

Komponente Verantwortung
Retriever Suche nach relevanten offiziellen Dokumenten/API‑Mappings/Beleg‑IDs
Validator Prüfung auf fehlende Belege, verbotene Muster, Ausgabe‑JSON‑Format
Qwen 3.6 Zusammenstellung von Erklärungen, Korrekturrichtungen und Code‑Vorschlägen für den Nutzer

Vom Validator zu prüfende Punkte:

Punkt Kriterium
Vorhandensein von Beleg‑ID Die im Antworttext genutzte Dokument‑/Mapping‑/Label‑ID muss in den tatsächlichen Suchergebnissen vorhanden sein.
Godot‑4‑Standard In Godot‑4‑Projekten darf nicht zu Godot‑3‑APIs geraten werden.
Unsicherheit kennzeichnen Bei unzureichenden Belegen darf keine definitive Entscheidung getroffen werden; stattdessen wird ambiguous_version_signal verwendet.
Code‑Vorschlag prüfen Vorgeschlagener Code darf nicht mit der erkannten Projekt‑Dimension (2D/3D) kollidieren.
JSON‑Format Die interne Pipeline‑Ausgabe muss parse‑bares JSON sein.

Einfügereihenfolge

  1. outputs/godot_docs_full/summary.json und failed.json prüfen.
  2. manifest.json und pages/*.md laden.
  3. Einen Markdown‑Normalisierungs‑Report erstellen.
  4. docs_chunks.jsonl erzeugen.
  5. Aus den migration/class‑Dokumenten api_mapping.jsonl‑Kandidaten generieren.
  6. Mit genehmigten Regeln und repräsentativen Beispielen label_prototypes.jsonl erzeugen.
  7. Nur Datensätze, die die JSONL‑Schema‑Validierung bestehen, per Upsert in PostgreSQL einfügen.
  8. Embeddings erzeugen und den Vektor‑Index aktualisieren.
  9. Keyword‑Index und Exact‑Index aktualisieren.
  10. Die Retriever‑Ergebnisse mit Beispiel‑Fragen prüfen.

Qualitäts‑Checkliste

Phase Akzeptanzkriterium
Sammlung prüfen failed_count = 0, missing_from_searchindex = 0
Markdown‑Normalisierung Keine leeren Chunks, Original‑URL erhalten
JSONL‑Validierung Jede Zeile ist JSON‑parsbar, erforderliche Felder vorhanden
Duplikat‑Prüfung Keine Duplikate bei chunk_id, mapping_id, prototype_id
Beleg‑Prüfung api_mapping.evidence_chunk_ids existieren tatsächlich in docs_chunks
Such‑Prüfung Bei repräsentativen API‑Fragen werden sowohl Exact‑Hits als auch Docs‑Hits zurückgegeben
Antwort‑Prüfung Qwen‑Antworten enthalten keine unbegründeten Behauptungen und empfehlen keine Godot‑3‑APIs

Implementierungs‑Prioritäten

  1. Bericht zur Struktur‑Analyse von pages/*.md erstellen
  2. Skript zur Umwandlung in docs_chunks.jsonl schreiben
  3. Skript zur JSONL‑Schema‑Validierung schreiben
  4. DDL für PostgreSQL erstellen
  5. Einfügen von docs_chunks und Such‑Validierung durchführen
  6. Kandidaten für api_mapping erzeugen und manuellen Freigabe‑Workflow implementieren
  7. Initiales Label‑Set label_prototypes erstellen
  8. Minimal‑Felder aus dem AST‑Parser extrahieren
  9. Ausgabe‑Bundle der Retriever‑Belege erzeugen
  10. Loop zur Zusammenstellung von Validator‑+ Qwen 3.6‑Antworten verbinden

Kernprinzipien

  • Das originale Markdown der offiziellen Dokumentation wird nicht verändert, sondern erhalten.
  • JSONL dient als reproduzierbares Zwischenergebnis.
  • In der Datenbank müssen Originalpfad, Original‑URL, Hash und Version des Transformations‑Scripts gespeichert werden.
  • Das LLM darf keine eigenen Labels erfinden.
  • Die Entscheidung zwischen Godot 3 und 4 basiert auf AST‑Signal, API‑Mapping und Belegen aus der offiziellen Dokumentation.
  • Unsichere Kandidaten werden nicht sofort als Trainingsdaten verwendet, sondern bleiben im Status candidate.
  • Qwen 3.6 ist der Antwort‑Zusammenführer; die Bewertungs‑Kriterien liegen bei Retriever und Validator.

Nächste Schritte

Der nächste Schritt besteht darin, die Markdown‑Struktur von outputs/godot_docs_full/pages stichprobenartig zu analysieren. Da class‑Reference, migration‑ und tutorial‑Dokumente unterschiedliche Strukturen aufweisen, soll zunächst für jeden Dokumenttyp eine eigene Chunk‑Strategie definiert werden, anstatt eine einheitliche Regel anzuwenden.