Neo4j에 Microsoft GraphRAG 통합 노트
AI 및 ML 뉴스

Neo4j에 Microsoft GraphRAG 통합

Microsoft의 GraphRAG 구현은 대규모 언어 모델(LLM)을 통해 처리된 소스 문서에서 지식 그래프를 구성하는 데 효과적으로 사용되었다. 출력은 엔티티와 그들의 관계에 대한 구조화된 정보로, 추가적으로 그래프 알고리즘(예: Leiden 커뮤니티 탐지 알고리즘)으로 처리되어 요약이 생성된다. 이 포스트에서는 GraphRAG 출력을 Neo4j에 저장하고 LangChain 또는 LlamaIndex를 사용하여 지역 및 글로벌 검색을 구현하는 방법을 논의한다. 사용된 데이터 세트는 찰스 디킨스의 "크리스마스 캐롤"이다. 그래프 추출 프로세스를 건너뛸 수 있지만, 중요한 구성에는 엔티티 유형(조직, 사람, 이벤트, 지리)을 선택하고 최대 수확을 설정하여 여러 추출 패스를 수행하여 포괄적인 정보를 캡처하는 것이 포함된다. 그래프 추출 파이프라인의 출력은 Parquet 파일로 저장되며, Neo4j에 가져와진다. 가져오기 프로세스는 무료 클라우드 Aura 인스턴스 또는 로컬 Neo4j 환경에서 수행할 수 있으며, 가져오기 코드는 GitHub에서 Jupyter 노트북으로 제공된다. Neo4j에 데이터를 가져온 후, Cypher 쿼리를 사용하여 추출된 데이터의 구조와 콘텐츠를 이해하는 간단한 그래프 분석을 수행할 수 있다. 예를 들어, 추출된 엔티티의 분포와 노드 도수를 분석하여 데이터에 대한 통찰을 얻을 수 있다. 추출된 엔티티와 그들의 관계는 Neo4j 브라우저를 사용하여 시각화하고 검증된다. 검색 구현에서는 지역 검색은 벡터 검색을 사용하여 관련 노드를 확인하고 링크된 정보를 LLM 프롬프트에 주입하는 데 사용된다. 벡터 인덱스는 구성되고, 검색 쿼리는 텍스트 청크, 커뮤니티 보고서 및 관계 설명과 같은 관련 텍스트 데이터를 수집하는 데 사용된다. LangChain과 LlamaIndex를 사용하여 구현된다. 한편, 글로벌 검색은 지정된 계층 수준에서 커뮤니티 요약을 반복하여 중간 요약과 최종 응답을 생성하는 데 사용된다. 이 접근 방식은 검색 프로세스를 단순화하지만 최적의 결과를 위해 적절한 계층 수준을 선택해야 한다. 요약하자면, GraphRAG와 Neo4j 및 LangChain, LlamaIndex와 같은 검색 프레임워크의 통합은 텍스트 소스에서 추출된 구조화된 지식 그래프에서 데이터를 검색하는 데 고급 기능을 제공할 수 있다. 지역 및 글로벌 검색 전략을 활용하는 이 구현은 GraphRAG의 실제 적용을 보여주는 예시다.