[re:Invent 2024] AWS에서의 Graph 생태계 혁신 톺아보기 (Feat. GraphRAG)
그래프는 인간이 생각하는 방식을 반영하도록 설계되어 데이터 간 관계와 패턴을 쉽고 빠르게 찾도록 도와주는 데이터 표현 방식입니다. 이러한 그래프의 중요성을 인식한 AWS는 2018년 Amazon Neptune(이하 Neptune)을 출시하면 클라우드 환경에서의 그래프 데이터에 대한 관리에 대한 새로운 장을 열었습니다.
Neptune을 통해 다수의 사용자들이 클라우드 환경에서 그래프 데이터를 최소한의 관리로 효과적으로 저장할 수 있게 되었고, 2023년 Amazon Neptune Analytics의 출시로 저장된 그래프 데이터에 대한 분석을 몇 초만에 수행할 수 있게 되는 등 AWS는 그래프 데이터베이스와 그 생태계를 위해 노력을 해오고 있었습니다.
이번 포스팅에서는 Neptune 팀이 주도한 OneGraph와 같은 Graph 생태계의 혁신부터 시작하여, 최근 re:Invent 2024에서 Amazon Bedrock 서비스를 통해 처음 선보인 완전 관리형 GraphRAG 기능과 오픈소스 GraphRAG 툴킷 등에 대해 차례로 살펴보겠습니다.
단일화된 통합 그래프 데이터 모델 지원
그래프 데이터 모델은 크게 Resource Description Framework(RDF)와 Labeled Property Graphs(LPG)의 두 가지가 있으며, Neptune은 두 가지 그래프 모델을 모두 지원하고 있었습니다. 특히 서로 다른 쿼리 언어를 지원하는 것이 가장 큰 문제로, RDF는 SPARQL을, LPG는 Gremlin과 OpenCypher를 사용하여야만 쿼리할 수 있었습니다.
이러한 상황에서 사용자들은 데이터 모델링, 쿼리 언어 기능, 개발자 지식 등 다양한 요소를 고려하여 RDF와 LPG 중 하나를 선택해야 했습니다. 이러한 불편을 해결하기 위해 2021년에 Neptune 개발 팀에서는 양분되어 있는 생태계의 통합을 위해 단일화된 그래프 데이터 모델인 OneGraph을 제안하였습니다. OneGraph는 RDF와 LPG를 함께 사용하기 위한 개선 모델인 RDF*(RDF-star)와도 그 궤를 같이 하며, LPG가 이미 제공하는 기능을 RDF에 추가하려는 시도의 일환이었습니다.
Neptune Analytics에서 RDF 그래프에 대한 OpenCypher 쿼리 기능을 지원하는 것과 더불어 OneGraph 또한 실제로 Neptune Analytics에도 도입되었습니다. 이를 통해 LPG 데이터뿐만 아니라 RDF 데이터와 csv, parquet과 같은 테이블 형태의 데이터 또한 빠르게 쿼리하고, 그래프 데이터와 쉽게 통합할 수 있게 되었습니다.
또한 OpenCypher는 그래프에 대한 새로운 ISO 표준인 GQL에 큰 영향을 미쳤으며, 향후 업계 표준이 될 것으로 예상되고 있습니다. 따라서 Neptune Analytics가 표준으로 빠르게 마이그레이션할 수 있는 지름길을 마련했다고 평가할 수도 있겠습니다.
OneGraph의 도입으로 Neptune은 데이터 모델 선택의 복잡성을 크게 줄였습니다. 이를 통해 그래프 모델에 대한 전문적인 지식이 없는 엔지니어라도 유연하게 기존의 그래프와 새로운 지식을 결합하고 새로운 인사이트를 도출해낼 수 있는 기회를 제공합니다.
Bedrock 지식 기반에서의 완전 관리형 GraphRAG 구축 자동화
LLM이 발전해오며 환각 현상을 줄이기 위해 RAG라는 기법이 도입되었고 일반화되었습니다. 그러나 청크 기반 유사도를 계산하여 k개의 유사한 벡터를 가져와서 추론을 하는 벡터 기반 RAG는 한계점 또한 명확히 드러납니다. 전체 데이터세트에 대한 추론이라든지, 객체(Entity) 간의 관계(Relation)가 필요한 질의 응답, 혹은 순차적으로 여러 문서에 대한 검색 단계를 거쳐 답변을 해야 하는 다중 홉 검색 등이 한계를 느낄 수 있는 대표적인 요구 사항입니다. 이러한 한계를 개선하기 위해 지식 그래프를 활용한 GraphRAG라는 기법이 탄생하였습니다.
GraphRAG는 객체 간의 관계를 통해 추론 성능을 향상시킬 수 있지만, 구축에는 손이 많이 가는 편입니다. 객체와 이들 간의 연결 관계를 나타내는 스키마에 대한 정의가 필요하고, 이를 그래프에 로드하는 사전 준비가 필요합니다. 특히 문서로부터 객체와 관계를 추출하는 것이 가장 까다로운 작업인데요. 특정 도메인에 특화되어 사전에 정의된 스키마가 있다면 다행이지만, 그렇지 않다면 직접 온톨로지 스키마를 구축하거나, LLM을 통해서 문서로 부터 정보를 추출해야 합니다.
AWS는 re:Invent 2024에서 GraphRAG를 구축하기 위한 복잡한 과정을 간소화한 기능을 Amazon Bedrock Knowledge Bases(이하 Bedrock 지식 기반)을 통해 출시했습니다. Bedrock 지식 기반을 생성할 때 Neptune Analytics를 데이터베이스로 하여 몇 번의 클릭만으로 GraphRAG를 자동으로 구축할 수 있도록 지원하고 있습니다.
콘솔을 통해 실제로 완전 관리형 GraphRAG를 생성해보도록 하겠습니다. Neptune Analytics가 지원하는 리전에서만 구현이 가능합니다. 현재 서울 리전에서는 미지원하고 있기 때문에, 오레곤 리전에서 생성하는 예시로 진행하겠습니다. Bedrock 지식 기반 콘솔에서 [지식 기반 생성] 버튼을 누르고 [Knowledge Bases with vector store]을 선택합니다.
가장 간단한 구축을 위해서 S3를 데이터 소스로 하고, S3 버킷 URI를 입력합니다. [데이터 소스 구성] 단계까지 이외의 모든 설정은 기본값으로 설정해도 무방합니다. GraphRAG의 테스트를 위한 문서로는 인물 간의 관계와 사건에 대한 질문을 할 수 있는 소설이 적합해보이며, 이 예시에서는 저작권이 만료되어 대중에게 퍼블릭하게 공개된 소설인 <<위대한 개츠비>>를 사용하겠습니다. 프로젝트 구텐베르크 사이트에서 소설 원문을 다운로드 받아 S3 버킷에 업로드합니다.
[임베딩 모델 선택 및 벡터 저장소 구성] 단계에서 임베딩 모델을 선택하고, 벡터 데이터베이스는 [새로운 벡터 저장소 빠른 생성] 항목 내 Amazon Neptune Analytics (GraphRAG)를 선택합니다. [지식 기반 생성]을 누르고 몇 분 후에 생성이 완료됩니다. Claude 3 Haiku 모델을 통해 문서에서 주요 엔티티를 추출하고, 엔티티 간 관계와 함께 Neptune Analytics에 벡터 임베딩이 자동으로 생성되고 저장됩니다.
Bedrock 지식 기반 생성 이후에는 콘솔에서 [동기화] 버튼을 눌러, S3 버킷의 데이터를 Bedrock 지식 기반 내에 업데이트해주어야 합니다.
동기화가 완료되었다면, Bedrock 지식 기반의 테스트 창을 열어 소설에 대한 질문을 할 수 있습니다. “톰, 개츠비, 닉의 성격과 가치관을 비교해주세요.”라는 다중 인물 비교를 위한 예시 질문을 해보았습니다. 일반적인 벡터 기반 RAG의 결과와 비교해보았을 때, 인물이나 사건 간의 관계를 통한 추론으로 완성도 높은 답변을 생성해낸 것을 확인할 수 있습니다.
오픈소스 GraphRAG 툴킷
GraphRAG가 모든 질문과 상황에서 유리한 것은 아니며, 특히 Bedrock 지식 기반을 통한 GraphRAG 구현은 LLM에 의해 자동으로 엔티티를 추출하기 때문에, 한계가 있는 지점이 있습니다. LLM에 의해 너무 많은 스키마가 생겨 오히려 답변의 품질을 떨어뜨릴 수도 있고, 특정 문화나 나라, 혹은 금융이나 법률과 같은 전문적인 도메인에 대해서는 적절한 스키마를 생성하지 못할 가능성도 있습니다.
Bedrock 지식 기반의 GraphRAG 기능은 아직까지는 Preview 기능으로서 추후에는 스키마에 대한 사용자 정의가 가능해질 수도 있으나, 아직까지는 실제로 생성된 그래프의 요약 정보를 확인해보면 노드의 레이블이 “Entity”, “DocumentId”, “Chunk” 그리고 엣지의 레이블은 “FROM”, “CONTAINS”으로만 한정되어 있는 것을 볼 수 있습니다. 결국에 도메인 전문가의 지식을 바탕으로 커스텀 그래프 스키마를 설계해야 하는 필요성과 지점이 있는 것입니다.
AWS는 이를 위해 re:Invent 2024의 일주일 전에, graphrag-toolkit을 오픈소스로 공개하였습니다. LlamaIndex를 활용하여 그래프 구축이 구현되어 있으며, LLM과 임베딩 모델을 AWS가 아닌 타 CSP의 모델을 사용할 수 있도록 유연성 높은 프레임워크를 제공하고 있습니다. 오픈소스로 배포가 되어 있기 때문에 이미 기정의된 그래프 스키마를 통합하는 커스텀 로직을 구현하여 보다 정확도 높은 답변을 생성해 낼 수도 있겠습니다.
Conclusion
결론적으로, AWS는 그래프 데이터베이스와 그 생태계를 위해 지속적으로 혁신을 이어가고 있습니다. OneGraph를 통한 통합 그래프 데이터 모델 지원, Bedrock 지식 기반을 활용한 완전 관리형 GraphRAG 구축 자동화, 그리고 오픈소스 GraphRAG 툴킷 공개 등은 AWS가 그래프 기술의 발전과 접근성 향상에 얼마나 큰 노력을 기울이고 있는지를 잘 보여줍니다.
실제 비즈니스 환경에서 이러한 접근들이 어떻게 적용되고 발전해 나갈지는 앞으로 지켜볼 필요가 있습니다. 그래프 기술의 잠재력은 분명해 보이지만, 실제 구현과 활용에 있어서는 여전히 도전과제가 남아있습니다. AWS의 노력이 그래프 기술의 대중화와 접근성 향상에 기여할 것으로 기대되며, 동시에 사용자들의 피드백과 실제 사용 사례를 통해 이 기술들이 더욱 발전하고 성숙해질 수 있기를 희망합니다.
최신 댓글