GraphRAG - Microsoft의 데이터 디스커버리 도구
(microsoft.com)- LLM의 강력한 기능을 사용하여 비정형 텍스트에서 의미 있는 정형 데이터를 추출하도록 설계된 데이터 파이프라인 및 변환 제품군
- 이전에 보지 못한 데이터 세트에 대한 질의응답을 가능하게 하는 그래프 기반 접근 방식
- 2월에 소개했던 도구로, 이제 오픈소스로 공개하여 더 구조화된 정보 검색과 포괄적인 응답 생성을 제공함
주요 기능
- 대규모 언어 모델(LLM)을 사용하여 텍스트 문서 모음에서 풍부한 지식 그래프를 자동으로 추출함
- 이 그래프 기반 데이터 인덱스는 사용자 쿼리 이전에 데이터의 의미 구조를 보고할 수 있음
- 고밀도로 연결된 노드의 "커뮤니티"를 계층적 방식으로 감지하여 고수준 주제에서 저수준 주제에 이르기까지 그래프를 여러 수준으로 분할
- LLM을 사용하여 이러한 각 커뮤니티를 요약하면 데이터셋의 계층적 요약이 생성되어 어떤 질문을 해야할 지 미리 알 필요 없이 데이터셋을 이해할 수 있음
- 각 커뮤니티는 해당 엔티티와 관계를 설명하는 커뮤니티 요약의 기초 역할을 함
데이터셋 전체를 다루는 질문에 대한 답변의 장점
- 이런 "커뮤니티 요약"이 벡터 검색에 기반한 naive RAG 접근 방식이 부족한 전역 질문(데이터셋 전체를 다루는 질문)에 어떻게 도움을 줄 수 있는까?
- 예를 들어 "데이터셋의 주요 주제는 무엇입니까?"와 같은 질문은 naive RAG가 항상 오해의 소지가 있는 답변을 제공하게 됨
- 전역 질문에 답하려면 모든 입력 텍스트를 고려해야 함
- 커뮤니티 요약은 전역 데이터 맥락의 모든 관련 내용을 유지하는 맵 리듀스 접근 방식을 사용하여 이러한 전역 질문에 답할 수 있음:
- LLM 컨텍스트 창 크기까지 커뮤니티 보고서를 그룹화함
- 각 그룹에 질문을 매핑하여 커뮤니티 답변을 생성함
- 최종 전역 답변으로 모든 관련 커뮤니티 답변을 줄임
평가 및 결과
- 이 접근 방식을 naive RAG 및 계층적 소스 텍스트 요약과 비교하기 위해 LLM GPT-4를 사용하여 다양한 activity-centered sense-making 질문을 생성함
- 생성된 답변에 대해 3가지 평가 지표를 선택함: comprehensiveness(모든 측면을 상세히 다룸), diversity(다양한 관점 제공), empowerment(정보에 입각한 의사 결정 지원)
- GraphRAG는 naive RAG보다 comprehensiveness와 diversity 측면에서 우수한 성능을 보임(~70-80% 승률)
- 또한 GraphRAG는 중간 수준 및 낮은 수준의 커뮤니티 요약을 사용할 때 이러한 측면에서 소스 텍스트 요약보다 낮은 토큰 비용으로 더 나은 성능을 보임(쿼리당 ~20-70% 토큰 사용)
- 가장 높은 수준의 커뮤니티의 경우 계층적 소스 텍스트 요약과 경쟁력 있는 성능을 보였으며 토큰 비용이 훨씬 낮음(쿼리당 ~2-3% 토큰 사용)
연구 인사이트 및 향후 방향
- 초기 연구 주기를 통해 LLM이 비정형 텍스트 입력에서 풍부한 지식 그래프를 성공적으로 도출할 수 있음을 입증함
- 이러한 그래프는 naive RAG가 적절한 응답을 생성할 수 없고 계층적 소스 텍스트 요약이 지나치게 비싼 새로운 유형의 전역 쿼리를 지원할 수 있음
- 현재 그래프 인덱스 생성의 선행 비용을 유지하면서 이러한 비용을 줄이기 위한 다양한 접근 방식을 모색 중임
- 문제 영역에 LLM 추출 프롬프트를 자동으로 조정하는 최신 작업은 이러한 프롬프트를 사용자 정의하고, 엔티티 유형을 열거하며, 샷 예제를 만드는 데 필요한 선행 작업을 줄이는 방법의 예임
- GraphRAG와 솔루션 가속기를 공개적으로 사용할 수 있도록 함으로써 데이터를 전체적으로 이해하는 것이 중요한 사용자와 사용 사례에 그래프 기반 RAG 접근 방식을 더 쉽게 접근할 수 있도록 하는 것이 목표임
Hacker News 의견
-
Microsoft의 GraphRAG 프로젝트는 최신 추출 라이브러리 없이도 지식 그래프를 구축하는 방법을 사용함
- GPT-4와 같은 모델이 특정 형식 지침을 잘 따르기 때문일 가능성이 있음
- 예시를 제공하여 원하는 스키마를 따르게 함
-
Microsoft가 GraphRAG를 오픈 소스로 공개한 것에 대해 매우 기쁨
- GraphRAG와 Llama3를 MacBook에서 사용해 볼 계획임
- 이 도구가 게임 체인저가 될 수 있을 것이라고 생각함
-
GraphRAG Method에 대해 더 자세한 정보를 찾고 있는 사람들을 위한 링크 제공
-
GraphRAG 프로젝트는 벡터 데이터베이스가 복잡한 검색 쿼리에 대해 완전한 RAG 솔루션을 제공할 수 있음을 보여줌
- 정확한 지식 그래프를 구축하기 위해서는 텍스트를 LLM에 로드하는 것만으로는 충분하지 않음
- 이를 위해 GraphRAG-SDK를 작성하여 안정적인 온톨로지를 생성함
-
지식 그래프는 전통적인 의미 검색을 대체하지 않지만, RAG 수행 시 새로운 능력을 제공함
- 긴 컨텍스트를 탐색하거나 다른 컨텍스트를 일관되고 효율적으로 탐색할 수 있음
- LLM을 사용한 그래프 생성 시 시도한 결과가 부족했음
- 이를 시도해 볼 것을 기대하고 있음
-
논문을 이해한 것이 맞다면, 인덱싱 시점에 LLM을 여러 번 실행하여 엔티티 추출 및 그래프 인덱스를 구축함
- 그래프를 여러 번 실행하여 클러스터를 생성함
- 쿼리 시점에 모든 클러스터를 실행하여 각 클러스터에서 답변을 생성하고 점수를 매김
- 최저 점수의 답변을 제외한 모든 답변을 실행하여 "글로벌 답변"을 생성함
- 이러한 계산 요구 사항이 큰 데이터셋에 대해 감당할 수 없는 수준일 수 있음
-
그래프와 LLM을 사용한 여러 작은 프로젝트를 진행해 왔으며, 이 접근 방식이 효과가 있음을 확인함
- 프롬프트 엔지니어링과 여러 번의 패스를 통해 해결할 수 있음을 깨달음
- 이를 시도해 보고 결과가 좋다면 Python 환경에서 벗어나기 위해 노력할 것임
-
LlamaIndex의 Knowledge Graph RAG Query 엔진과 관련이 있는지 궁금함
-
러시아-우크라이나 전쟁을 예시로 선택한 것이 흥미로움
- 군사 데이터 분석 계약을 목표로 한 의도적인 선택일 수 있음
-
논문을 읽은 후 이 프로젝트를 시도해 보고 싶었음
- 직접 구현하려고 했지만 코드가 몇 주 뒤에 나올 것이라고 생각했음
- 인내심이 결실을 맺었음