30분
NL→Cypher 변환의 함정과 안전장치
KG 기반 Q&A
NL→Cypher 변환의 함정과 안전장치
온톨로지 & Knowledge Graph > KG 기반 Q&A
학습 목표
LLM이 생성하는 Cypher의 흔한 오류 패턴을 안다 Cypher Validation/Sandboxing 기법을 적용한다 Read-Only 모드와 쿼리 화이트리스트 전략을 설계한다
NL→Cypher는 마법이 아니다
사용자: "3호기에 어떤 부품이 있어?" LLM이 생성한 Cypher:
에디터 로딩 중...
잘 작동한다. 하지만 다음 경우는?
에디터 로딩 중...
한 줄로 데이터 손실. 이런 일이 안 일어나게 막아야 한다.
흔한 LLM 생성 Cypher 오류
오류 1: 잘못된 속성명
에디터 로딩 중...
대응: 스키마를 프롬프트에 명시 + Few-shot 예시 제공.
오류 2: 라벨 누락
에디터 로딩 중...
대응: 프롬프트에 "항상 라벨 명시" 룰 추가.
오류 3: 쓰기 쿼리
에디터 로딩 중...
대응: 정규식으로 쓰기 키워드 차단 + Read-Only 사용자.
오류 4: 무제한 경로 탐색
에디터 로딩 중...
대응: * 뒤에 항상 깊이 제한 강제.
안전장치 코드
에디터 로딩 중...
Neo4j Read-Only 사용자 생성
에디터 로딩 중...
쿼리 화이트리스트(Template) 전략
가장 안전한 방법: LLM이 자유롭게 Cypher를 생성하지 않게 한다.
에디터 로딩 중...
장점: 100% 안전 + 빠름 + 비용 절감. 단점: 미리 정의되지 않은 질문은 못 답함 → 핫스팟 80%만 커버.
권장 아키텍처 (제조 도메인)
에디터 로딩 중...
80% 핫스팟은 템플릿으로 안전+빠르게, 20% 롱테일만 LLM Cypher 생성.
핵심 포인트
- • LLM 생성 Cypher는 속성명 오류/쓰기 쿼리/무제한 탐색 등 흔한 문제 발생
- • 정규식 기반 Validator + Read-Only 사용자로 안전장치 다중화
- • 핫스팟 질문은 Template Router로 커버하고 LLM Cypher는 롱테일에만
- • 운영 환경에서는 절대로 LLM이 만든 Cypher를 검증 없이 실행 금지