30

Neo4j 성능 최적화 & 프로덕션 모니터링

Weekly Project - GraphRAG 시스템

학습 목표

Neo4j 인덱스: 자주 검색하는 속성에 필수 PROFILE로 쿼리 실행 계획 분석 LangSmith/LangFuse로 LLM 호출 추적

Neo4j 성능 최적화 & 프로덕션 모니터링

Hook: 스케일의 벽

KG가 100개 노드일 때는 빠르지만, 10만 개가 되면?

에디터 로딩 중...

인덱스, 배치 처리, 캐싱 없이는 프로덕션에서 사용 불가능합니다.


왜 배우는가?

GDBMS 선택 기준

기준평가 내용
생태계DB-engines 순위, 커뮤니티, LangChain 연동
성능LDBC 벤치마크, get_neighbors 복잡도
적합성데이터 모델 (LPG vs RDF), 쿼리 언어

GDBMS 비교

DB저장 방식get_neighbors생태계GraphRAG 적합도
Neo4jAdjacency ListO(d)★★★★★최고
KùzuEmbeddedO(d)★★좋음 (로컬)
FalkorDBRedis 기반O(d)★★좋음 (경량)

O(d) = 연결 수에 비례 (빠름), O(V) = 전체 노드 수에 비례 (느림)

100만 노드 + 평균 연결 10개일 때: O(10) vs O(1,000,000)

쿼리 언어 비교

언어DB특징
CypherNeo4j패턴 매칭, 직관적, LLM 호환
GremlinJanusGraph, NeptuneTraversal 기반
GSQLTigerGraphSQL 유사, 분석 강점
GQLISO 표준 (2024)Cypher 후속, 향후 표준

핵심 개념

Neo4j 최적화 7가지

1. 인덱스 생성 (필수!)

에디터 로딩 중...

2. 쿼리 프로파일링

에디터 로딩 중...

3. APOC 병렬 처리

에디터 로딩 중...

4. UNWIND 배치 처리

에디터 로딩 중...

5. 파라미터 쿼리 (캐시 활용)

에디터 로딩 중...

6. READ 트랜잭션 명시

에디터 로딩 중...

7. 애플리케이션 레벨 캐싱

에디터 로딩 중...

모니터링 도구

도구용도특징비용
LangSmithLLM 호출 추적LangChain 공식, 시각화 우수무료~유료
LangFuse오픈소스 추적셀프 호스팅 가능무료
Opik경량 추적Comet ML, 간단 설정무료~유료
에디터 로딩 중...

CI/CD 파이프라인

에디터 로딩 중...

서브그래프 관리

전략설명적용 시점
캐싱Redis/Memcached로 자주 접근하는 서브그래프 캐시반복 쿼리
프루닝사용 안 하는 노드/엣지 주기적 정리월간
증분 업데이트전체 재생성 대신 변경분만 반영신규 문서 추가 시

자주 하는 실수

자주 하는 실수

1. 인덱스 미생성

에디터 로딩 중...

2. EXPLAIN vs PROFILE 혼동

에디터 로딩 중...

3. 커넥션 풀 미설정

에디터 로딩 중...
핵심 포인트
  • Neo4j 인덱스: 자주 검색하는 속성에 필수
  • PROFILE로 쿼리 실행 계획 분석
  • LangSmith/LangFuse로 LLM 호출 추적
  • CI/CD에 RAGAS 평가 자동화 통합