>기술 주변기기 >일체 포함 >이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

Christopher Nolan
Christopher Nolan원래의
2025-03-17 11:17:09727검색

Graphrag는 조직화되지 않은 텍스트 스 니펫의 기본 의미 검색에 의존하는 전통적인 래그 접근법과 구별되는 RAG ( Govement Augmented Generation )에보다 체계적이고 계층 적 방법을 채택합니다. 프로세스는 원시 텍스트를 지식 그래프로 변환하여 데이터를 커뮤니티 구조로 구성하고 이러한 그룹을 요약하여 시작합니다. 이 구조화 된 접근 방식을 통해 그래프 크래그는이 조직화 된 정보를 활용하여 래그 기반 작업에서의 효과를 향상시키고보다 정확하고 상황을 인식하는 결과를 제공 할 수 있습니다.

학습 목표

  • 그래프 크래그가 무엇인지 이해하고 그래프의 중요성과 전통적인 순진한 걸레 모델에서 어떻게 개선되는지 탐색하십시오.
  • Microsoft의 그래프 크래그, 특히 지식 그래프, 커뮤니티 탐지 및 계층 구조의 적용에 대한 더 깊은 이해를 얻습니다. 이 시스템 내에서 글로벌 및 로컬 검색 기능이 어떻게 작동하는지 알아보십시오.
  • 워크 플로 및 통합에 대한 실질적인 이해를 얻으려면 Microsoft Graphrag 라이브러리의 실습 파이썬 구현에 참여하십시오.
  • 개선과 차이점을 강조하기 위해 그래프 크래그 및 전통적인 래그 방법으로 생성 된 출력을 비교하고 대조하십시오.
  • 자원 집약적 프로세스 및 대규모 애플리케이션의 최적화 요구를 포함하여 그래프가 직면 한 주요 과제를 식별하십시오.

이 기사는 Data Science Blogathon 의 일부로 출판되었습니다 .

목차

  • 학습 목표
  • 그래프 래그는 무엇입니까?
  • 왜 전통적인/순진한 걸레에 그래프 크래그?
  • graphrag에 의해 해결 된 헝겊의 제한
  • Microsoft의 그래프 크래그는 어떻게 작동합니까?
    • 인덱싱 단계
    • 쿼리 단계
  • Microsoft의 그래프 크래그의 Python 구현
    • 1 단계 : 파이썬 가상 환경 생성 및 라이브러리 설치
    • 2 단계 : settings.yaml 파일 생성
    • 3 단계 : 인덱싱 파이프 라인 실행
    • 4 단계 : 쿼리 실행
    • 로컬 검색
  • 그래프 크래그의 도전
  • 결론
    • 주요 테이크 아웃
  • 자주 묻는 질문

그래프 래그는 무엇입니까?

RAG ( Retrieved-Augmented Generation )는 미리 훈련 된 대형 언어 모델 (LLM)의 힘을 외부 데이터 소스와 통합하여보다 정확하고 문맥 적으로 풍부한 출력을 만들어내는 새로운 방법론입니다. 상황에 맞는 데이터를 가진 ART LLM의 최첨단 시너지는 RAG가 사실 및 도메인 특성에 근거한 반응을 전달할 수있게합니다.

그래프 크래그 (그래프 기반 검색 증강 생성)는 지식 그래프를 활용하여 정보 검색 및 응답 생성을 향상시켜이를 향상시키는 표준 또는 전통적인 래그의 고급 방법입니다. 간단한 의미 검색 및 일반 텍스트 스 니펫에 의존하는 Standard Rag와 달리 그래프 크래그는 구조화되고 계층 적 형식으로 정보를 구성하고 처리합니다.

왜 전통적인/순진한 걸레에 그래프 크래그?

다른 출처에 흩어져있는 정보로 어려움을 겪고 있습니다. 전통적인 검색 세대 생성 (RAG)은 여러 출처에 흩어져있는 정보를 합성 할 때 어려움에 직면 해 있습니다. 미묘하거나 간접적 인 관계에 의해 연결된 통찰력을 식별하고 결합하는 데 어려움을 겪어 상호 연결된 추론이 필요한 질문에 덜 효과적입니다.

더 넓은 맥락을 포착하는 데 부족합니다. 전통적인 헝겊 방법은 종종 더 넓은 컨텍스트를 캡처하거나 복잡한 데이터 세트를 요약하는 데 부족합니다. 이 제한은 가장 중요한 주제를 추출하거나 복잡한 문서에서 핵심 요점을 정확하게 증류하는 데 필요한 더 깊은 의미 론적 이해가 부족합니다. “데이터 세트의 주요 테마는 무엇입니까?”와 같은 쿼리를 실행할 때, 데이터 세트가 해당 테마를 명시 적으로 정의하지 않는 한 전통적인 헝겊이 관련 텍스트 청크를 식별하기가 어려워집니다. 본질적으로, 이것은 전통적인 걸레가 어려움을 겪는 명백한 검색 작업보다는 쿼리 중심의 요약 작업입니다.

graphrag에 의해 해결 된 헝겊의 제한

이제 우리는 그래프 크래그로 해결 된 헝겊의 한계를 조사 할 것입니다.

  • 엔티티 간의 상호 연결을 활용하여 그래프 크래그는 더 높은 정밀도로 관련 데이터를 찾아서 검색하는 능력을 개선합니다.
  • 지식 그래프를 사용하여 GraphRag는 쿼리에 대한보다 상세하고 미묘한 이해를 제공하여보다 정확한 응답 생성을 지원합니다.
  • 구조적, 사실 데이터에 대한 반응을 근거로함으로써 그래프는 잘못되거나 제작 된 정보를 생성 할 가능성을 크게 줄입니다.

Microsoft의 그래프 크래그는 어떻게 작동합니까?

GraphRag는 2 상 작동 설계, 인덱싱 단계 및 쿼리 단계를 통합하여 전통적인 검색 방지 생성 (RAG)의 기능을 확장합니다. 인덱싱 단계에서 추출 된 정보를 계층 적으로 구성하는 지식 그래프를 구성합니다. 쿼리 단계에서는이 구조화 된 표현을 활용하여 사용자 쿼리에 대한 고도로 맥락적이고 정확한 응답을 제공합니다.

인덱싱 단계

인덱싱 단계는 다음 단계로 구성됩니다.

  • 입력 텍스트를 작고 관리 가능한 덩어리로 분할하십시오.
  • 각 청크에서 엔티티와 관계를 추출합니다.
  • 엔티티와 관계를 구조적 형식으로 요약합니다.
  • 노드와 함께 엔티티 및 가장자리를 관계로서 지식 그래프를 구성하십시오.
  • 알고리즘을 사용하여 지식 그래프 내에서 커뮤니티를 식별하십시오.
  • 소규모 공동체 내에서 개별 실체와 관계를 요약합니다.
  • 집계 된 커뮤니티를 계층 적으로 더 높은 수준의 요약을 만듭니다.

쿼리 단계

지식 그래프와 자세한 커뮤니티 요약이 장착 된 GraphRag는 쿼리 단계에 존재하는 다양한 단계를 활용하여 우수한 정확도로 사용자 쿼리에 응답 할 수 있습니다.

글로벌 검색 - "논의 된 주요 주제는 무엇입니까?"와 같은 데이터 세트의 광범위한 분석을 요구하는 문의를 위해, 그래프 크래그는 컴파일 된 커뮤니티 요약을 사용합니다. 이 접근법을 통해 시스템은 데이터 세트 전체에 통찰력을 통합하여 철저하고 다재다능한 답변을 제공 할 수 있습니다.

로컬 검색 - 특정 엔티티를 타겟팅하는 쿼리의 경우 그래프 크래그는 지식 그래프의 상호 연결된 구조를 활용합니다. 엔티티의 즉각적인 연결을 탐색하고 관련 주장을 검토함으로써 관련 세부 사항을 수집하여 시스템이 정확하고 상황에 맞는 응답을 제공 할 수 있습니다.

Microsoft의 그래프 크래그의 Python 구현

이제 아래에 자세한 단계로 Microsoft 그래프 크래그의 Python 구현을 살펴 보겠습니다.

1 단계 : 파이썬 가상 환경 생성 및 라이브러리 설치

폴더를 만들고 파이썬 가상 환경을 만듭니다. 아래 그림과 같이 폴더 그래프 래그를 만듭니다. 생성 된 폴더 내에 "Pip Install GraphRag"명령을 사용하여 GraphRag 라이브러리를 설치합니다.

 PIP 설치 그래프 래그

2 단계 : settings.yaml 파일 생성

GraphRag 폴더 내부에 입력 폴더를 생성하고 일부 텍스트 파일을 폴더 안에 넣습니다. 이 txt 파일을 사용하여 입력 폴더 안에 보관했습니다. 이 기사의 텍스트는이 뉴스 웹 사이트 에서 가져 왔습니다.

입력 폴더가 포함 된 폴더에서 다음 명령을 실행하십시오.

 Python -m Graphrag.index --init -root

이 명령은 .env 파일과 settings.yaml 파일을 작성합니다.

이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

the.envfile에서 openai 키를 입력하여 graphrag_api_key에 할당하십시오. 그런 다음 "llm"필드 아래에서 설정 yaml 파일에 의해 사용됩니다. 모델 이름, max_tokens, chunk size와 같은 다른 매개 변수는 다른 많은 매개 변수를 settings.yaml 파일에서 정의 할 수 있습니다. 우리는 "gpt-4o"모델을 사용하여 settings.yaml 파일에서 정의했습니다.

이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

3 단계 : 인덱싱 파이프 라인 실행

"GraphRag"폴더 내부에서 다음 명령을 사용하여 인덱싱 파이프 라인을 실행합니다.

 Python -m Graphrag.index -root.

인덱싱 단계에서 이전 섹션에서 정의 된 모든 단계는 위 명령을 실행하자마자 백엔드에서 발생합니다.

폴더를 프롬프트합니다

엔티티 및 관계 감지, 지식 그래프 제작, 커뮤니티 탐지 및 다른 커뮤니티의 요약 생성과 같은 인덱싱 단계의 모든 단계를 실행하기 위해 시스템은 "프롬프트"폴더에 정의 된 프롬프트를 사용하여 여러 LLM 호출을 만듭니다. 인덱싱 명령을 실행하면 시스템 이이 폴더를 자동으로 생성합니다.

이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

결과를 개선하려면 문서의 특정 도메인에 맞게 프롬프트를 조정하는 것이 필수적입니다. 예를 들어, entity_extraction.txt 파일에서 텍스트 코퍼스가 늘어나는 도메인의 관련 엔티티의 예를 유지하여 RAG에서보다 정확한 결과를 얻을 수 있습니다.

LANCEDB에 저장된 임베드

또한 LANCEDB는 각 텍스트 청크에 대한 임베딩 데이터를 저장하는 데 사용됩니다.

그래프 데이터 용 파일 파일

출력 폴더는 아래 그림과 같이 그래프 및 관련 데이터에 해당하는 많은 오랜 파일을 저장합니다.

이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

4 단계 : 쿼리 실행

"문서의 상위 테마"와 같은 전역 쿼리를 실행하려면 그래프 레이그 폴더 내에서 터미널에서 다음 명령을 실행할 수 있습니다.

글로벌 검색

 Python -m Graphrag.query -root. -Method Global "문서의 최고 테마는 무엇입니까?"

글로벌 쿼리는 생성 된 커뮤니티 요약을 사용하여 질문에 답변합니다. 중간 답변은 최종 답변을 생성하는 데 사용됩니다.

TXT 파일의 출력은 다음과 같습니다.

이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

순진한 헝겊의 출력과 비교 :

순진한 걸레 코드는 내 github 에서 찾을 수 있습니다.

 1. SAP 및 Microsoft 365 응용 프로그램의 통합
2. 원활한 사용자 경험의 잠재력
3. SAP와 Microsoft 간의 협업
4. 생산성을 극대화하는 목표
5. Microsoft Ignite의 미리보기
6. 제한 미리보기 발표
7. 제한된 미리보기에 등록 할 수있는 기회.

로컬 검색

"Microsoft 및 SAP가 공동 작업하는 것은 무엇입니까?"와 같은 문서와 관련된 로컬 쿼리를 실행하려면 GraphRag 폴더 내의 터미널에서 다음 명령을 실행할 수 있습니다. 아래 명령은 구체적으로 쿼리를 로컬 쿼리로 지정하여 실행이 글로벌 쿼리에 사용 된 커뮤니티 요약에 의존하는 대신 지식 그래프를 더 깊이 파고 들도록합니다.

 Python -m Graphrag.query -root. -Method Local "SAP 및 Microsoft 란 무엇입니까?

그래프 크래그의 출력

이론에서 구현으로의 그래프 크래그 - 분석 Vidhya

순진한 헝겊의 출력과 비교 :

순진한 걸레 코드는 내 github 에서 찾을 수 있습니다.

 Microsoft와 SAP는 AI Copilots, Joule 및 Microsoft 365 Copilot을 완벽하게 통합하여 작업장 생산성을 재정의하고 응용 프로그램간에 전환하지 않고 작업을 수행하고 두 시스템의 데이터에 액세스 할 수 있도록 노력하고 있습니다.

글로벌 및 로컬 출력 모두에서 관찰 된 바와 같이, 그래프 크래그의 응답은 순진한 걸레의 응답과 비교하여 훨씬 포괄적이고 설명 할 수 있습니다.

그래프 크래그의 도전

아래에 나열된 그래프 크래그 투쟁에 대한 특정 도전이 있습니다.

  • 여러 LLM 호출 : 프로세스에서 이루어진 여러 LLM 호출로 인해 그래프 크래그는 비싸고 느릴 수 있습니다. 따라서 확장 성을 보장하기 위해서는 비용 최적화가 필수적입니다.
  • 높은 자원 소비 : 지식 그래프 구성 및 쿼리에는 특히 대규모 데이터 세트를 확장 할 때 중요한 계산 리소스가 포함됩니다. 많은 노드와 가장자리로 대형 그래프를 처리하려면 성능 병목 현상을 피하기 위해 신중한 최적화가 필요합니다.
  • 시맨틱 클러스터링의 복잡성 : Leiden과 같은 알고리즘을 사용하여 의미있는 클러스터를 식별하는 것은 특히 느슨하게 연결된 엔티티가있는 데이터 세트의 경우 어려울 수 있습니다. 잘못 식별 된 클러스터는 단편화되거나 지나치게 광범위한 커뮤니티 요약으로 이어질 수 있습니다.
  • 다양한 데이터 형식 처리 : 그래프 크래그는 구조화 된 입력에 의존하여 의미있는 관계를 추출합니다. 구조화되지 않은, 일관성이 없거나 시끄러운 데이터는 추출 및 그래프 구축 프로세스를 복잡하게 할 수 있습니다.

결론

그래프 크래그는 추론, 상황 이해 및 신뢰성의 한계를 해결함으로써 전통적인 래그에 대한 상당한 발전을 보여줍니다. 지식 그래프 및 구조화 된 엔티티 관계를 활용하여 데이터 세트 전체에서 분산 된 정보를 합성하여 더 깊은 의미 적 이해를 가능하게합니다.

Microsoft의 그래프 크래그는 인덱싱 및 쿼리의 2 단계 접근 방식을 결합하여 전통적인 래그를 향상시킵니다. 인덱싱 단계는 추출 된 엔티티 및 관계에서 계층 적 지식 그래프를 구축하여 구조적 요약으로 데이터를 구성합니다. 쿼리 단계에서 그래프 크래그는이 구조를 정확하고 컨텍스트가 풍부한 응답을 위해 활용하여 글로벌 데이터 세트 분석 및 특정 엔터티 기반 쿼리를 제공합니다.

그러나 GraphRag의 이점은 높은 리소스 요구, 구조화 된 데이터에 대한 의존 및 시맨틱 클러스터링의 복잡성을 포함한 과제가 있습니다. 이러한 장애물에도 불구하고, 정확하고 전체적인 반응을 제공하는 능력은 복잡한 쿼리를 처리하기위한 순진한 걸레 시스템에 대한 강력한 대안으로 설정합니다.

주요 테이크 아웃

  • GraphRag는 원시 텍스트를 계층 적 지식 그래프로 구성하여 RAG를 향상시켜 정확하고 상황을 인식하는 응답을 가능하게합니다.
  • 광범위한 분석에 대한 커뮤니티 요약 및 특정 심층 쿼리에 대한 그래프 연결을 사용합니다.
  • 그래프 크래그는 엔티티 상호 연결 및 구조화 된 데이터를 활용하여 컨텍스트 이해 및 추론의 한계를 극복합니다.
  • Microsoft의 그래프 크래그 라이브러리는 지식 그래프 생성 및 쿼리를위한 도구를 사용하여 실제 애플리케이션을 지원합니다.
  • 정밀도에도 불구하고 그래프 크래그는 리소스 강도, 시맨틱 클러스터링 복잡성 및 구조화되지 않은 데이터 처리와 같은 장애물에 직면합니다.
  • 구조화 된 지식의 반응을 접지함으로써 그래프 크래그는 전통적인 걸레 시스템에서 흔한 부정확성을 줄입니다.
  • 주제별 분석 또는 엔티티 별 통찰력과 같은 상호 연결된 추론이 필요한 복잡한 쿼리에 이상적입니다.

자주 묻는 질문

Q1. 복잡한 쿼리를 위해 전통적인 걸레보다 그래프가 선호되는 이유는 무엇입니까?

A. 그래프 크래그는 미묘한 관계를 식별하는 데 어려움을 겪고있는 전통적인 걸레와 달리 엔티티 간의 상호 연결을 활용하여 산란 된 소스에 대한 통찰력을 합성하는 데 탁월합니다.

Q2. 인덱싱 단계에서 GraphRag는 어떻게 지식 그래프를 생성합니까?

A. 텍스트 청크를 처리하여 엔티티와 관계를 추출하고 Leiden과 같은 알고리즘을 사용하여 계층 적으로 구성하며 노드가 엔티티를 나타내는 지식 그래프를 작성하고 가장자리가 관계를 나타냅니다.

Q3. GraphRag의 쿼리 단계에서 두 가지 주요 검색 방법은 무엇입니까?

글로벌 검색 : "주요 주제는 무엇입니까?"와 같은 쿼리에 대한 답변으로 광범위한 분석을 위해 커뮤니티 요약을 사용합니다.
로컬 검색 : 지식 그래프에서 직접 연결을 탐색하여 특정 엔티티에 중점을 둡니다.

Q4. 그래프 크래그는 어떤 과제에 직면합니까?

A. 그래프 크래그는 여러 LLM 통화로 인한 높은 계산 비용, 시맨틱 클러스터링의 어려움 및 구조화되지 않은 또는 시끄러운 데이터를 처리하는 합병증과 같은 문제를 겪습니다.

Q5. 그래프 크래그는 응답 생성에서 컨텍스트 이해를 어떻게 향상 시키는가?

A. 계층 적 지식 그래프 및 커뮤니티 기반 요약에 대한 응답을 기반으로하여 그래프 크래그는 더 깊은 의미 론적 이해와 맥락 적으로 풍부한 답변을 제공합니다.

이 기사에 표시된 미디어는 분석 Vidhya가 소유하지 않으며 저자의 재량에 따라 사용됩니다.

위 내용은 이론에서 구현으로의 그래프 크래그 - 분석 Vidhya의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.