플랫폼 아키텍처
시스템 구성도
┌─────────────────────────────────────────────────────────────┐
│ PlantPulse AI │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ AI Chat (코파일럿 UI) │ │
│ │ 자연어 대화 · SSE 스트리밍 · 리치 시각화 │ │
│ └────────────────────────┬──────────────────────────────┘ │
│ │ │
│ ┌────────────────────────┼──────────────────────────────┐ │
│ │ 내장 에이전트 (AgentOrchestrator + ToolRegistry) │ │
│ │ 에이전트 루프 · 도구 자동 호출 · LiteLLM(gpt-4o) │ │
│ └────────────────────────┬──────────────────────────────┘ │
│ │ │
│ ┌────────────┬───────────┴────┬─────────┬───────────────┐ │
│ │ 통합 MCP │ TimeSeries │ RAG │ AURA LLM │ │
│ │ (온톨로지 │ -Insight │(LightRAG│ LLM·Embed·Re │ │
│ │ 포함) │ 27도구 │ 서버) │ rank·Multi │ │
│ └─────┬──────┴───────┬────────┴────┬────┴───────────────┘ │
│ │ │ │ │
│ ┌─────┴────┬─────────┴─┬──────┬────┴────┬─────────┐ │
│ │Postgre │Cassan │Valkey│ MinIO │ Qdrant │ │
│ │ SQL │ dra │(Redis)│ (S3) │(Vector) │ │
│ └──────────┴───────────┴──────┴─────────┴─────────┘ │
│ (PostgreSQL·Cassandra·Redis·MinIO = 플랫폼 공용, Neo4j·Qdrant = LightRAG 저장소)
└─────────────────────────────────────────────────────────────┘
레이어 구조
PlantPulse AI는 4개 레이어로 구성됩니다.
프레젠테이션 레이어
| 구성 요소 | 역할 | 기술 |
|---|---|---|
| AI Chat Web | 사용자 대화 인터페이스 + 내장 에이전트 | Java 21, Spring Boot 3.4, JSP |
| TimeSeries Dashboard | 분석 결과 시각화 | Next.js, ECharts |
| RAG WebUI | 문서 관리 | LightRAG WebUI (/webui) |
AI 서비스 레이어
| 구성 요소 | 역할 | 기술 |
|---|---|---|
| 통합 MCP | 공장 데이터 게이트웨이 (116 API) + 온톨로지 (5 도구) | 플랫폼 server-web /api/v5/mcp, MCP Protocol |
| TimeSeries-Insight | 이상 탐지 + 예측 (27 도구) | Python, FastAPI, IBM Granite TSPulse, TTM |
| RAG | 기술 문서 검색 (3 도구) | LightRAG 1.5.4, Qdrant, Neo4j |
AI 인프라 레이어
| 구성 요소 | 역할 | 기술 |
|---|---|---|
| AURA LLM | 산업 특화 언어 모델 | 자체 파인튜닝 모델 (vLLM 서빙) |
| LiteLLM | LLM 프록시/라우팅 (채팅 LLM 게이트웨이) | OpenAI 호환 API |
| 내장 에이전트 | 에이전트 루프 + 도구 호출 오케스트레이션 | copliot-web AgentOrchestrator |
데이터 레이어
| 구성 요소 | 역할 | 포트 |
|---|---|---|
| PostgreSQL 18 | 관계형 데이터 (메타, 설정, 채팅 이력) | 5432 |
| Apache Cassandra | 시계열 데이터 (센서값, 추론 이력) | 9042 |
| Neo4j | 그래프 데이터 (온톨로지) | 7687 |
| Qdrant | 벡터 데이터 (임베딩) | 6333 |
| Valkey | 캐시 (세션, 임시 데이터) | 6379 |
| MinIO | 오브젝트 스토리지 (문서, 이미지) | 9000/9001 |
데이터 흐름
사용자 질의 처리 흐름
사용자 질문
│
▼
AI Chat Web ──SSE 스트리밍──▶ 브라우저
│
▼
내장 에이전트 (AgentOrchestrator 에이전트 루프)
│
├──▶ LiteLLM Proxy ──▶ AURA LLM (gpt-4o, 의도 분석 · tool-calling)
│
├──▶ 통합 MCP (실시간 데이터 조회 + 온톨로지 관계 탐색)
│ ├── 플랫폼 server-web /api/v5/mcp
│ └── Neo4j (그래프 DB)
│
├──▶ TimeSeries-Insight (이상 탐지/예측)
│ ├── Cassandra (시계열 데이터)
│ └── IBM Granite TSPulse / TTM
│
├──▶ RAG (LightRAG 문서 검색)
│ ├── Qdrant (벡터 검색)
│ └── Neo4j (지식 그래프)
│
└──▶ LiteLLM Proxy ──▶ AURA LLM (종합 답변 생성)
ISA-95 자산 계층 구조
PlantPulse는 ISA-95/OPC-UA 표준 기반의 자산 계층 구조를 따릅니다:
Company (회사)
└── Site (공장/사이트)
└── Area (구역)
└── Line (생산 라인)
└── Equipment (설비)
└── Tag (센서 태그)
└── Point (시계열 데이터)
모든 MCP 도구는 이 계층 구조를 기준으로 데이터를 조회합니다.
모듈 간 연동
┌──────────┐ 데이터+온톨로지 ┌──────────────────┐
│ PlantPulse│◄────────────────│ 통합 MCP │
│ 플랫폼 │ │ (server-web) │
│ (+ Neo4j) │ └────────┬─────────┘
└──────────┘ │
│
┌──────────┐ 센서 데이터 ┌─────┴────────────┐
│ Cassandra │◄────────────────│TimeSeries-Insight │
│ PostgreSQL│◄────────────────│ (이상탐지/예측) │
└──────────┘ └──────┬────────────┘
│
┌──────────┐ 벡터 검색 ┌─────┴──────┐
│ Qdrant │◄────────────────│ RAG │
│ Neo4j │◄────────────────│ (LightRAG) │
└──────────┘ └──────┬──────┘
│
┌──────┴──────┐
│ AURA LLM │
│ (통합 추론) │
└─────────────┘