63

실습: 제조 GraphRAG 파이프라인 구축

GraphRAG 통합

학습 목표
  • 자연어 질문에서 알람 코드·설비·의도를 뽑아내는 추출기를 만든다
  • 의도별 Cypher 템플릿을 화이트리스트로 두고 값은 파라미터로만 넘긴다
  • KG 탐색 결과를 LLM이 읽을 맥락으로 바꾸고 답변을 구성한다
  • 탐색이 실패했을 때와 결과가 0행일 때를 서로 다른 답으로 구분한다

실습: 제조 GraphRAG 파이프라인 구축

목표

자연어 질문 → 엔티티 추출 → Cypher 템플릿 선택 → KG 탐색 → 맥락 구성 → 답변 파이프라인을 직접 만듭니다.

사전 준비

pip install neo4j

Day 2의 seed_kg.py를 먼저 실행해 그래프(노드 115 / 관계 183)를 올려 두세요. 이 실습의 모든 쿼리가 그 그래프를 조회합니다.

왜 LLM에게 Cypher를 짓게 하지 않는가

이 실습은 템플릿 화이트리스트 방식입니다. 미리 검증한 쿼리만 쓰고, 값은 파라미터로만 받습니다. LLM이 Cypher를 자유롭게 생성하는 방식(GraphCypherQAChain)은 p8w7-d3-langchain-neo4j에서 보고, 그 위험을 막는 검증기는 Day 4 p8w7-d4-nl2cypher에서 만듭니다. 현장에 먼저 올릴 수 있는 것은 이쪽입니다.

진행 순서

  1. classify_intent(): 키워드 점수로 의도를 정합니다.
  2. QUERY_TEMPLATES: 의도별 Cypher를 채웁니다. 값은 $파라미터로만 넘깁니다.
  3. ContextBuilder: 조회 결과를 사람이 읽을 맥락으로 바꿉니다.
  4. 데모 질문 여섯 개를 돌려 의도 분류가 의도대로 되는지 확인합니다.

반드시 확인할 것

troubleshooting  <- 알람 E-201이 떴는데 어떻게 해요?
         status  <- CNC밀링 3호기 부품 수명 현황 알려줘
       analysis  <- 알람 E-201의 근본 원인을 분석해줘
      personnel  <- 우리 팀 인력 현황과 보유 스킬 알려줘
    maintenance  <- CNC선반 1호기 교체 대상 부품 알려줘
          되물음  <- 알람 코드가 뭐였더라

먼저 걸리는 키워드가 이기는 방식으로 만들면 3번이 analysis가 아니라 troubleshooting으로 갑니다. "어떻게"가 troubleshooting에 들어 있기 때문입니다. 점수 방식으로 바꾸고 위 표를 직접 찍어 보세요.

실패를 삼키지 마세요

try/except로 예외를 잡고 빈 결과로 넘어가면, 문법이 틀린 쿼리도 "Knowledge Graph에서 관련 정보를 찾지 못했습니다"라는 매끄러운 답으로 나옵니다. 학생은 코드가 아니라 데이터를 의심하게 됩니다. 탐색 실패결과 0행은 다른 문장으로 구분해 알려야 합니다.

에디터 로딩 중...
힌트 보기
  • Cypher 템플릿 안에서 중괄호는 그대로 Neo4j 문법입니다. str.format을 쓸 생각으로 {{ }}를 적어 두면, format을 부르지 않는 순간 이중 중괄호가 그대로 전달되어 문법 오류가 납니다
  • 템플릿마다 필요한 파라미터를 REQUIRED_PARAMS에 함께 적어 두면, 값이 없을 때 쿼리를 보내지 않고 되물을 수 있습니다
  • 의도 분류는 강한 신호 2점, 약한 신호 1점으로 합산하고 최고점을 고르면 키워드 순서에 흔들리지 않습니다
  • collect({part: p.name, usage: ...})처럼 맵을 만들 때의 중괄호도 Cypher 문법입니다
  • 결과가 0행인 것과 쿼리가 실패한 것을 같은 문장으로 덮지 마세요
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
GraphRAG 파이프라인 코드 생성AI 학습 팁

AI에게 LangChain + Neo4j로 자연어를 Cypher로 변환하는 GraphRAG 파이프라인 전체 코드를 생성시키세요.

LangChain GraphCypherQAChain과 Neo4j를 사용하는 제조 GraphRAG 파이프라인을 작성해줘. 그래프 스키마를 LLM에 주입하는 system prompt, 자연어 질문을 Cypher로 변환하는 체인, Cypher 실행 결과를 자연어 답변으로 변환하는 단계를 포함하고, '설비 A001의 반복 고장 원인은?' 예시 질문으로 테스트하는 코드도 추가해줘.
이 팁이 도움이 됐나요?
실습 — 직접 해보기
GraphRAG Pipeline
Vector RAG 와 GraphRAG 를 나란히 놓고 멀티홉 질문에서 무엇이 갈리는지 봅니다. 볼 것은 점수 차이가 아니라 두 쪽이 무엇을 근거로 삼았는가입니다 — 벡터 쪽은 낱말이 겹치는 청크를, 그래프 쪽은 관계를 따라간 경로를 내놓습니다. 그래프는 미리 만들어 둔 한 벌로 고정이고 탭마다 계산인지 연출인지가 다르므로, 화면 아래 「한계」를 펼쳐 어디까지가 계산인지 먼저 읽으세요.
용어