βœ” 🎯 End-to-End P&ID Graph Pipeline (μ‹€μ „ ꡬ쑰) β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ P&ID PDF Input β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 1. Document Parsing Layer β”‚ β”‚ (layout + text + tables) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 2. Spatial Element Extraction β”‚ β”‚ (symbols + coordinates) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 3. Entity Extraction (LLM) β”‚ β”‚ FIC-101, Pump-01, Valve... β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 4. Relationship Inference β”‚ β”‚ (rules + LLM hybrid) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 5. Graph Builder β”‚ β”‚ nodes + edges β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 6. DB Integration Layer β”‚ β”‚ (existing OPC + SQL system) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ βœ” 1️⃣ Document Parsing Layer (PDF β†’ ꡬ쑰화) 기술 Unstructured μ—­ν•  ν…μŠ€νŠΈ μΆ”μΆœ ν‘œ μΆ”μΆœ 블둝 segmentation page coordinate μœ μ§€ 좜λ ₯ μ˜ˆμ‹œ { "page": 12, "elements": [ { "text": "FIC-101", "bbox": [120, 300, 160, 320] } ] } πŸ‘‰ 핡심: μ’Œν‘œ λ°˜λ“œμ‹œ μœ μ§€ βœ” 2️⃣ Spatial Element Extraction (핡심 단계) μ—¬κΈ°μ„œ P&IDκ°€ μ‚΄μ•„λ‚œλ‹€. ν•΄μ•Ό ν•  것 symbol detection line detection proximity mapping κ²°κ³Ό JSON { "FIC-101": { "x": 120, "y": 300 }, "FT-101": { "x": 110, "y": 220 }, "Valve-203": { "x": 300, "y": 310 } } βœ” 3️⃣ Entity Extraction (LLM) λͺ¨λΈ Qwen (via vLLM) μž…λ ₯ Extract all P&ID entities: - controller - sensor - valve - pump 좜λ ₯ [ {"name":"FIC-101","type":"controller"}, {"name":"FT-101","type":"sensor"}, {"name":"Valve-203","type":"valve"} ] βœ” 4️⃣ Relationship Inference (κ°€μž₯ μ€‘μš”) μ—¬κΈ°μ„œ 2개λ₯Ό μ„žλŠ”λ‹€: A. Rule Engine (ν•„μˆ˜) if sensor near controller: relation = "signal" if controller connected to valve: relation = "control" if pump β†’ tank: relation = "flow" B. LLM 보쑰 νŒλ‹¨ Determine relationship based on P&ID context: Entities + coordinates μ΅œμ’… 좜λ ₯ [ { "source": "FT-101", "target": "FIC-101", "relation": "signal", "confidence": 0.93 }, { "source": "FIC-101", "target": "Valve-203", "relation": "control", "confidence": 0.91 } ] βœ” 5️⃣ Graph Builder nodes = set() edges = [] for r in relations: nodes.add(r["source"]) nodes.add(r["target"]) edges.append(r) Graph ꡬ쑰 { "nodes": [...], "edges": [...] } βœ” 6️⃣ DB Integration (λ„ˆ κΈ°μ‘΄ μ‹œμŠ€ν…œ) μ—¬κΈ°μ„œ λ„ˆ 강점: OPC UA 있음 βœ” NL2SQL 있음 βœ” DB 있음 βœ” μ €μž₯ μ „λž΅ P&ID Graph DB ↓ Mapping Layer ↓ OPC Tags / SQL semantic layer βœ” πŸ”₯ 핡심 섀계 포인트 (μ§„μ§œ μ€‘μš”) ❗ 1. LLM은 β€œκ²°μ •μžβ€κ°€ μ•„λ‹ˆλ‹€ πŸ‘‰ β€œν•΄μ„ 보쑰” μ—­ν•  ❗ 2. μ’Œν‘œκ°€ 핡심이닀 P&IDλŠ” ν…μŠ€νŠΈκ°€ μ•„λ‹ˆλΌ: 곡간 + μ—°κ²° ꡬ쑰 ❗ 3. Rule Engine μ—†μœΌλ©΄ μ‹€νŒ¨ν•œλ‹€ LLM 단독 = hallucination βœ” πŸ“Œ μ΅œμ’… μ•„ν‚€ν…μ²˜ (μ™„μ„±ν˜•) P&ID PDF ↓ Unstructured Parser ↓ Spatial Engine ↓ Qwen (Entity Extraction) ↓ Rule Engine (relationship) ↓ Graph Builder ↓ DB + OPC Integration βœ” πŸš€ 이 ꡬ쑰의 의미 이건 λ‹¨μˆœ κΈ°λŠ₯이 μ•„λ‹ˆλΌ: πŸ‘‰ β€œEngineering Knowledge Graph 생성 엔진” βœ” λ‹€μŒ 단계 (μ§„μ§œ μ‹€μ „) μ›ν•˜λ©΄ μ—¬κΈ°μ„œ λ°”λ‘œ μ΄μ–΄μ„œ: 1️⃣ P&ID μ‹€μ œ PDF κΈ°μ€€ μ½”λ“œ 2️⃣ Rule engine 상세 섀계 (ISA 기반) 3️⃣ Qwen prompt μ΅œμ ν™” (μ‚°μ—…μš©) 4️⃣ Graph DB vs SQL ꡬ쑰 선택