Graphrag는 조직화되지 않은 텍스트 스 니펫의 기본 의미 검색에 의존하는 전통적인 래그 접근법과 구별되는 RAG ( Govement Augmented Generation )에보다 체계적이고 계층 적 방법을 채택합니다. 프로세스는 원시 텍스트를 지식 그래프로 변환하여 데이터를 커뮤니티 구조로 구성하고 이러한 그룹을 요약하여 시작합니다. 이 구조화 된 접근 방식을 통해 그래프 크래그는이 조직화 된 정보를 활용하여 래그 기반 작업에서의 효과를 향상시키고보다 정확하고 상황을 인식하는 결과를 제공 할 수 있습니다.
이 기사는 Data Science Blogathon 의 일부로 출판되었습니다 .
RAG ( Retrieved-Augmented Generation )는 미리 훈련 된 대형 언어 모델 (LLM)의 힘을 외부 데이터 소스와 통합하여보다 정확하고 문맥 적으로 풍부한 출력을 만들어내는 새로운 방법론입니다. 상황에 맞는 데이터를 가진 ART LLM의 최첨단 시너지는 RAG가 사실 및 도메인 특성에 근거한 반응을 전달할 수있게합니다.
그래프 크래그 (그래프 기반 검색 증강 생성)는 지식 그래프를 활용하여 정보 검색 및 응답 생성을 향상시켜이를 향상시키는 표준 또는 전통적인 래그의 고급 방법입니다. 간단한 의미 검색 및 일반 텍스트 스 니펫에 의존하는 Standard Rag와 달리 그래프 크래그는 구조화되고 계층 적 형식으로 정보를 구성하고 처리합니다.
다른 출처에 흩어져있는 정보로 어려움을 겪고 있습니다. 전통적인 검색 세대 생성 (RAG)은 여러 출처에 흩어져있는 정보를 합성 할 때 어려움에 직면 해 있습니다. 미묘하거나 간접적 인 관계에 의해 연결된 통찰력을 식별하고 결합하는 데 어려움을 겪어 상호 연결된 추론이 필요한 질문에 덜 효과적입니다.
더 넓은 맥락을 포착하는 데 부족합니다. 전통적인 헝겊 방법은 종종 더 넓은 컨텍스트를 캡처하거나 복잡한 데이터 세트를 요약하는 데 부족합니다. 이 제한은 가장 중요한 주제를 추출하거나 복잡한 문서에서 핵심 요점을 정확하게 증류하는 데 필요한 더 깊은 의미 론적 이해가 부족합니다. “데이터 세트의 주요 테마는 무엇입니까?”와 같은 쿼리를 실행할 때, 데이터 세트가 해당 테마를 명시 적으로 정의하지 않는 한 전통적인 헝겊이 관련 텍스트 청크를 식별하기가 어려워집니다. 본질적으로, 이것은 전통적인 걸레가 어려움을 겪는 명백한 검색 작업보다는 쿼리 중심의 요약 작업입니다.
이제 우리는 그래프 크래그로 해결 된 헝겊의 한계를 조사 할 것입니다.
GraphRag는 2 상 작동 설계, 인덱싱 단계 및 쿼리 단계를 통합하여 전통적인 검색 방지 생성 (RAG)의 기능을 확장합니다. 인덱싱 단계에서 추출 된 정보를 계층 적으로 구성하는 지식 그래프를 구성합니다. 쿼리 단계에서는이 구조화 된 표현을 활용하여 사용자 쿼리에 대한 고도로 맥락적이고 정확한 응답을 제공합니다.
인덱싱 단계는 다음 단계로 구성됩니다.
지식 그래프와 자세한 커뮤니티 요약이 장착 된 GraphRag는 쿼리 단계에 존재하는 다양한 단계를 활용하여 우수한 정확도로 사용자 쿼리에 응답 할 수 있습니다.
글로벌 검색 - "논의 된 주요 주제는 무엇입니까?"와 같은 데이터 세트의 광범위한 분석을 요구하는 문의를 위해, 그래프 크래그는 컴파일 된 커뮤니티 요약을 사용합니다. 이 접근법을 통해 시스템은 데이터 세트 전체에 통찰력을 통합하여 철저하고 다재다능한 답변을 제공 할 수 있습니다.
로컬 검색 - 특정 엔티티를 타겟팅하는 쿼리의 경우 그래프 크래그는 지식 그래프의 상호 연결된 구조를 활용합니다. 엔티티의 즉각적인 연결을 탐색하고 관련 주장을 검토함으로써 관련 세부 사항을 수집하여 시스템이 정확하고 상황에 맞는 응답을 제공 할 수 있습니다.
이제 아래에 자세한 단계로 Microsoft 그래프 크래그의 Python 구현을 살펴 보겠습니다.
폴더를 만들고 파이썬 가상 환경을 만듭니다. 아래 그림과 같이 폴더 그래프 래그를 만듭니다. 생성 된 폴더 내에 "Pip Install GraphRag"명령을 사용하여 GraphRag 라이브러리를 설치합니다.
PIP 설치 그래프 래그
GraphRag 폴더 내부에 입력 폴더를 생성하고 일부 텍스트 파일을 폴더 안에 넣습니다. 이 txt 파일을 사용하여 입력 폴더 안에 보관했습니다. 이 기사의 텍스트는이 뉴스 웹 사이트 에서 가져 왔습니다.
입력 폴더가 포함 된 폴더에서 다음 명령을 실행하십시오.
Python -m Graphrag.index --init -root
이 명령은 .env 파일과 settings.yaml 파일을 작성합니다.
the.envfile에서 openai 키를 입력하여 graphrag_api_key에 할당하십시오. 그런 다음 "llm"필드 아래에서 설정 yaml 파일에 의해 사용됩니다. 모델 이름, max_tokens, chunk size와 같은 다른 매개 변수는 다른 많은 매개 변수를 settings.yaml 파일에서 정의 할 수 있습니다. 우리는 "gpt-4o"모델을 사용하여 settings.yaml 파일에서 정의했습니다.
"GraphRag"폴더 내부에서 다음 명령을 사용하여 인덱싱 파이프 라인을 실행합니다.
Python -m Graphrag.index -root.
인덱싱 단계에서 이전 섹션에서 정의 된 모든 단계는 위 명령을 실행하자마자 백엔드에서 발생합니다.
엔티티 및 관계 감지, 지식 그래프 제작, 커뮤니티 탐지 및 다른 커뮤니티의 요약 생성과 같은 인덱싱 단계의 모든 단계를 실행하기 위해 시스템은 "프롬프트"폴더에 정의 된 프롬프트를 사용하여 여러 LLM 호출을 만듭니다. 인덱싱 명령을 실행하면 시스템 이이 폴더를 자동으로 생성합니다.
결과를 개선하려면 문서의 특정 도메인에 맞게 프롬프트를 조정하는 것이 필수적입니다. 예를 들어, entity_extraction.txt 파일에서 텍스트 코퍼스가 늘어나는 도메인의 관련 엔티티의 예를 유지하여 RAG에서보다 정확한 결과를 얻을 수 있습니다.
또한 LANCEDB는 각 텍스트 청크에 대한 임베딩 데이터를 저장하는 데 사용됩니다.
출력 폴더는 아래 그림과 같이 그래프 및 관련 데이터에 해당하는 많은 오랜 파일을 저장합니다.
"문서의 상위 테마"와 같은 전역 쿼리를 실행하려면 그래프 레이그 폴더 내에서 터미널에서 다음 명령을 실행할 수 있습니다.
Python -m Graphrag.query -root. -Method Global "문서의 최고 테마는 무엇입니까?"
글로벌 쿼리는 생성 된 커뮤니티 요약을 사용하여 질문에 답변합니다. 중간 답변은 최종 답변을 생성하는 데 사용됩니다.
TXT 파일의 출력은 다음과 같습니다.
순진한 헝겊의 출력과 비교 :
순진한 걸레 코드는 내 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 란 무엇입니까?
그래프 크래그의 출력
순진한 헝겊의 출력과 비교 :
순진한 걸레 코드는 내 github 에서 찾을 수 있습니다.
Microsoft와 SAP는 AI Copilots, Joule 및 Microsoft 365 Copilot을 완벽하게 통합하여 작업장 생산성을 재정의하고 응용 프로그램간에 전환하지 않고 작업을 수행하고 두 시스템의 데이터에 액세스 할 수 있도록 노력하고 있습니다.
글로벌 및 로컬 출력 모두에서 관찰 된 바와 같이, 그래프 크래그의 응답은 순진한 걸레의 응답과 비교하여 훨씬 포괄적이고 설명 할 수 있습니다.
아래에 나열된 그래프 크래그 투쟁에 대한 특정 도전이 있습니다.
그래프 크래그는 추론, 상황 이해 및 신뢰성의 한계를 해결함으로써 전통적인 래그에 대한 상당한 발전을 보여줍니다. 지식 그래프 및 구조화 된 엔티티 관계를 활용하여 데이터 세트 전체에서 분산 된 정보를 합성하여 더 깊은 의미 적 이해를 가능하게합니다.
Microsoft의 그래프 크래그는 인덱싱 및 쿼리의 2 단계 접근 방식을 결합하여 전통적인 래그를 향상시킵니다. 인덱싱 단계는 추출 된 엔티티 및 관계에서 계층 적 지식 그래프를 구축하여 구조적 요약으로 데이터를 구성합니다. 쿼리 단계에서 그래프 크래그는이 구조를 정확하고 컨텍스트가 풍부한 응답을 위해 활용하여 글로벌 데이터 세트 분석 및 특정 엔터티 기반 쿼리를 제공합니다.
그러나 GraphRag의 이점은 높은 리소스 요구, 구조화 된 데이터에 대한 의존 및 시맨틱 클러스터링의 복잡성을 포함한 과제가 있습니다. 이러한 장애물에도 불구하고, 정확하고 전체적인 반응을 제공하는 능력은 복잡한 쿼리를 처리하기위한 순진한 걸레 시스템에 대한 강력한 대안으로 설정합니다.
A. 그래프 크래그는 미묘한 관계를 식별하는 데 어려움을 겪고있는 전통적인 걸레와 달리 엔티티 간의 상호 연결을 활용하여 산란 된 소스에 대한 통찰력을 합성하는 데 탁월합니다.
Q2. 인덱싱 단계에서 GraphRag는 어떻게 지식 그래프를 생성합니까?A. 텍스트 청크를 처리하여 엔티티와 관계를 추출하고 Leiden과 같은 알고리즘을 사용하여 계층 적으로 구성하며 노드가 엔티티를 나타내는 지식 그래프를 작성하고 가장자리가 관계를 나타냅니다.
Q3. GraphRag의 쿼리 단계에서 두 가지 주요 검색 방법은 무엇입니까? 글로벌 검색 : "주요 주제는 무엇입니까?"와 같은 쿼리에 대한 답변으로 광범위한 분석을 위해 커뮤니티 요약을 사용합니다.
로컬 검색 : 지식 그래프에서 직접 연결을 탐색하여 특정 엔티티에 중점을 둡니다.
A. 그래프 크래그는 여러 LLM 통화로 인한 높은 계산 비용, 시맨틱 클러스터링의 어려움 및 구조화되지 않은 또는 시끄러운 데이터를 처리하는 합병증과 같은 문제를 겪습니다.
Q5. 그래프 크래그는 응답 생성에서 컨텍스트 이해를 어떻게 향상 시키는가?A. 계층 적 지식 그래프 및 커뮤니티 기반 요약에 대한 응답을 기반으로하여 그래프 크래그는 더 깊은 의미 론적 이해와 맥락 적으로 풍부한 답변을 제공합니다.
이 기사에 표시된 미디어는 분석 Vidhya가 소유하지 않으며 저자의 재량에 따라 사용됩니다.
위 내용은 이론에서 구현으로의 그래프 크래그 - 분석 Vidhya의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!