Skip to main content

Neo4j

그래프 데이터베이스입니다. 데이터를 테이블이 아닌 **노드(Node)**와 관계(Relationship) 형태로 저장합니다.

어디에 쓰이나요?

  • 지식 그래프(Knowledge Graph): 개념 간의 관계를 저장하고 탐색 (예: “서울 → 수도 → 대한민국”)
  • GraphRAG: 문서에서 추출한 엔티티와 관계를 그래프로 구성하여 LLM의 답변 품질 향상
  • 소셜 네트워크: 사용자 간 팔로우, 친구 관계 분석
  • 추천 시스템: “이 상품을 산 사람이 함께 산 상품” 같은 관계 기반 추천
  • 사기 탐지: 계좌 간 자금 흐름을 그래프로 분석
관계형 데이터베이스에서 여러 테이블을 JOIN하여 조회해야 하는 복잡한 관계 데이터를, Neo4j에서는 직관적인 그래프 쿼리 언어인 Cypher로 간결하게 표현할 수 있습니다.

Docker Compose

docker-compose.yml
services:
  neo4j:
    image: neo4j:5-community
    container_name: neo4j
    restart: unless-stopped
    ports:
      - "7474:7474"
      - "7687:7687"
    environment:
      - NEO4J_AUTH=neo4j/changeme
      - NEO4J_PLUGINS=["apoc"]
    volumes:
      - neo4j_data:/data
      - neo4j_logs:/logs

volumes:
  neo4j_data:
  neo4j_logs:

실행

docker compose up -d

접속 확인

브라우저에서 http://localhost:7474로 Neo4j Browser에 접속합니다.
  • Username: neo4j
  • Password: changeme
또는 CLI로 확인합니다.
docker exec -it neo4j cypher-shell -u neo4j -p changeme "RETURN 1 AS result"

기본 정보

항목
HTTP 포트 (브라우저)7474
Bolt 포트 (드라이버)7687
기본 사용자neo4j
기본 비밀번호changeme

환경 변수

변수설명
NEO4J_AUTH인증 정보 (사용자/비밀번호, none으로 인증 비활성화)
NEO4J_PLUGINS설치할 플러그인 목록 (JSON 배열)
NEO4J_dbms_memory_heap_initial__size초기 힙 메모리
NEO4J_dbms_memory_heap_max__size최대 힙 메모리
NEO4J_dbms_memory_pagecache_size페이지 캐시 크기
Neo4j 환경 변수에서 설정 키의 ._로, ___로 변환됩니다. 예: dbms.memory.heap.initial_sizeNEO4J_dbms_memory_heap_initial__size

APOC 플러그인

APOC(Awesome Procedures on Cypher)은 Neo4j에서 자주 사용되는 확장 프로시저 모음입니다.
environment:
  - NEO4J_PLUGINS=["apoc"]

라이선스

구분내용
라이선스GPL v3 (Community), 상용 라이선스 (Enterprise)
개인 사용Community 에디션 자유롭게 사용 가능
상업적 사용Community는 GPL v3 조건 준수 필요 (소스 공개 의무). 사내 서버에서 직접 사용하는 것은 가능하나, Neo4j를 포함한 소프트웨어를 배포하는 경우 GPL 조건이 적용됨. Enterprise 기능이 필요하면 유료 라이선스 구매 필요

참고