Java/Spring 코드로 Knowledge Graph 기반 RAG 시스템 구축하기

by DD
2개월 전
조회수 28

기존 Java/Spring 코드의 ORM 엔티티(ORM Entities)비즈니스 로직(Business Logic)을 활용하여 Knowledge Graph 스키마를 추출하여 개발 생산성(Development Productivity)을 향상시킴

Amazon Bedrock Knowledge Bases를 활용, 자연어 질의를 통해 그래프 데이터(Graph Data)를 탐색하고, 복잡한 관계 기반 질의를 처리

AI와 도메인 전문가의 협업을 통해 spec.json 형태의 그래프 스키마 명세를 생성하고, 이를 기반으로 Neptune Analytics에 데이터 적재

운영 데이터 동기화, 하이브리드 검색 등 GraphRAG 시스템(GraphRAG System)의 확장 가능성을 제시

기존 코드에서 그래프 스키마 추출 방법

본문에서는 기존 Java/Spring 코드에서 Knowledge Graph 스키마(Knowledge Graph Schema)를 추출하는 과정을 상세히 설명한다. 핵심은 AI와 도메인 전문가의 협업을 통해 spec.json 파일을 생성하는 것이다.

ORM 엔티티(ORM Entities): JPA 엔티티의 @ManyToOne, @OneToMany 관계를 그래프 엣지로 활용

비즈니스 로직(Business Logic): 유효성 검증, 상태 전이 조건 등을 비즈니스 규칙으로 사용

AI 프롬프트(AI Prompt): Amazon Bedrock의 Anthropic Claude Sonnet 4.5 모델에 소스코드와 함께 프롬프트를 전달하여 스키마 초안 생성

AI가 생성한 초안을 도메인 전문가가 검토하고 수정하는 과정을 거쳐 스키마의 품질을 높인다. 이 과정에서 AI는 자체 판단이 어려운 부분을 질문하고, 도메인 전문가는 답변을 제공하며 협업한다.

Neptune Analytics 데이터 적재 파이프라인

spec.json으로 정의된 그래프 스키마를 기반으로, 기존 데이터를 Neptune Analytics(Neptune Analytics)에 적재하는 과정을 설명한다. 이 과정은 크게 두 단계로 나뉜다.

CSV 스키마 생성(CSV Schema Generation): spec.json을 참조하여 Neptune Analytics Bulk Loader용 CSV 스키마(헤더)를 생성

CSV 데이터 채우기(CSV Data Filling): 데이터베이스의 데이터를 CSV 파일에 채움

생성된 CSV 파일을 S3에 업로드하고, Neptune Analytics 콘솔의 데이터 가져오기를 통해 적재한다. 운영 환경에서는 AWS Glue를 활용한 배치 처리나 CDC(Change Data Capture)를 통해 데이터 동기화(Data Synchronization)를 자동화할 수 있다.

Amazon Bedrock Knowledge Bases를 활용한 GraphRAG

Amazon Bedrock Knowledge Bases를 활용하여 GraphRAG(GraphRAG)를 구현하는 방법을 제시한다. 일반 RAG와 달리, Knowledge Graph는 엔티티 간의 관계를 기반으로 질의를 처리하여 복잡한 질문에 대한 답변을 제공한다.

Bedrock Knowledge Bases 연결(Bedrock Knowledge Bases Connection): Neptune Analytics를 활용한 GraphRAG를 지원하며, 기존 그래프를 그대로 활용 가능

데이터 소스 동기화(Data Source Synchronization): Knowledge Bases에 데이터 소스를 동기화하여 그래프 데이터를 인덱싱

다양한 질의 패턴(Various Query Patterns): 분기 탐색, 멀티홉 필터링, 역방향 탐색 등 다양한 그래프 탐색 패턴을 지원

이러한 방식을 통해 벡터 유사도 검색으로는 어려운 구조적 멀티홉 질의를 처리하고, 답변에 소스 세부 정보를 함께 제공하여 추적 가능성(Traceability)을 확보한다.

GraphRAG 시스템의 확장 가능성

본문에서는 GraphRAG 시스템의 확장 가능성을 제시하며, 실제 운영 환경에서의 적용을 위한 추가적인 고려 사항을 설명한다.

운영 데이터 동기화(Operational Data Synchronization): AWS Glue를 통한 배치 처리나 DMS(Database Migration Service) 같은 CDC(Change Data Capture)를 활용하여 기존 RDB의 변경 데이터를 그래프 구조로 변환하고 Neptune Analytics에 반영

하이브리드 검색(Hybrid Search): 벡터 기반 의미 검색에 그래프 탐색을 결합하여, 단순 유사도 검색을 넘어 관계 기반 추론을 강화

이러한 확장 방안을 통해 GraphRAG 시스템은 데이터 변화(Data Change)에 유연하게 대응하고, 더욱 정확하고 풍부한 답변을 제공할 수 있다.

GraphRAG 구현 시 고려 사항

GraphRAG를 구현하기 위한 핵심 인사이트와 실제 프로젝트 적용 시 고려해야 할 사항을 제시한다.

기존 코드 활용(Existing Code Utilization): ORM의 관계 매핑은 그래프 엣지, 서비스 로직은 비즈니스 규칙으로 활용하여 설계 시간(Design Time)을 단축

AI와 도메인 전문가 협업(AI and Domain Expert Collaboration): AI가 스키마 초안을 생성하고, 도메인 전문가가 검토 및 수정하여 지식 품질(Knowledge Quality)을 향상

spec.json의 중요성(Importance of spec.json): 그래프 스키마 설계부터 데이터 적재까지 하나의 명세를 기준으로 관리하여 유지보수성(Maintainability)을 높임

복잡한 도메인일수록 검토 및 수정 과정에 더 많은 시간을 투자하여 Knowledge Graph의 품질을 높이는 것이 중요하다.

기존 개발 코드(Java)로 Amazon Neptune Analytics GraphRAG 구현하기