30분
Neo4j 성능 최적화 & 프로덕션 모니터링
Weekly Project - GraphRAG 시스템
Neo4j 성능 최적화 & 프로덕션 모니터링
GraphRAG > 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 적합도 |
|---|---|---|---|---|
| Neo4j | Adjacency List | O(d) | ★★★★★ | 최고 |
| Kùzu | Embedded | O(d) | ★★ | 좋음 (로컬) |
| FalkorDB | Redis 기반 | O(d) | ★★ | 좋음 (경량) |
O(d) = 연결 수에 비례 (빠름), O(V) = 전체 노드 수에 비례 (느림)
100만 노드 + 평균 연결 10개일 때: O(10) vs O(1,000,000)
쿼리 언어 비교
| 언어 | DB | 특징 |
|---|---|---|
| Cypher | Neo4j | 패턴 매칭, 직관적, LLM 호환 |
| Gremlin | JanusGraph, Neptune | Traversal 기반 |
| GSQL | TigerGraph | SQL 유사, 분석 강점 |
| GQL | ISO 표준 (2024) | Cypher 후속, 향후 표준 |
핵심 개념
Neo4j 최적화 7가지
1. 인덱스 생성 (필수!)
에디터 로딩 중...
2. 쿼리 프로파일링
에디터 로딩 중...
3. APOC 병렬 처리
에디터 로딩 중...
4. UNWIND 배치 처리
에디터 로딩 중...
5. 파라미터 쿼리 (캐시 활용)
에디터 로딩 중...
6. READ 트랜잭션 명시
에디터 로딩 중...
7. 애플리케이션 레벨 캐싱
에디터 로딩 중...
모니터링 도구
| 도구 | 용도 | 특징 | 비용 |
|---|---|---|---|
| LangSmith | LLM 호출 추적 | LangChain 공식, 시각화 우수 | 무료~유료 |
| LangFuse | 오픈소스 추적 | 셀프 호스팅 가능 | 무료 |
| Opik | 경량 추적 | Comet ML, 간단 설정 | 무료~유료 |
에디터 로딩 중...
CI/CD 파이프라인
에디터 로딩 중...
서브그래프 관리
| 전략 | 설명 | 적용 시점 |
|---|---|---|
| 캐싱 | Redis/Memcached로 자주 접근하는 서브그래프 캐시 | 반복 쿼리 |
| 프루닝 | 사용 안 하는 노드/엣지 주기적 정리 | 월간 |
| 증분 업데이트 | 전체 재생성 대신 변경분만 반영 | 신규 문서 추가 시 |
자주 하는 실수
자주 하는 실수
1. 인덱스 미생성
에디터 로딩 중...
2. EXPLAIN vs PROFILE 혼동
에디터 로딩 중...
3. 커넥션 풀 미설정
에디터 로딩 중...
핵심 포인트
- • Neo4j 인덱스: 자주 검색하는 속성에 필수
- • PROFILE로 쿼리 실행 계획 분석
- • LangSmith/LangFuse로 LLM 호출 추적
- • CI/CD에 RAGAS 평가 자동화 통합