본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout

내비게이션

  • Tech
  • Projects
  • Books
  • About
  • Tags

카테고리

  • AI / ML
  • 웹 개발
  • 프로그래밍
  • 개발 도구

연결

  • GitHub
  • Email
  • RSS
© 2026 Kreath Archive. All rights reserved.Built with Next.js + MDX
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 4장: Amazon Neptune과 기타 그래프 DB
2026년 3월 21일·AI / ML·

4장: Amazon Neptune과 기타 그래프 DB

Amazon Neptune의 아키텍처와 Bedrock 통합, 그리고 TigerGraph, JanusGraph, Memgraph 등 주요 그래프 데이터베이스를 비교하며 프로젝트에 맞는 선택 가이드를 제공합니다.

13분493자6개 섹션
knowledge-graphaidata-engineering
공유
knowledge-graph4 / 10
12345678910
이전3장: Neo4j — 프로퍼티 그래프 데이터베이스다음5장: LLM 기반 엔티티 추출과 관계 생성

학습 목표

  • Amazon Neptune의 두 가지 서비스(Database/Analytics)를 이해합니다
  • Neptune에서 openCypher와 SPARQL을 활용하는 방법을 파악합니다
  • Bedrock Knowledge Bases와의 GraphRAG 통합을 살펴봅니다
  • TigerGraph, JanusGraph, Memgraph 등 대안 그래프 DB를 비교합니다
  • 프로젝트 요구사항에 맞는 그래프 DB 선택 기준을 제시합니다

Amazon Neptune 개요

Amazon Neptune은 AWS에서 제공하는 완전 관리형 그래프 데이터베이스 서비스입니다. 두 가지 별개의 서비스로 구성됩니다.

Neptune Database

Neptune Database는 OLTP(Online Transaction Processing) 워크로드에 최적화된 서비스입니다.

특성설명
쿼리 언어openCypher, Gremlin, SPARQL
데이터 모델프로퍼티 그래프 + RDF
복제최대 15개 읽기 복제본
저장최대 128TB 자동 확장
가용성다중 AZ, 자동 장애 복구
neptune-opencypher.cypher
cypher
// Neptune에서의 openCypher 쿼리
// Neo4j Cypher와 대부분 호환되지만 일부 차이 존재
 
// 노드 생성
CREATE (p:Person {name: "김개발", role: "Engineer"})
RETURN p
 
// 관계 생성
MATCH (p:Person {name: "김개발"})
MATCH (t:Technology {name: "Neptune"})
CREATE (p)-[:USES {since: 2025}]->(t)
 
// 경로 탐색
MATCH path = (a:Person)-[:USES|EXPERT_IN*1..2]->(t:Technology)
WHERE a.name = "김개발"
RETURN path

Neptune Analytics

Neptune Analytics는 2024년에 출시된 분석 전용 서비스로, 그래프 분석과 벡터 검색을 결합합니다.

핵심 특징은 다음과 같습니다.

  • 임베딩 저장: 그래프 노드에 벡터 임베딩을 직접 저장합니다
  • 벡터 검색: 코사인 유사도 기반 벡터 검색을 네이티브로 지원합니다
  • 그래프 알고리즘: PageRank, 커뮤니티 감지 등을 내장합니다
  • 서버리스: 사용량 기반 과금으로, 분석이 없을 때 비용이 절감됩니다
neptune-analytics-vector.cypher
cypher
// Neptune Analytics에서의 벡터 검색 + 그래프 순회
 
// 임베딩 저장
MATCH (d:Document {title: "GraphRAG 가이드"})
CALL neptune.algo.vectors.upsert(d, [0.1, 0.2, 0.3, ...])
 
// 벡터 유사도 검색 후 그래프 순회
CALL neptune.algo.vectors.topKByNode(
  targetNode,
  10  // top-K
)
YIELD node, score
MATCH (node)-[:COVERS]->(tech:Technology)
RETURN node.title, score, collect(tech.name) AS technologies
Info

Neptune Analytics는 Neo4j의 GDS + 벡터 인덱스와 유사한 기능을 AWS 매니지드 환경에서 제공합니다. AWS 생태계에 이미 투자한 조직이라면 Neptune을 선택하는 것이 인프라 관리 측면에서 유리합니다.


Bedrock Knowledge Bases 통합

AWS의 가장 큰 차별점은 Amazon Bedrock Knowledge Bases와의 통합입니다. 이를 통해 코드 작성 없이 완전 매니지드 GraphRAG 파이프라인을 구축할 수 있습니다.

아키텍처

설정 과정

Bedrock Knowledge Bases에서 GraphRAG를 활성화하는 과정을 단계별로 정리합니다.

  1. S3에 문서 업로드: 원본 문서(PDF, TXT, HTML 등)를 S3 버킷에 저장합니다
  2. Knowledge Base 생성: Bedrock 콘솔에서 Knowledge Base를 생성하고, Neptune Analytics를 그래프 저장소로 선택합니다
  3. 동기화 실행: Bedrock이 자동으로 LLM을 사용하여 엔티티를 추출하고, 그래프를 구성하며, 임베딩을 생성합니다
  4. 쿼리: RetrieveAndGenerate API를 통해 GraphRAG 기반 질의응답을 수행합니다
bedrock_graphrag.py
python
import boto3
import json
 
bedrock_agent = boto3.client("bedrock-agent-runtime", region_name="us-east-1")
 
def graphrag_query(knowledge_base_id: str, question: str) -> str:
    """Bedrock Knowledge Bases를 통한 GraphRAG 질의를 수행합니다."""
    response = bedrock_agent.retrieve_and_generate(
        input={"text": question},
        retrieveAndGenerateConfiguration={
            "type": "KNOWLEDGE_BASE",
            "knowledgeBaseConfiguration": {
                "knowledgeBaseId": knowledge_base_id,
                "modelArn": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-sonnet-4-20250514",
                "retrievalConfiguration": {
                    "vectorSearchConfiguration": {
                        "numberOfResults": 10
                    }
                }
            }
        }
    )
    return response["output"]["text"]
 
# 사용
answer = graphrag_query(
    knowledge_base_id="KB_ID",
    question="GraphRAG에서 커뮤니티 요약은 어떻게 생성되나요?"
)
print(answer)
Warning

Bedrock Knowledge Bases의 GraphRAG 기능은 현재 특정 리전에서만 사용 가능합니다. 서울 리전(ap-northeast-2) 지원 여부는 AWS 공식 문서에서 확인하시기 바랍니다.


기타 그래프 데이터베이스

Neo4j와 Neptune 외에도 다양한 그래프 데이터베이스가 존재합니다. 각각의 특성을 살펴봅니다.

TigerGraph

TigerGraph는 대규모 그래프 분석에 특화된 분산 그래프 데이터베이스입니다.

  • GSQL: 자체 그래프 쿼리 언어로, 복잡한 분석 쿼리에 강점이 있습니다
  • MPP(Massively Parallel Processing): 수십억 노드 규모의 분산 처리를 지원합니다
  • 적합한 경우: 대규모 사기 탐지, 공급망 분석 등 분석 중심 워크로드
tigergraph-example.gsql
gsql
// GSQL 쿼리 예시
CREATE QUERY find_connected_techs(VERTEX<Technology> start_tech, INT depth) FOR GRAPH TechGraph {
  SetAccum<VERTEX> @@visited;
  Start = {start_tech};
 
  WHILE Start.size() > 0 LIMIT depth DO
    Start = SELECT t
            FROM Start:s -(DEPENDS_ON)-> Technology:t
            WHERE NOT @@visited.contains(t)
            ACCUM @@visited += t;
  END;
 
  PRINT @@visited;
}

JanusGraph

JanusGraph는 Apache 재단의 오픈소스 분산 그래프 데이터베이스입니다.

  • 백엔드 유연성: Cassandra, HBase, Bigtable 등을 스토리지 백엔드로 사용합니다
  • Gremlin 쿼리: Apache TinkerPop의 Gremlin 언어를 사용합니다
  • 적합한 경우: 기존 Cassandra/HBase 인프라가 있고, 그래프 기능을 추가하려는 경우

Memgraph

Memgraph는 인메모리 그래프 데이터베이스로, 실시간 처리에 최적화되어 있습니다.

  • Cypher 호환: Neo4j의 Cypher와 높은 호환성을 유지합니다
  • 스트리밍 통합: Kafka, Pulsar 등과 연동하여 실시간 그래프 업데이트를 처리합니다
  • 적합한 경우: 실시간 추천, IoT 데이터 처리 등 밀리초 단위 응답이 필요한 경우

NebulaGraph

NebulaGraph는 대규모 분산 환경을 위한 오픈소스 그래프 데이터베이스입니다.

  • nGQL: 자체 쿼리 언어로, SQL과 유사한 문법을 제공합니다
  • 수평 확장: 스토리지와 컴퓨팅의 분리로 독립적인 확장이 가능합니다
  • 적합한 경우: 대규모 소셜 그래프, 추천 시스템

그래프 DB 선택 가이드

프로젝트 요구사항에 따른 그래프 데이터베이스 선택 기준을 제시합니다.

의사결정 플로우

비교 매트릭스

기준Neo4jNeptuneTigerGraphMemgraph
쿼리 언어CypheropenCypher/SPARQLGSQLCypher
벡터 검색네이티브Analytics만플러그인제한적
GDS/분석GDS 라이브러리내장 알고리즘내장 분석MAGE
클라우드AuraDBAWS 전용TigerGraph CloudMemgraph Cloud
GraphRAG 지원neo4j-graphragBedrock KB커스텀 구현커스텀 구현
커뮤니티 크기매우 큼큼 (AWS)중간성장 중
라이선스커뮤니티(GPL)/엔터프라이즈매니지드 전용커뮤니티/엔터프라이즈BSL/엔터프라이즈

권장 시나리오

Neo4j를 선택하는 경우

  • GraphRAG 구현이 주요 목적일 때
  • neo4j-graphrag-python 라이브러리와 풍부한 생태계를 활용하고 싶을 때
  • 학습 자료와 커뮤니티 지원이 중요할 때

Neptune을 선택하는 경우

  • AWS 인프라에 이미 투자한 조직일 때
  • Bedrock Knowledge Bases와의 매니지드 통합이 필요할 때
  • RDF와 프로퍼티 그래프를 동시에 사용해야 할 때

TigerGraph를 선택하는 경우

  • 수십억 노드 규모의 대규모 그래프 분석이 필요할 때
  • 복잡한 다중 홉 분석 쿼리가 빈번할 때

Memgraph를 선택하는 경우

  • 실시간 스트리밍 데이터의 그래프 처리가 필요할 때
  • 밀리초 단위의 응답 시간이 요구될 때
Tip

이 시리즈에서는 Neo4j를 주요 실습 도구로 사용합니다. 가장 풍부한 GraphRAG 생태계를 보유하고 있으며, AuraDB Free 티어로 비용 없이 시작할 수 있기 때문입니다. 원리를 이해하면 다른 그래프 DB로의 전환은 어렵지 않습니다.


정리

이번 장에서는 Amazon Neptune을 중심으로 다양한 그래프 데이터베이스를 비교했습니다.

  • Neptune Database는 OLTP 워크로드에, Neptune Analytics는 분석과 벡터 검색에 특화되어 있습니다
  • Bedrock Knowledge Bases 통합을 통해 코드 없이 매니지드 GraphRAG를 구축할 수 있습니다
  • TigerGraph은 대규모 분석, Memgraph은 실시간 처리, JanusGraph은 기존 인프라 활용에 적합합니다
  • 대부분의 GraphRAG 프로젝트에서는 Neo4j가 생태계와 커뮤니티 측면에서 가장 안전한 선택입니다

다음 장 미리보기: 5장에서는 지식 그래프 구축의 핵심인 LLM 기반 엔티티 추출을 다룹니다. 비정형 텍스트에서 엔티티와 관계를 자동 추출하는 프롬프트 설계와 파이프라인 구축을 살펴봅니다.

이 글이 도움이 되셨나요?

관련 주제 더 보기

#knowledge-graph#ai#data-engineering

관련 글

AI / ML

5장: LLM 기반 엔티티 추출과 관계 생성

비정형 텍스트에서 LLM을 활용하여 엔티티와 관계를 추출하고, JSON 파싱, 엔티티 해소, Neo4j 적재까지의 전체 파이프라인을 구축하는 방법을 다룹니다.

2026년 3월 23일·19분
AI / ML

3장: Neo4j — 프로퍼티 그래프 데이터베이스

Neo4j의 아키텍처, Cypher 쿼리 언어, 벡터 인덱스, GDS 라이브러리, Python 드라이버까지 지식 그래프 구축에 필요한 Neo4j의 핵심 기능을 다룹니다.

2026년 3월 19일·14분
AI / ML

6장: GraphRAG — 그래프 기반 검색 증강 생성

Microsoft GraphRAG의 아키텍처, 커뮤니티 요약, 글로벌/로컬 검색 전략, Neo4j GraphRAG Python 라이브러리, 그리고 벡터+그래프+키워드 하이브리드 검색을 다룹니다.

2026년 3월 25일·16분
이전 글3장: Neo4j — 프로퍼티 그래프 데이터베이스
다음 글5장: LLM 기반 엔티티 추출과 관계 생성

댓글

목차

약 13분 남음
  • 학습 목표
  • Amazon Neptune 개요
    • Neptune Database
    • Neptune Analytics
  • Bedrock Knowledge Bases 통합
    • 아키텍처
    • 설정 과정
  • 기타 그래프 데이터베이스
    • TigerGraph
    • JanusGraph
    • Memgraph
    • NebulaGraph
  • 그래프 DB 선택 가이드
    • 의사결정 플로우
    • 비교 매트릭스
    • 권장 시나리오
  • 정리