๋ฐ์ํ
์ ์กฐ๊ณต์ ์ ๋ถ๋ ์์ธ ๋ถ์(Anomaly Root Cause Analysis)์ ์๋ํํ๊ธฐ ์ํด
Reasoning Chain ๊ธฐ๋ฐ Agentic AI ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ค ํ๋ค.
๋ฐ์ดํฐ๋ฅผ ํตํ “์ด์ ํ์ง → ์์ธ ์ถ๋ก → ๊ทผ๊ฑฐ ๋ฌธํ ์ธ์ฉ → ์กฐ์น ์ ์” ๊ณผ์ ์
Agent Chain ํํ๋ก ๊ตฌ์ฑํ๊ณ , ๊ฐ ๋จ๊ณ์ ์
๋ ฅ·์ถ๋ ฅ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ์์ค.
โ ๋ชฉ์
- ์ ์กฐ ๋ถ๋์ ์์ธ์ ๋จ์ผ ๋ณ์๊ฐ ์๋ ๋ค์์ ์ํธ์์ฉ ๋ณ์์ ์ํด ๋ฐ์.
- LLM์ด ๋ฐ์ดํฐ๋ฅผ ๊ทผ๊ฑฐ๋ก ๋
ผ๋ฆฌ์ Reasoning Chain์ ๋ฐ๋ผ๊ฐ๋ฉฐ
์์ธ์ ์ค๋ช ํ๊ณ ๊ทผ๊ฑฐ ๋ฌธ์๋ฅผ ์ธ์ฉํด์ผ ํจ.
โก ์ ์ฒด ๊ตฌ์กฐ
[Sensor Data] โโ> Anomaly-Agent
↓
RootCause-Agent
↓
RAG-Agent
↓
Action-Agent
↓
Report-Agent
โข ๋จ๊ณ๋ณ ์ญํ
Agent์
๋ ฅ์ฒ๋ฆฌ ๋ก์ง์ถ๋ ฅ
| Anomaly-Agent | ์๊ณ์ด ๋ฐ์ดํฐ | Isolation Forest / TCN | ์ด์ ๊ตฌ๊ฐ (time range, variables) |
| RootCause-Agent | ์ด์ ๊ตฌ๊ฐ ๋ฐ์ดํฐ | ์๊ด๋ถ์, SHAP, Causal Inference | ์ฃผ์ ๋ณ์·์ํฅ๋ |
| RAG-Agent | ๋ณ์๋ช , ๊ณต์ ๋ช | ๋ฌธํ·SOP ๊ฒ์ | ๊ด๋ จ ์ ์ฐจ/ํ์ฉ๋ฒ์ |
| Action-Agent | ์์ธ+SOP ๋ด์ฉ | ์กฐ์น ์ ์ ์์ฑ | ์กฐ์น ํ ์คํธ |
| Report-Agent | ๋ชจ๋ ๊ฒฐ๊ณผ | ๋ฆฌํฌํธ ํตํฉ | PDF/DOCX ๋ณด๊ณ ์ |
โฃ ์์ ์๋๋ฆฌ์ค
์ ๋ ฅ: 2025-10-18 ๋ผ์ธ2 ์์จ ๊ธ๋ฝ
Anomaly-Agent: OvenTemp(±8โ), Speed(1.1m/s) ๊ฐ์ง
RootCause-Agent: Corr(Temp,Yield)=−0.81 → ์ฃผ์์์ธ Temp
RAG-Agent: SOP-HT-221 §3.2 ์ธ์ฉ (ํ์ฉ ±5โ)
Action-Agent: “์จ๋ PID ์ฌํ๋ ๋ฐ ์ผ์ ์ ๊ฒ”
Report-Agent: ๊ทผ๊ฑฐ ํฌํจ ๋ณด๊ณ ์ ์์ฑ
โค LangGraph ์ํฌํ๋ก ์์
nodes:
- anomaly_agent
- rootcause_agent
- rag_agent
- action_agent
- report_agent
edges:
- anomaly_agent -> rootcause_agent
- rootcause_agent -> rag_agent
- rag_agent -> action_agent
- action_agent -> report_agent
- ๊ฐ ๋ ธ๋์ ์ถ๋ ฅ์ JSON ํํ๋ก ์ ๋ฌ:
{
"variable": "OvenTemp",
"deviation": 8,
"impact": 0.81,
"sop_reference": "SOP-HT-221 §3.2",
"recommended_action": "Adjust PID controller"
}
โฅ ๊ธฐ์ ์ ํฌ์ธํธ
์์ญ๊ธฐ์ ์ค๋ช
| ์ด์ํ์ง | IsolationForest / TCN | ์ค์๊ฐ ์ด์ ๊ฐ์ง |
| ์์ธ์ถ๋ก | SHAP, CausalImpact | ๋ณ์ ์ํฅ๋ ์ถ์ |
| ๊ทผ๊ฑฐ๊ฒ์ | BM25+pgvector RAG | SOP/WI ์ธ์ฉ |
| ์กฐ์น์์ฑ | LLM (Instruction-tuned) | ์์ฐ์ด ์กฐ์น ์์ฑ |
| ์ฒด์ธ๊ด๋ฆฌ | LangGraph | ํ๋ก์ฐ ๋ฐ ์ฌ์๋ ๊ด๋ฆฌ |
โฆ ํ๊ฐ ํฌ์ธํธ
- ๋จ๊ณ๋ณ ์ ๋ ฅ/์ถ๋ ฅ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ์ ์ํ๋๊ฐ
- RootCause-Agent๊ฐ ์์น์ /๋ฌธํ์ ๊ทผ๊ฑฐ๋ฅผ ๊ฒฐํฉํ๋ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋๊ฐ
- ์ต์ข
๋ฆฌํฌํธ ์์ฑ๊น์ง์ Reasoning Chain์ ๋
ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์ฑํ๋๊ฐโ ๋ชฉ์
- ์ ์กฐ ๋ถ๋์ ์์ธ์ ๋จ์ผ ๋ณ์๊ฐ ์๋ ๋ค์์ ์ํธ์์ฉ ๋ณ์์ ์ํด ๋ฐ์.
- LLM์ด ๋ฐ์ดํฐ๋ฅผ ๊ทผ๊ฑฐ๋ก ๋
ผ๋ฆฌ์ Reasoning Chain์ ๋ฐ๋ผ๊ฐ๋ฉฐ
์์ธ์ ์ค๋ช ํ๊ณ ๊ทผ๊ฑฐ ๋ฌธ์๋ฅผ ์ธ์ฉํด์ผ ํจ.
โก ์ ์ฒด ๊ตฌ์กฐ
โข ๋จ๊ณ๋ณ ์ญํ
โฃ ์์ ์๋๋ฆฌ์ค
โค LangGraph ์ํฌํ๋ก ์์- ๊ฐ ๋ ธ๋์ ์ถ๋ ฅ์ JSON ํํ๋ก ์ ๋ฌ:
{ "variable": "OvenTemp", "deviation": 8, "impact": 0.81, "sop_reference": "SOP-HT-221 §3.2", "recommended_action": "Adjust PID controller" }
โฅ ๊ธฐ์ ์ ํฌ์ธํธ
โฆ ํ๊ฐ ํฌ์ธํธ- ๋จ๊ณ๋ณ ์ ๋ ฅ/์ถ๋ ฅ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ์ ์ํ๋๊ฐ
- RootCause-Agent๊ฐ ์์น์ /๋ฌธํ์ ๊ทผ๊ฑฐ๋ฅผ ๊ฒฐํฉํ๋ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋๊ฐ
- ์ต์ข ๋ฆฌํฌํธ ์์ฑ๊น์ง์ Reasoning Chain์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์ฑํ๋๊ฐ
-
์์ญ๊ธฐ์ ์ค๋ช
์ด์ํ์ง IsolationForest / TCN ์ค์๊ฐ ์ด์ ๊ฐ์ง ์์ธ์ถ๋ก SHAP, CausalImpact ๋ณ์ ์ํฅ๋ ์ถ์ ๊ทผ๊ฑฐ๊ฒ์ BM25+pgvector RAG SOP/WI ์ธ์ฉ ์กฐ์น์์ฑ LLM (Instruction-tuned) ์์ฐ์ด ์กฐ์น ์์ฑ ์ฒด์ธ๊ด๋ฆฌ LangGraph ํ๋ก์ฐ ๋ฐ ์ฌ์๋ ๊ด๋ฆฌ -
nodes: - anomaly_agent - rootcause_agent - rag_agent - action_agent - report_agent edges: - anomaly_agent -> rootcause_agent - rootcause_agent -> rag_agent - rag_agent -> action_agent - action_agent -> report_agent - ์ ๋ ฅ: 2025-10-18 ๋ผ์ธ2 ์์จ ๊ธ๋ฝ
- Anomaly-Agent: OvenTemp(±8โ), Speed(1.1m/s) ๊ฐ์ง
RootCause-Agent: Corr(Temp,Yield)=−0.81 → ์ฃผ์์์ธ Temp
RAG-Agent: SOP-HT-221 §3.2 ์ธ์ฉ (ํ์ฉ ±5โ)
Action-Agent: “์จ๋ PID ์ฌํ๋ ๋ฐ ์ผ์ ์ ๊ฒ”
Report-Agent: ๊ทผ๊ฑฐ ํฌํจ ๋ณด๊ณ ์ ์์ฑ -
Agent์ ๋ ฅ์ฒ๋ฆฌ ๋ก์ง์ถ๋ ฅ
Anomaly-Agent ์๊ณ์ด ๋ฐ์ดํฐ Isolation Forest / TCN ์ด์ ๊ตฌ๊ฐ (time range, variables) RootCause-Agent ์ด์ ๊ตฌ๊ฐ ๋ฐ์ดํฐ ์๊ด๋ถ์, SHAP, Causal Inference ์ฃผ์ ๋ณ์·์ํฅ๋ RAG-Agent ๋ณ์๋ช , ๊ณต์ ๋ช ๋ฌธํ·SOP ๊ฒ์ ๊ด๋ จ ์ ์ฐจ/ํ์ฉ๋ฒ์ Action-Agent ์์ธ+SOP ๋ด์ฉ ์กฐ์น ์ ์ ์์ฑ ์กฐ์น ํ ์คํธ Report-Agent ๋ชจ๋ ๊ฒฐ๊ณผ ๋ฆฌํฌํธ ํตํฉ PDF/DOCX ๋ณด๊ณ ์ -
[Sensor Data] โโ> Anomaly-Agent ↓ RootCause-Agent ↓ RAG-Agent ↓ Action-Agent ↓ Report-Agent
๋ฐ์ํ