39분
실습: Cypher로 제조 Knowledge Graph 구축
Neo4j & Cypher
실습: Cypher로 제조 Knowledge Graph 구축
온톨로지 & Knowledge Graph > Neo4j & Cypher
학습 목표
- 이번 주 전체가 쓸 정본 시드 그래프를 Neo4j에 적재한다
- id를 병합 키로 삼아 여러 번 실행해도 같은 결과가 나오게 만든다
- UNWIND와 MERGE로 노드 115건과 관계 183건을 배치로 넣는다
- 적재 결과를 라벨별·관계별로 세어 기대값과 맞는지 확인한다
실습: 제조 Knowledge Graph 정본 시드 구축
목표
이번 주 전체가 쓸 데이터를 Neo4j에 올립니다. Day 3 GraphRAG, Day 4 대화형 Q&A, Day 5 프로젝트가 모두 여기서 만든 그래프를 조회하므로, 여기서 정한 id 체계와 관계 이름이 남은 나흘을 좌우합니다.
사전 준비
- Neo4j 실행 중 확인 (Docker 또는 Aura)
pip install neo4j
이 실습이 지키는 규칙 네 가지
| 규칙 | 안 지키면 |
|---|---|
병합 키는 이름이 아니라 id | 여덟 대의 "스핀들 유닛"이 노드 하나로 합쳐지고, 그 밑 베어링 하나가 여덟 대의 부품이 된다 |
MERGE + SET만 쓰고 CREATE는 쓰지 않는다 | 다시 실행할 때마다 그래프가 두 배로 늘어난다 |
라벨은 다중 라벨로 붙인다 (:Equipment:CNCMill) | 기종별 조회와 전체 조회 중 하나를 포기하게 된다 |
UNIQUE는 id에만 건다 | 같은 카탈로그 번호(BRG-6205-2RS)를 쓰는 다른 설비의 베어링이 적재되지 않는다 |
진행 순서
- 원천 표와
build_dataset()은 완성되어 있습니다. 먼저 읽고 구조를 파악하세요. setup_schema(): 라벨마다idUNIQUE 제약과 조회용 인덱스를 만듭니다.load():UNWIND+MERGE로 노드와 관계를 배치 적재합니다.query_parts_at_risk(): 사용률이 임계값을 넘는 부품을 조회합니다.- 스크립트를 두 번 실행해 노드·관계 수가 변하지 않는지 확인합니다.
결과 확인
노드 115 / 관계 183두 번째 실행에서도 같은 수가 나와야 합니다. 늘어났다면 CREATE가 섞였거나 병합 키가 틀린 것입니다.
Neo4j Browser에서 CALL db.schema.visualization()을 실행하면 전체 스키마가 그림으로 나옵니다.
쿼리 문법이 아직 어색하면 Cypher Playground 시뮬레이터에서 패턴을 먼저 손에 익히세요. 다만 이 실습의 적재는 실제 Neo4j에서 해야 합니다. Playground는 집계·WITH·쓰기 절을 지원하지 않아 결과가 달라집니다.
에디터 로딩 중...
힌트 보기
- • 라벨과 관계 타입은 파라미터로 넘길 수 없습니다. 문자열로 조립하되 ALLOWED_LABELS·ALLOWED_RELS로 먼저 걸러야 임의 문자열이 쿼리에 섞이지 않습니다
- • UNWIND $rows AS row MERGE (n:`Equipment` {id: row.id}) SET n += row.props — SET n += 는 딕셔너리를 한 번에 덮어씁니다
- • 추가 라벨은 같은 SET 절에서 SET n += row.props, n:`CNCMill` 로 붙입니다
- • 관계는 MATCH를 두 줄로 나눠 씁니다. MATCH (a {...}), (b {...}) 처럼 쉼표로 붙이면 한쪽이 없을 때 조용히 0행이 됩니다
- • 적재 후 MATCH (n) RETURN count(n) 과 MATCH ()-[r]->() RETURN count(r) 로 기대값(115 / 183)과 맞는지 확인하세요
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
에이전트에게 Cypher를 시키고 검증하기AI 학습 팁
AI 에이전트에게 자연어 질문으로 Cypher를 짜게 한 뒤, 옆 시뮬레이터에서 실행해 결과를 검증하세요. 틀린 쿼리를 고쳐가는 과정이 진짜 실력이 됩니다.
다음 질문에 답하는 Neo4j Cypher를 작성해줘: "CNC-7호기 고장이 영향을 주는 모든 후공정을 2-hop 이내로 찾아줘". 스키마: (Equipment)-[:PERFORMS]->(Process)-[:NEXT]->(Process)
이 팁이 도움이 됐나요?
실습 — 직접 해보기
Cypher Playground
이 실습의 적재는 실제 Neo4j 에서 합니다. 놀이터에 실려 있는 제조 데이터셋은 Equipment·Worker·Process·Defect 넷뿐이라 여기서 만드는 스키마와 다르고, 놀이터는 학습용 간이 엔진이라 실제 Neo4j 와 지원 범위가 같지 않습니다. 문법 패턴을 손에 익히는 자리로만 쓰고, 적재가 제대로 됐는지는 Neo4j Browser 에서 확인하세요. 화면 아래 「한계」를 펼치면 여기서 도는 범위가 적혀 있습니다.