Amazon Neptune의 아키텍처와 Bedrock 통합, 그리고 TigerGraph, JanusGraph, Memgraph 등 주요 그래프 데이터베이스를 비교하며 프로젝트에 맞는 선택 가이드를 제공합니다.
Amazon Neptune은 AWS에서 제공하는 완전 관리형 그래프 데이터베이스 서비스입니다. 두 가지 별개의 서비스로 구성됩니다.
Neptune Database는 OLTP(Online Transaction Processing) 워크로드에 최적화된 서비스입니다.
| 특성 | 설명 |
|---|---|
| 쿼리 언어 | openCypher, Gremlin, SPARQL |
| 데이터 모델 | 프로퍼티 그래프 + RDF |
| 복제 | 최대 15개 읽기 복제본 |
| 저장 | 최대 128TB 자동 확장 |
| 가용성 | 다중 AZ, 자동 장애 복구 |
// 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 pathNeptune Analytics는 2024년에 출시된 분석 전용 서비스로, 그래프 분석과 벡터 검색을 결합합니다.
핵심 특징은 다음과 같습니다.
// 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 technologiesNeptune Analytics는 Neo4j의 GDS + 벡터 인덱스와 유사한 기능을 AWS 매니지드 환경에서 제공합니다. AWS 생태계에 이미 투자한 조직이라면 Neptune을 선택하는 것이 인프라 관리 측면에서 유리합니다.
AWS의 가장 큰 차별점은 Amazon Bedrock Knowledge Bases와의 통합입니다. 이를 통해 코드 작성 없이 완전 매니지드 GraphRAG 파이프라인을 구축할 수 있습니다.
Bedrock Knowledge Bases에서 GraphRAG를 활성화하는 과정을 단계별로 정리합니다.
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)Bedrock Knowledge Bases의 GraphRAG 기능은 현재 특정 리전에서만 사용 가능합니다. 서울 리전(ap-northeast-2) 지원 여부는 AWS 공식 문서에서 확인하시기 바랍니다.
Neo4j와 Neptune 외에도 다양한 그래프 데이터베이스가 존재합니다. 각각의 특성을 살펴봅니다.
TigerGraph는 대규모 그래프 분석에 특화된 분산 그래프 데이터베이스입니다.
// 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는 Apache 재단의 오픈소스 분산 그래프 데이터베이스입니다.
Memgraph는 인메모리 그래프 데이터베이스로, 실시간 처리에 최적화되어 있습니다.
NebulaGraph는 대규모 분산 환경을 위한 오픈소스 그래프 데이터베이스입니다.
프로젝트 요구사항에 따른 그래프 데이터베이스 선택 기준을 제시합니다.
| 기준 | Neo4j | Neptune | TigerGraph | Memgraph |
|---|---|---|---|---|
| 쿼리 언어 | Cypher | openCypher/SPARQL | GSQL | Cypher |
| 벡터 검색 | 네이티브 | Analytics만 | 플러그인 | 제한적 |
| GDS/분석 | GDS 라이브러리 | 내장 알고리즘 | 내장 분석 | MAGE |
| 클라우드 | AuraDB | AWS 전용 | TigerGraph Cloud | Memgraph Cloud |
| GraphRAG 지원 | neo4j-graphrag | Bedrock KB | 커스텀 구현 | 커스텀 구현 |
| 커뮤니티 크기 | 매우 큼 | 큼 (AWS) | 중간 | 성장 중 |
| 라이선스 | 커뮤니티(GPL)/엔터프라이즈 | 매니지드 전용 | 커뮤니티/엔터프라이즈 | BSL/엔터프라이즈 |
Neo4j를 선택하는 경우
Neptune을 선택하는 경우
TigerGraph를 선택하는 경우
Memgraph를 선택하는 경우
이 시리즈에서는 Neo4j를 주요 실습 도구로 사용합니다. 가장 풍부한 GraphRAG 생태계를 보유하고 있으며, AuraDB Free 티어로 비용 없이 시작할 수 있기 때문입니다. 원리를 이해하면 다른 그래프 DB로의 전환은 어렵지 않습니다.
이번 장에서는 Amazon Neptune을 중심으로 다양한 그래프 데이터베이스를 비교했습니다.
다음 장 미리보기: 5장에서는 지식 그래프 구축의 핵심인 LLM 기반 엔티티 추출을 다룹니다. 비정형 텍스트에서 엔티티와 관계를 자동 추출하는 프롬프트 설계와 파이프라인 구축을 살펴봅니다.
이 글이 도움이 되셨나요?
관련 주제 더 보기
비정형 텍스트에서 LLM을 활용하여 엔티티와 관계를 추출하고, JSON 파싱, 엔티티 해소, Neo4j 적재까지의 전체 파이프라인을 구축하는 방법을 다룹니다.
Neo4j의 아키텍처, Cypher 쿼리 언어, 벡터 인덱스, GDS 라이브러리, Python 드라이버까지 지식 그래프 구축에 필요한 Neo4j의 핵심 기능을 다룹니다.
Microsoft GraphRAG의 아키텍처, 커뮤니티 요약, 글로벌/로컬 검색 전략, Neo4j GraphRAG Python 라이브러리, 그리고 벡터+그래프+키워드 하이브리드 검색을 다룹니다.