환경 변수 설정
PlantPulse AI 의 설정은 /etc/kopens/plantpulse-ai.env 한 파일에서 출발합니다.
sudo vi /etc/kopens/plantpulse-ai.env
/etc/kopens/ 밑이다경로는 /etc/kopens/plantpulse-ai.env 입니다. 설치 디렉터리
(/opt/kopens/plantpulse-ai-docker) 안이 아니라 repo 트리 밖에 있고, 권한은 0600
입니다. platform · ai · studio 세 제품이 같은 규약으로
/etc/kopens/plantpulse-<제품>.env 를 씁니다.
compose/.env 는 옛 경로입니다. 지금은 아무도 읽지 않으므로 거기를 고쳐도 스택은
바뀌지 않습니다. 옛 파일이 남아 있어도 이행 후에는 대조용일 뿐입니다.
아래 표의 *_PASSWORD · *_API_KEY 는 파일만 고쳐서는 반영이 끝나지 않습니다. Neo4j 처럼
서버 계정이 정본인 값은 서버측도 함께 바꿔야 하고, 순서를 틀리면 인증이 깨진 채로
남습니다. 전용 도구를 쓰세요 — 비밀번호 · API 키 변경.
값을 바꾼 뒤에는 서비스를 다시 만들어야 합니다(docker restart 는 env 를 다시 읽지
않습니다).
cd /opt/kopens/plantpulse-ai-docker
bin/restart.sh
PlantPulse IIoT 서버 연결
PlantPulse AI가 연동하는 PlantPulse IIoT 플랫폼 서버 정보입니다.
| 변수 | 설명 | 기본값 |
|---|---|---|
PP_SERVER_HOST | PlantPulse IIoT 서버 IP | 100.68.69.41 |
PP_SERVER_PORT | 서버 포트 | 7443 |
PP_SERVER_SSL | SSL 사용 여부 | true |
PP_SERVER_USERNAME | API 인증 사용자 | api |
PP_SERVER_PASSWORD | API 인증 비밀번호 | api123! |
시스템 경로
| 변수 | 설명 | 기본값 |
|---|---|---|
PP_MODE | 운영 모드 | MASTER |
PP_HOME | 홈 디렉토리 | /home/kopens |
PP_DATA_DIR | 데이터 저장 경로 | /data1/pp-data |
PP_TEMP_DIR | 임시 파일 경로 | /data1/pp-temp |
JAVA_HOME | JDK 경로 | $PP_HOME/tools/java/jdk-21 |
AI 추론 서버
LiteLLM 프록시를 통해 모든 AI 서비스가 LLM에 접근합니다.
| 변수 | 설명 | 기본값 |
|---|---|---|
PI_INFERENCE_SERVER_BASE_URL | LLM API 엔드포인트 | http://127.0.0.1:4000/v1 |
PI_INFERENCE_SERVER_API_KEY | API 키 | 설치-시-변경 |
통합 MCP (플랫폼)
MCP·온톨로지 도구는 PlantPulse 플랫폼 server-web 통합 MCP(/api/v5/mcp)에서 제공됩니다. 접속 정보는 AI Chat Web의 web/config/application.properties에서 관리합니다.
| 항목 | 설명 |
|---|---|
mcp.api.url | 통합 MCP 베이스 URL (플랫폼 server-web) |
mcp.api.token | api_key 인증 토큰 |
mcp.tools.enabled | 통합 MCP 도구 사용 여부 |
2026-07 개편으로 Langflow는 제거되었습니다. 채팅/에이전트 오케스트레이션은 AI Chat Web 내장 에이전트가 담당하며, LLM은 위의 LiteLLM(추론 서버)을 경유합니다.
RAG (LightRAG)
RAG 엔진은 LightRAG 1.5.4 서버입니다. 아래 항목은 LightRAG가 사용하는 LLM·임베딩·검색 설정으로, 배포 환경(compose/env)에서 관리됩니다.
LLM 설정
| 변수 | 설명 | 기본값 |
|---|---|---|
LLM_MODEL | 사용 LLM 모델 | gpt-4o |
VISION_MODEL | 비전 모델 | gpt-4o |
LLM_TEMPERATURE | 생성 온도 | 0.7 |
LLM_TOP_P | Top-P 샘플링 | 0.8 |
LLM_TIMEOUT | LLM 타임아웃 (초) | 600 |
임베딩 설정
| 변수 | 설명 | 기본값 |
|---|---|---|
EMBED_MODEL | 임베딩 모델 | text-embedding-3-large |
EMBED_DIM | 임베딩 차원 | 2560 |
EMBED_MAX_TOKENS | 최대 토큰 | 8192 |
리랭커 설정
| 변수 | 설명 | 기본값 |
|---|---|---|
ENABLE_RERANKER | 리랭커 사용 | true |
RERANK_MODEL | 리랭크 모델 | rerank-multilingual-v3.0 |
TOP_K | 최종 반환 수 | 5 |
RERANK_TOP_K | 리랭크 후보 수 | 10 |
검색 설정
| 변수 | 설명 | 기본값 |
|---|---|---|
RAG_CONTEXT_MODE | 컨텍스트 모드 | chunk |
RAG_MAX_CONTEXT_TOKENS | 최대 컨텍스트 토큰 | 3200 |
RAG_CONTEXT_FILTER_TYPES | 필터 타입 | text,image,table |
ENABLE_MULTIMODAL | 멀티모달 사용 | true |
DOC_PARSER | 문서 파서 | docling |
청킹 설정
| 변수 | 설명 | 기본값 |
|---|---|---|
CHUNK_SIZE | 청크 크기 | 512 |
CHUNK_OVERLAP_SIZE | 청크 오버랩 | 50 |
데이터베이스
PostgreSQL
| 변수 | 설명 | 기본값 |
|---|---|---|
POSTGRES_HOST | 호스트 | 127.0.0.1 |
POSTGRES_PORT | 포트 | 5432 |
POSTGRES_MAX_CONNECTIONS | 최대 연결 | 12 |
Cassandra
| 변수 | 설명 | 기본값 |
|---|---|---|
TS_CASS_HOST | Cassandra 호스트 | 192.168.0.41 |
TS_CASS_USER | 사용자 | cassandra |
Qdrant
| 변수 | 설명 | 기본값 |
|---|---|---|
QDRANT_URL | Qdrant URL | http://127.0.0.1:6333 |
QDRANT_API_KEY | API 키 | qdrant-key-123 |
QDRANT_DISTANCE | 거리 메트릭 | Cosine |
Neo4j
| 변수 | 설명 | 기본값 |
|---|---|---|
NEO4J_URI | Neo4j URI | bolt://127.0.0.1:7687 |
NEO4J_USERNAME | 사용자 | neo4j |
NEO4J_PASSWORD | 비밀번호 | neo4j123 |
Valkey (Redis)
| 변수 | 설명 | 기본값 |
|---|---|---|
REDIS_URI | Redis URI | redis://:redis123@127.0.0.1:6379/0 |
MinIO
| 변수 | 설명 | 기본값 |
|---|---|---|
MINIO_ROOT_USER | 관리자 ID | minio |
MINIO_ROOT_PASSWORD | 관리자 비밀번호 | minio123! |
TimeSeries
| 변수 | 설명 | 기본값 |
|---|---|---|
TS_CASS_HOST | Cassandra 호스트 | 192.168.0.41 |
TS_PG_HOST | PostgreSQL 호스트 | 100.68.69.41 |
TS_PG_DB | 데이터베이스 | pp |
TS_EMBED_URL | 임베딩 API URL | http://127.0.0.1:4000/v1/embeddings |
TS_EMBED_MODEL | 임베딩 모델 | text-embedding-3-large |
TS_EMBED_DIM | 임베딩 차원 | 2560 |
Ontology (통합 MCP로 이관)
온톨로지는 독립 서비스(구 plantpulse-ontology)에서 분리되어 플랫폼 통합 MCP(server-web /api/v5/mcp)에 흡수되었습니다. DB↔Neo4j 동기화 설정은 플랫폼 server-web에서 관리하므로 AI 스택 env.sh에는 더 이상 온톨로지 전용 변수가 없습니다. Neo4j는 LightRAG 그래프 저장소로 계속 사용됩니다(위 NEO4J_* 참조).
CUDA (GPU)
GPU 사용 시 주석을 해제하고 설정합니다:
export CUDA_VISIBLE_DEVICES="0,1,2,3"
export CUDA_MANAGED_FORCE_DEVICE_ALLOC="1"
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True,max_split_size_mb:128
GPU가 없는 환경에서는 CPU 모드로 자동 전환됩니다. TimeSeries 서비스의 경우 Dockerfile.cpu로 CPU 전용 빌드도 가능합니다.