18

실습: 가변 길이 경로로 고장 원인 사슬 따라가기

KG 기반 Q&A

학습 목표
  • 가변 길이 경로로 고장에서 조치·스킬까지의 사슬을 한 번에 따라간다
  • 관계 방향이 반대인 Worker를 OPTIONAL MATCH로 이어 붙인다
  • 탐색한 경로를 텍스트와 ASCII 그림으로 직렬화해 LLM에 넘긴다
  • 이 그래프에서 사슬이 몇 홉까지 뻗는지 직접 세어 5-Why와 무엇이 다른지 말한다

실습: 고장 원인 사슬을 가변 길이 경로로 따라가기

배경

도요타의 5-Why는 "왜?"를 다섯 번 되물어 근본 원인에 닿는 기법입니다. KG의 가변 길이 경로 탐색이 그 되묻기를 대신할 수 있습니다.

다만 이 그래프에서 사슬은 다섯 번 뻗지 않습니다. Fault -[:CAUSED_BY]-> RootCause -[:RESOLVED_BY]-> MaintenanceAction -[:REQUIRES_SKILL]-> Skill3홉에서 끝납니다. RootCause에서 다시 나가는 CAUSED_BY가 없기 때문입니다. *1..5라고 적어도 5홉짜리 결과는 나오지 않습니다. 실제로 몇 홉까지 나오는지 length(path)로 직접 세어 보세요. 사슬을 더 늘리려면 원인 사이에 CAUSED_BY를 한 단계 더 넣어야 합니다(마지막 확장 과제).

방향에 걸리는 곳 하나

작업자와 스킬은 (Worker)-[:HAS_SKILL]->(Skill)작업자에서 나갑니다. 그래서 -[...]->로 순방향만 따라가는 경로 탐색으로는 Skill에서 Worker로 갈 수 없습니다. 경로 끝에서 OPTIONAL MATCH (w:Worker)-[:HAS_SKILL]->(leaf)로 따로 이어 붙입니다. 관계 방향을 바꾸고 싶지 않다면 이 방법이 맞습니다.

실습 흐름

  1. 알람 입력 (예: E-201)
  2. 가변 길이 경로로 원인·조치·스킬까지 탐색
  3. 경로 끝의 Skill에 붙는 작업자를 이어 붙이기
  4. 경로를 텍스트로 직렬화
  5. LLM이 "왜?" 형식으로 단계별 설명 생성
  6. ASCII 다이어그램 출력

확장 과제

RootCause 사이에 CAUSED_BY를 한 단계 더 넣어 보세요. 예: 베어링 마모 ← 윤활 부족 ← 자동 급유 장치 막힘. 그러면 같은 쿼리로 4홉, 5홉 경로가 나오고 5-Why에 가까워집니다.

에디터 로딩 중...
힌트 보기
  • 가변 길이 경로 *1..5는 1홉부터 5홉까지 모든 경로를 반환합니다. 상한을 크게 준다고 없는 경로가 생기지는 않습니다
  • 변수 이름을 end로 쓰면 안 됩니다. END는 Cypher 예약어라 백틱 없이 쓰면 파서가 거부합니다
  • 관계 방향이 반대인 Worker는 경로 탐색으로 닿지 않습니다. OPTIONAL MATCH로 따로 이어 붙이세요
  • path.nodes와 path.relationships로 경로의 노드와 관계에 각각 접근합니다
  • length(path)로 실제 깊이를 세어 두면 사슬이 어디서 끝나는지 눈으로 확인됩니다
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
5-Why Cypher 경로 쿼리 정확성 점검AI 학습 팁

AI에게 가변 길이 Cypher 경로 쿼리가 5-Why 인과관계를 올바르게 탐색하는지, 사이클 및 성능 문제를 점검하게 하세요.

이 5-Why 자동화 Cypher 쿼리에서 인과관계 사이클(A→B→A)이 있을 때 무한 탐색이 발생하는지, [*1..5] 가변 경로가 실제로 5단계 WHY를 올바르게 순방향으로 따라가는지 분석하고, 사이클 방지 apoc.path 활용법과 LLM에 넘기기 전 경로 결과를 단순화하는 후처리 코드를 제안해줘.
이 팁이 도움이 됐나요?
용어