Diagramme und Schemata: Visuelle Informationen extrahieren
Umfassender Leitfaden zur Integration von Diagrammen, technischen Schemata und Infografiken in Ihr RAG-System: Extraktion, Interpretation und Indexierung mit den vision models.
Diagramme und Schemata : Visuelle Informationen extrahieren
Diagramme, technische Schemata und Infografiken enthalten eine enorme Informationsdichte. Eine Systemarchitektur, ein Flowchart oder ein Schaltplan kodiert Stunden an Dokumentation in einem einzigen Bild. Dieser Leitfaden zeigt, wie Sie diese visuellen Inhalte in Ihrem RAG-System durchsuchbar machen.
Die Herausforderung der Diagramme
Warum das anders ist als Fotos
| Bildtyp | Merkmale | Herausforderung für RAG |
|---|---|---|
| Foto | Kontinuierliche Pixel, erkennbare Objekte | Vision models excellieren |
| Diagramm | Geometrische Formen, Beziehungen, Text | Struktur muss verstanden werden |
| Technisches Schema | Normierte Symbole, Konventionen | Spezifisches Vokabular |
| Infografik | Mix aus Text/Visuellem, Hierarchie | Geordnete Extraktion |
Anwendungsfälle im Unternehmen
- IT : Systemarchitekturen, UML-Diagramme, Netzwerkschemata
- Industrie : Technische Pläne, elektrische Schaltpläne, P&ID
- Business : Organigramme, Prozessmaps, Flowcharts
- Data : ERD-Diagramme, Data Lineage, Pipelines
- Marketing : Infografiken, Präsentationen, visuelle Reports
ROI der Indexierung
- -80% Suchzeit in der technischen Dokumentation
- +50% Verständnis komplexer Systeme
- Nachvollziehbarkeit : Ursprung einer Architekturentscheidung wiederfinden
Typen von Diagrammen und Strategien
Strategie nach Typ
| Typ | Primäre Extraktion | Anreicherung |
|---|---|---|
| Flussdiagramm | GPT-4V-Beschreibung | Mermaid-Code |
| UML | Vision + OCR | PlantUML-Code |
| Architektur | Zonen + Beziehungen | DOT/Graphviz |
| Elektrisches Schema | Symbole + OCR | Netlist |
| Infografik | Abschnitte + Text | Markdown-Struktur |
Extraktion mit Vision Models
Prompt engineering pour diagrammes
DEVELOPERpythonfrom openai import OpenAI import base64 def extract_diagram_info( image_path: str, diagram_type: str = "auto", client: OpenAI = None ) -> dict: """ Extrahiert die strukturierten Informationen eines Diagramms. """ if client is None: client = OpenAI() with open(image_path, "rb") as f: img_base64 = base64.b64encode(f.read()).decode("utf-8") prompts = { "flowchart": """Analysiere dieses Flowchart: 1. Hauptschritte in der richtigen Reihenfolge 2. Entscheidungspunkte und Verzweigungen 3. Haupt- und alternativer Datenfluss 4. Ein-/Ausstiegspunkte""", "architecture": """Analysiere diese Architektur: 1. Komponenten (Services, Datenbanken, APIs) 2. Verbindungen und Protokolle 3. Layer (Frontend, Backend, Data, Infra) 4. Genannte Technologien""", "auto": """Analysiere dieses Diagramm: 1. Diagrammtyp 2. Sichtbare Elemente 3. Beziehungen zwischen Elementen 4. Sichtbarer Text 5. Anwendungskontext""" } prompt = prompts.get(diagram_type, prompts["auto"]) response = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": [ {"type": "text", "text": prompt}, {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img_base64}", "detail": "high"}} ] }], max_tokens=2000 ) return {"extraction": response.choices[0].message.content}
Generierung von Mermaid-Code
DEVELOPERpythondef diagram_to_mermaid(image_path: str, client: OpenAI) -> str: """Konvertiert ein Diagramm in Mermaid-Code.""" with open(image_path, "rb") as f: img_base64 = base64.b64encode(f.read()).decode("utf-8") prompt = """Konvertiere dieses Diagramm in Mermaid-Code. Beispiel: ```mermaid graph TD A[Start] --> B{Decision} B -->|Yes| C[Action 1] B -->|No| D[Action 2] ```""" response = client.chat.completions.create( model="gpt-4o", messages=[{ "role": "user", "content": [ {"type": "text", "text": prompt}, {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img_base64}", "detail": "high"}} ] }], max_tokens=2000 ) return response.choices[0].message.content
Indexierung für das RAG
Datenstruktur
DEVELOPERpythonfrom dataclasses import dataclass, field from typing import Optional, List @dataclass class DiagramDocument: diagram_id: str source_file: str diagram_type: str description: str extracted_text: str components: List[str] relationships: List[dict] mermaid_code: Optional[str] domain: str technologies: List[str] = field(default_factory=list) keywords: List[str] = field(default_factory=list) def to_embedding_text(self) -> str: parts = [ f"Type: {self.diagram_type}", f"Domain: {self.domain}", f"Description: {self.description}", ] if self.components: parts.append(f"Components: {', '.join(self.components)}") if self.technologies: parts.append(f"Technologies: {', '.join(self.technologies)}") return "\n".join(parts)
Indexierungspipeline
DEVELOPERpythonfrom qdrant_client import QdrantClient from qdrant_client.models import VectorParams, Distance, PointStruct class DiagramRAGPipeline: def __init__(self): self.qdrant = QdrantClient(url="http://localhost:6333") self.openai = OpenAI() self.collection_name = "diagram_rag" def process_diagram(self, image_path: str, diagram_type: str = "auto") -> DiagramDocument: extraction = extract_diagram_info(image_path, diagram_type, self.openai) mermaid = diagram_to_mermaid(image_path, self.openai) return DiagramDocument( diagram_id=hashlib.md5(image_path.encode()).hexdigest(), source_file=image_path, diagram_type=diagram_type, description=extraction['extraction'], extracted_text="", components=[], relationships=[], mermaid_code=mermaid, domain="general" ) def index_diagram(self, doc: DiagramDocument): text = doc.to_embedding_text() response = self.openai.embeddings.create( model="text-embedding-3-small", input=text ) point = PointStruct( id=hash(doc.diagram_id) % (2**63), vector=response.data[0].embedding, payload={ "diagram_id": doc.diagram_id, "source_file": doc.source_file, "content": text, "mermaid_code": doc.mermaid_code } ) self.qdrant.upsert(collection_name=self.collection_name, points=[point])
Kosten und Performance
Kosten pro Diagramm
| Vorgang | Kosten |
|---|---|
| Extraktion GPT-4o | $0.02-0.05 |
| OCR (lokal) | $0 |
| Code-Generierung | $0.01-0.03 |
| Embedding | $0.0001 |
| Gesamt | ~$0.05-0.10 |
Genauigkeit nach Typ
| Diagrammtyp | Genauigkeit |
|---|---|
| Einfaches Flowchart | 95% |
| IT-Architektur | 85% |
| UML-Klassen | 80% |
| Elektrisches Schema | 70% |
Integration mit Ailog
Ailog unterstützt die Indexierung von Diagrammen :
- Upload : PNG, JPG, SVG, PDF
- Automatische Erkennung : Diagrammtyp
- Intelligente Extraktion : Komponenten und Beziehungen
- Generierter Code : Reproduzierbares Mermaid
Testen Sie den Diagram RAG auf Ailog
FAQ
Verwandte Leitfäden
Tags
Verwandte Artikel
RAG für Bilder: Vision models und visuelle Suche
Umfassender Leitfaden zur Integration von Bildern in Ihr RAG-System: Vision models, multimodal embeddings, Indexierung und visuelle Suche mit GPT-4V, Claude Vision und CLIP.
RAG Multimodal: Bilder, PDFs und über den Text hinaus
Erweitern Sie Ihr RAG über den Text hinaus: Indexierung von Bildern, Extraktion von PDFs, Tabellen und Grafiken für einen wirklich umfassenden Assistenten.
Stand der Technik: RAG multimodal 2026
Überblick über RAG multimodal im Jahr 2026: vision-language-Modelle, multimodale Embeddings und Architekturen für die Verarbeitung von Bildern, PDFs und Dokumenten.