GraphRAG Toolkit으로 RAG 시스템의 지식 검색 능력을 극대화하세요!

by DD
4주 전
조회수 34

기존 RAG 방식의 한계 극복을 위해 지식 그래프(Knowledge Graph)를 활용하여 데이터 간의 복잡한 관계를 파악하고, 정확한 정보 검색(Accurate Information Retrieval)을 가능하게 함

GraphRAG Toolkit을 사용하여 비정형 텍스트 문서에서 정보를 추출하고, 그래프 저장소(Graph Store)벡터 저장소(Vector Store)를 결합한 인덱스를 구축하는 방법을 제시

어휘 그래프(Lexical Graph) 모델을 기반으로, 문장(Statement) 단위의 계층적 구조를 통해 검색 효율성(Search Efficiency)을 향상시키고, 쿼리 실행 테스트를 수행

추출(Extract) 및 구축(Build)의 2단계 인덱싱 프로세스를 통해, 데이터 로딩, 청크(Chunk) 구성, LLM 기반 정보 추출, 그래프 및 벡터 인덱스 구축을 수행

지식 그래프(Knowledge Graph) 기반 RAG 시스템의 등장 배경

기존 RAG(Retrieval-Augmented Generation) 방식은 단순 키워드 매칭(Keyword Matching)에 의존하여, 질문과 직접적인 관련이 없는 정보는 검색하지 못하는 한계가 있었다. 본문에서는 이러한 문제를 해결하기 위해 지식 그래프(Knowledge Graph)를 활용하는 GraphRAG Toolkit을 소개한다.

벡터 유사성 검색(Vector Similarity Search)의 한계: 텍스트의 의미적 유사성만 고려하여, 데이터 간의 복잡한 관계를 파악하기 어려움

지식 그래프(Knowledge Graph)의 장점: 개체(Entity)와 관계(Relation)를 기반으로, 숨겨진 맥락과 연관 정보를 정확하게 찾아낼 수 있음

어휘 그래프(Lexical Graph) 모델: 소스 문서부터 세부 개체에 이르기까지 계층적으로 연결된 구조를 통해, RAG 시스템의 정확도와 효율성을 향상시킨다.

어휘 그래프(Lexical Graph) 모델의 핵심 요소

GraphRAG Toolkit은 지식 그래프의 한 유형인 어휘 그래프(Lexical Graph)를 구축하며, 이는 세 가지 계층으로 구성된다. 각 계층은 RAG 시스템의 효율적인 정보 검색을 위해 특정한 역할을 수행한다.

계보(Lineage) 계층: 원본 데이터의 출처와 분할된 청크(Chunk) 간의 연결 관계를 추적하여, 데이터의 추적 가능성을 제공한다.

요약(Summarization) 계층: 주제별로 조직된 문장(Statement)과 이를 뒷받침하는 사실 정보를 제공하여, 핵심 컨텍스트(Core Context) 단위를 구성한다.

개체-관계(Entity-relationship) 계층: 원본 소스에서 식별된 개별 개체와 그들 간의 관계를 표현하여, 도메인 의미(Domain Meaning)를 명확히 한다.

이러한 계층 구조는 RAG 시스템이 사용자의 질문에 정확하게 답변할 수 있도록 돕는다.

GraphRAG Toolkit의 2단계 인덱싱 프로세스

GraphRAG Toolkit은 데이터를 추출(Extract)하고 구축(Build)하는 두 단계의 파이프라인을 통해 어휘 그래프(Lexical Graph)를 구축한다. 각 단계는 RAG 시스템의 성능 향상을 위해 중요한 역할을 수행한다.

추출(Extract) 단계: LlamaIndex 리더(Reader)를 사용하여 데이터를 로드하고, LlamaIndex Splitter를 활용하여 텍스트를 청크(Chunk) 단위로 분할한다. 이후 LLM(거대언어모델)을 활용하여 명제(Proposition), 주제(Topic), 개체(Entity), 사실(Fact) 정보를 추출한다.

구축(Build) 단계: 추출된 정보를 바탕으로 그래프와 벡터 임베딩을 생성한다. 그래프는 추출된 정보들을 연결하여 입체적인 지식 구조를 만들고, 벡터 임베딩은 효율적인 유사도 검색을 가능하게 한다.

유연한 인덱싱 옵션: 통합 실행, 분리 실행, 대규모 데이터 처리(배치 추출) 등 다양한 실행 모드를 제공하여, 사용자의 환경과 데이터 규모에 맞춰 유연하게 인덱싱 과정을 설정할 수 있다.

RAG 시스템 설계를 위한 역방향 접근 방식

성공적인 RAG(Retrieval-Augmented Generation) 시스템 설계를 위해서는 ‘역방향 접근 방식’을 채택하는 것이 중요하다. 이는 기술적 구현에 앞서, 사용자 요구사항과 데이터 검색 전략을 먼저 정의하는 것을 의미한다.

질의응답 요구사항 정의: 워크플로가 최종적으로 충족해야 할 사용자 요구사항을 명확히 정의한다. 이는 시스템 설계의 핵심 목표를 설정하는 데 기여한다.

데이터 검색 전략 수립: 정의된 요구사항을 해결하기 위해 어떤 종류의 데이터를 검색해야 하는지 결정한다. 이는 시스템의 데이터 소스와 검색 범위를 결정하는 데 영향을 미친다.

그래프 모델의 균형: 과잉 연결과 과소 연결의 위험을 인지하고, 관련 없는 정보로 인한 맥락 희석을 방지하면서도, 맥락적으로 중요한 관계를 찾아낼 수 있도록 그래프 모델을 설계한다.

이러한 역방향 접근 방식은 RAG 시스템의 효율성과 정확도를 높이는 데 기여한다.

GraphRAG Toolkit의 활용 및 확장

GraphRAG Toolkit은 지식 그래프 기반 RAG 시스템 구축을 위한 강력한 도구이며, 다양한 환경에서 활용될 수 있다. 또한, 지속적인 데이터 수집 및 대규모 데이터 처리를 위한 유연한 옵션을 제공한다.

LlamaIndex 리더(Reader) 활용: 다양한 데이터 소스에 대응하는 LlamaIndex 리더를 통해, 어떤 형태의 데이터라도 연결하여 지식 그래프를 구축할 수 있다.

LlamaIndex Splitter 활용: MarkdownNodeParser나 SentenceSplitter와 같은 LlamaIndex Splitter를 활용하여, 텍스트를 효율적으로 청크(Chunk) 단위로 분할할 수 있다.

Amazon Bedrock 활용: 대규모 데이터 처리 시, Amazon Bedrock의 배치 추론 기능을 활용하여 효율적이고 경제적인 인덱싱을 수행할 수 있다.

GraphRAG Toolkit은 지식 그래프 기반 RAG 시스템 구축을 위한 강력한 도구이며, 다양한 환경에서 활용될 수 있다.

GraphRAG Toolkit으로 지식 그래프 인덱싱하기