그래프 데이터베이스 마이그레이션
✅ 마이그레이션 완료 | 상태: Production
개요
ONESHIM은 지식 그래프의 성능과 확장성을 위해 그래프 데이터베이스 엔진을 마이그레이션하였습니다. 이를 통해 실시간 그래프 분석, 네이티브 벡터 검색, 간소화된 운영을 달성하였습니다.
마이그레이션 하이라이트
| 항목 | Before (Neo4j + GDS) | After (Memgraph + MAGE) |
|---|---|---|
| 그래프 알고리즘 | Neo4j GDS 라이브러리 의존 | Memgraph MAGE 네이티브 모듈 |
| 벡터 검색 | 외부 DB (별도 벡터 스토어) 필요 | Memgraph 네이티브 지원 (HNSW) |
| 그래프 프로젝션 | GDS 프로젝션 필수 (3단계 프로세스) | 불필요 (직접 실행) |
| 실시간 업데이트 | GDS 프로젝션 재생성 필요 | 인메모리 즉시 반영 |
| 성능 | 기준 | ~50% 향상 |
지원 알고리즘
마이그레이션을 통해 다양한 그래프 알고리즘을 네이티브로 지원합니다.
커뮤니티 탐지 (Community Detection)
| 알고리즘 | 호환성 | 용도 |
|---|---|---|
| Louvain | ✅ 완전 | 커뮤니티 구조 발견 |
| Label Propagation | ✅ 완전 | 빠른 커뮤니티 분류 |
| Connected Components | ✅ 완전 | 연결 구조 분석 |
중심성 (Centrality)
| 알고리즘 | 호환성 | 용도 |
|---|---|---|
| PageRank | ✅ 완전 | 노드 중요도 평가 |
| Betweenness Centrality | ✅ 완전 | 브릿지 노드 탐지 |
| Closeness Centrality | ✅ 완전 | 접근성 분석 |
경로 탐색 (Path Finding)
| 알고리즘 | 호환성 | 용도 |
|---|---|---|
| Dijkstra | ✅ 완전 | 최단 경로 |
| K-Shortest Paths | ✅ 완전 | 대안 경로 탐색 |
| BFS/DFS | ✅ 완전 | 그래프 탐색 |
유사도 및 임베딩
| 기능 | 호환성 | 용도 |
|---|---|---|
| Node Similarity | ✅ 완전 | 유사 노드 탐색 |
| Node2Vec | ✅ 완전 | 그래프 임베딩 생성 |
| Link Prediction | ✅ ML 파이프라인 | 관계 예측 |
벡터 검색 (Vector Search)
네이티브 벡터 검색
ONESHIM은 HNSW 인덱스를 통한 네이티브 벡터 검색을 지원합니다.
| 기능 | 지원 |
|---|---|
| HNSW 인덱스 | ✅ |
| Cosine Similarity | ✅ |
| 양자화 (메모리 최적화) | ✅ |
| GraphRAG (그래프 + 벡터 통합) | ✅ |
GraphRAG 아키텍처
벡터 검색과 그래프 탐색을 단일 데이터베이스에서 통합 실행하여, 의미적 유사도와 관계 기반 컨텍스트를 동시에 활용합니다.
장점:
- ✅ 단일 데이터베이스: 운영 복잡도 감소
- ✅ 원자적 트랜잭션: 벡터 + 그래프 데이터 일관성 보장
- ✅ 낮은 지연시간: 네트워크 홉 없음
- ✅ GraphRAG 네이티브: 벡터 검색 후 즉시 그래프 탐색 가능
전문 검색 (Full-text Search)
소규모 데이터셋에서는 네이티브 텍스트 인덱스를, 대규모 데이터셋에서는 전문 검색 엔진과의 하이브리드 구성을 지원합니다.
| 시나리오 | 솔루션 |
|---|---|
| 소규모 (100K 문서 미만) | 네이티브 텍스트 인덱스 |
| 대규모 (엔터프라이즈) | 전문 검색 엔진 + 그래프 DB 하이브리드 |
ML 기반 링크 예측
ML 기반 Link Prediction은 별도의 ML 파이프라인을 통해 구현됩니다.
성능 비교
| 항목 | Before (Neo4j + GDS) | After (Memgraph + MAGE) |
|---|---|---|
| PageRank (대규모) | Neo4j GDS 기준 | ~50% 빠름 (인메모리) |
| Community Detection | Neo4j GDS 기준 | ~60% 빠름 |
| 그래프 프로젝션 | GDS 프로젝션 필수 (오버헤드) | 불필요 |
| 실시간 업데이트 | GDS 프로젝션 재생성 필요 | 즉시 반영 |
| 메모리 사용량 | Neo4j 기준 | ~30% 절감 |
| Graph + Vector 조합 | Neo4j + 외부 벡터 DB 2단계 쿼리 | Memgraph 단일 쿼리 통합 |
참고 자료
관련 문서: