Key Concepts
📌 Knowledge Model
GraphRAG 시스템을 지원하기 위해, (기본 구성 모드에서) Indexing Engine의 출력 결과는 GraphRAG Knowledge Model이라는 지식 모델에 맞추어 조정된다. 이 모델은 기본 데이터 저장 기술 위에 추상화를 제공하도록 설계되었으며, GraphRAG 시스템이 상호 작용할 수 있는 공통 인터페이스를 제공한다. 일반적인 사용 사례에서는 GraphRAG Indexer의 출력 결과가 데이터베이스 시스템에 로드되며, GraphRAG의 Query Engine은 이 지식 모델 데이터 저장소 유형을 사용하여 데이터베이스와 상호 작용한다.
📌 DataShaper Workflows
GraphRAG의 Indexing Pipeline은 오픈 소스 라이브러리인 DataShaper 위에 구축되었다. DataShaper는 사용자들이 데이터 파이프라인, 스키마, 관련 자산들을 명확하게 정의된 스키마를 사용해 선언적으로 표현할 수 있도록 해주는 데이터 처리 라이브러리이다. DataShaper는 JavaScript와 Python으로 구현되어 있으며, 다른 언어로도 확장할 수 있도록 설계되었다.
DataShaper에서 핵심 리소스 유형 중 하나는 워크플로우(Workflow)이다. 워크플로우는 일련의 단계로 표현되며, 이러한 단계를 우리는 `verbs`라고 부른다. 각 단계는 verb 이름과 configuration object를 가지고 있다. DataShaper에서 이러한 verb들은 SELECT, DROP, JOIN 등과 같은 관계형 개념을 모델링한다. 각 verb는 입력 데이터 테이블을 변환하며, 이 테이블은 파이프라인을 따라 전달된다.
📌LLM-based Workflow Steps
GraphRAG의 Inedexing Pipeline은 DataShaper 라이브러리가 제공하는 표준 관계형 verb들 외에도 몇 가지 맞춤형 verb를 구현하고 있다. 이러한 verb를 통해 GPT-4와 같은 대형 언어 모델(LLM)의 힘을 이용하여 텍스트 문서를 풍부하고 구조화된 데이터로 보강할 수 있다. 우리는 이러한 verb들을 표준 워크플로우에서 사용하여 엔터티, 관계, 주장, 커뮤니티 구조, 커뮤니티 보고서 및 요약을 추출한다. 이 기능은 사용자 정의가 가능하며, 다양한 AI 기반 데이터 강화 및 추출 작업을 지원하도록 확장할 수 있다.
📌Workflow Graphs
데이터 인덱싱 작업이 복잡하기 때문에, 여러 개의 상호 의존적인 워크플로우로 이루어진 데이터 파이프라인을 표현할 수 있어야 했다. GraphRAG index pipeline에서 각 워크플로우는 다른 워크플로우에 대한 종속성을 정의할 수 있으며, 이를 통해 워크플로우의 방향성 비순환 그래프(DAG)를 형성한다. 이 그래프는 이후 처리 일정을 잡는 데 사용된다.
📌Dataframe Message Format
워크플로 간, 그리고 워크플로 단계 간의 주요 통신 단위는 `pandas.DataFrame`의 인스턴스다. 부수 효과가 발생할 수는 있지만, 우리의 목표는 데이터 중심적이고 테이블 중심적인 접근 방식을 통해 데이터 처리를 수행하는 것이다. 이를 통해 데이터를 쉽게 이해하고, 데이터프레임 기반의 생태계의 강점을 활용할 수 있다. 우리의 기본 데이터프레임 기술은 시간이 지남에 따라 변경될 수 있지만, 단일 머신에서의 사용 편의성과 개발자 생산성을 유지하면서 DataShaper 워크플로우 스키마를 지원하는 것이 주요 목표다.
📌LLM Caching
GraphRAG 라이브러리는 LLM(대규모 언어 모델)과의 상호작용을 염두에 두고 설계되었으며, LLM API를 사용할 때 흔히 발생하는 문제는 네트워크 지연, 제한 등의 다양한 오류다. 이러한 잠재적인 오류 사례에 대비하기 위해, 우리는 LLM 상호작용 주위에 캐시 레이어를 추가했다. 동일한 입력 세트(프롬프트와 튜닝 매개변수)를 사용하여 완료 요청이 이루어질 때, 기존에 캐시된 결과가 있으면 이를 반환한다. 이를 통해 Indexer가 네트워크 문제에 더 강력하게 대응할 수 있으며, 멱등성(idempotency)을 유지하고, 더 효율적인 사용자 경험을 제공할 수 있다.
'Knowledge Graph' 카테고리의 다른 글
[MS] GraphRAG 사용하기📊 (6) Query (1) | 2024.09.20 |
---|---|
[MS] GraphRAG 사용하기📊 (5) Indexing Dataflow 이해하기 (0) | 2024.09.02 |
[MS] GraphRAG 사용하기📊 (3) 공식 문서 이해하기 (4) | 2024.08.27 |
[논문 리뷰] Domain-specific Knowledge Graphs: A survey (2) | 2024.08.21 |
[MS] GraphRAG 사용하기📊 w. Ollama (2) (0) | 2024.08.19 |