25

Deep Dive: Text2Cypher가 실패하는 7가지 패턴

Day 1: Text2Cypher 개론

학습 목표

Text2Cypher가 실패하는 주요 패턴을 분류할 수 있다 모호한 질문을 처리하는 전략을 안다 실패 시 대응 방안을 설계할 수 있다

LLM이 만든 Cypher, 왜 틀릴까?

Text2Cypher의 정확도는 보통 60~85% 수준이다. 나머지 15~40%는 왜 실패하는지 알아야 개선할 수 있다.


실패 패턴 1: 모호한 질문 (Ambiguity)

에디터 로딩 중...

LLM이 생성할 수 있는 Cypher들:

에디터 로딩 중...

대응 방안:

  • 프롬프트에 "모호한 질문은 모든 관계를 탐색하라"는 규칙 추가
  • 또는 사용자에게 질문 명확화 요청 (clarification)

실패 패턴 2: 존재하지 않는 속성 사용

에디터 로딩 중...

결과: 에러는 나지 않지만, 빈 결과가 반환된다 (Neo4j는 없는 속성을 null로 처리).

대응 방안:

에디터 로딩 중...

실패 패턴 3: 잘못된 관계 방향

에디터 로딩 중...

핵심: "인수한"과 "인수된"의 구분은 한국어 문맥에서 특히 어렵다.

대응 방안:

  • 프롬프트에 관계 방향 예시를 명시적으로 포함
  • Few-shot 예시에 방향 관련 사례를 반드시 포함

실패 패턴 4: 복합 질문

에디터 로딩 중...

이 질문을 LLM이 한 번에 올바른 Cypher로 변환하기 매우 어렵다:

에디터 로딩 중...

대응 방안:

  • 복합 질문을 단계별로 분해 (Chain of Thought)
  • 중간 결과를 확인하고 후속 쿼리 생성

실패 패턴 5: 데이터 타입 불일치

에디터 로딩 중...

대응 방안:

  • 프롬프트에 "속성 타입에 맞게 값을 변환"하라는 규칙 추가
  • 스키마에서 타입 정보를 명확히 포함

실패 패턴 6: LIMIT 누락으로 인한 폭주

에디터 로딩 중...

대응 방안:

에디터 로딩 중...

실패 패턴 7: 한국어 vs 영어 속성값 혼동

에디터 로딩 중...

실제 DB에 어떤 값이 저장되어 있는지 LLM은 모른다!

대응 방안:

  • 프롬프트에 "데이터는 한국어로 저장" 같은 힌트 제공
  • 또는 샘플 데이터를 프롬프트에 포함
에디터 로딩 중...

실패 패턴 정리

패턴빈도심각도주요 대응
모호한 질문높음중간프롬프트 규칙, clarification
없는 속성중간높음스키마 검증, 속성 체크
잘못된 방향중간높음Few-shot 예시
복합 질문중간높음질문 분해, CoT
타입 불일치낮음중간타입 정보 명시
LIMIT 누락높음높음후처리 강제
언어 혼동중간중간샘플 데이터 제공