65

실습: 대화형 KG Q&A 시스템 구현

KG 기반 Q&A

학습 목표
  • 대화 상태로 설비·알람·배제한 원인을 이어가는 ConversationManager를 만든다
  • 대명사와 생략어를 앞선 대화로 채우는 컨텍스트 해석기를 만든다
  • 여섯 가지 질문 유형을 모두 라우팅하고 각각의 핸들러를 구현한다
  • 아키텍처 문서의 4턴 시나리오를 그대로 재현해 설계와 동작이 맞는지 확인한다

실습: 대화형 KG Q&A 시스템 구현

목표

Day 3의 GraphRAG 파이프라인을 확장해 여러 턴에 걸친 대화를 처리합니다.

사전 준비

Day 2의 seed_kg.py로 그래프를 올려 두세요. 정비 이력(MaintenanceRecord)과 공정(Process)까지 들어 있어야 유형 3과 유형 6이 동작합니다.

합격 기준: 아키텍처 문서의 4턴이 그대로 재현되어야 한다

p8w7-d4-qa-architecture가 이 시스템의 간판으로 보여주는 대화입니다. 구현이 끝나면 이 네 줄을 그대로 입력해 결과를 맞춰 보세요.

입력기대 동작
13호기에서 알람 떴어알람 코드를 되묻는다
2E-201앞선 설비 맥락과 합쳐 원인을 확률순으로 안내한다
3냉각수 확인했는데 괜찮아1순위를 배제하고 2순위부터 다시 안내한다
4베어링 교체 어떻게 해?howto로 가서 절차를 보여준다

3번과 4번이 특히 잘 깨집니다.

  • 3번: 배제할 원인을 어딘가에서 대입해야 합니다. 선언만 해 두고 대입하는 곳이 없으면 배제는 영원히 일어나지 않는데, 화면에는 아무 오류도 나오지 않습니다.
  • 4번: troubleshooting 키워드에 "어떻게"가 들어 있으면 howto가 가로채입니다. 먼저 걸리는 키워드가 이기는 방식을 점수 방식으로 바꾸세요.

여섯 가지 질문 유형을 모두 구현합니다

유형예시그래프에서 따라갈 경로
troubleshooting알람 E-201 어떻게 해?Fault → RootCause → MaintenanceAction → Skill
status3호기 부품 상태Equipment → Component → Part
history3호기 정비 이력MaintenanceRecord → Equipment
personnel스핀들 정비 가능한 사람Worker → Skill
howto베어링 교체 절차MaintenanceAction의 procedure
impact3호기 멈추면 영향은?Equipment ← Process → NEXT_PROCESS

"현재 개발 중입니다"를 반환하는 스텁을 남기지 마세요. 아키텍처 문서가 여섯 가지를 약속했으면 여섯 가지가 동작해야 합니다.

에디터 로딩 중...
힌트 보기
  • ConversationState에 필드를 선언하는 것과 값을 넣는 것은 다른 일입니다. 배제 기능이 안 되면 대입하는 줄이 있는지부터 보세요
  • 의도 분류는 강한 신호 2점, 약한 신호 1점으로 합산하고 최고점을 고르면 키워드 순서에 흔들리지 않습니다
  • "E-201"처럼 코드만 던지는 발화, "괜찮아"처럼 앞선 의도를 이어야 하는 발화를 따로 처리해야 4턴이 이어집니다
  • 절차 안내는 질문에서 작업명을 뽑는 대신 WHERE $question CONTAINS a.name 으로 그래프 쪽 이름을 대조하면 간단합니다
  • 영향도는 (e:Equipment)<-[:USES_EQUIPMENT]-(p:Process)-[:NEXT_PROCESS*1..5]->(down) 으로 후속 공정까지 모읍니다
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
환각을 일부러 유발해 검증하기AI 학습 팁

그래프에 없는 정보를 일부러 물어보세요. "모른다"고 답하면 신뢰성 합격, 지어내면(환각) 프롬프트에 "근거가 없으면 모른다고 답하라" 제약을 추가해야 합니다.

이 팁이 도움이 됐나요?
실습 — 직접 해보기
LLM Graph Builder
출처 있는 GraphRAG Q&A를 직접 해보세요
용어