주요 컨텐츠로 이동

Databricks에서 지식 그래프 RAG 시스템 구축, 개선 및 배포

Building, Improving, and Deploying Knowledge Graph RAG Systems on Databricks

발행일: 2025년 4월 1일

제조Less than a minute

Summary

  • GraphRAG 개요: 이 블로그는 검색 증강 생성(RAG) 시스템을 Neo4j와 같은 그래프 데이터베이스로 어떻게 향상시킬 수 있는지 탐구하며, 구조화된 데이터에서 개체 간의 의미론적 관계를 포착하여 더 정확한 AI 출력을 가능하게 합니다.
  • 사용 사례 및 이점: GraphRAG는 사이버 보안의 위협 탐지뿐만 아니라 제조와 같은 산업의 예측 유지보수 및 공급망 관리에 적용되어 복잡한 데이터 세트에서 더 깊은 통찰력을 제공할 수 있습니다.
  • Databricks에서의 구현: 이 블로그는 LLM, Delta Tables 및 Mosaic AI Agent Framework의 통합을 통해 엔드투엔드 배포를 보여주며 Neo4j를 사용하여 Databricks에서 GraphRAG 시스템을 구축하고 배포하는 방법을 설명합니다.

GraphRAG 이해하기

지식 그래프란 무엇인가요?

다른 구조화된 데이터 표현 대신 지식 그래프(KG)를 사용하는 이유를 이해하려면, 비즈니스, 사람, 기계 또는 고객과 같은 개체와 해당 속성 또는 기능 간의 명시적인 관계에 초점을 맞추고 있다는 점을 인식하는 것이 중요합니다. 고차원 공간에서의 유사성을 우선시하는 임베딩 또는 벡터 검색과 달리, 지식 그래프는 데이터 포인트 간의 의미론적 연결 및 컨텍스트를 나타내는 데 탁월합니다. 지식 그래프의 기본 단위는 사실입니다. 사실은 다음 중 하나의 방식으로 삼중항으로 표현될 수 있습니다:

  • HRT: <헤드, 관계, 테일>
  • SPO: <주어, 술어, 목적어>

두 가지 간단한 KG 예시는 아래와 같습니다. 사실의 왼쪽 예시는 <Andrea, loves, Irene>일 수 있습니다. KG는 이러한 여러 사실의 모음일 뿐임을 알 수 있습니다. 하지만 그래프에는 의미론이 있다는 점을 알 수 있습니다. 왼쪽 예시는 두 사람 간의 로맨틱한 관계를 설명하지 않는 반면, 오른쪽 예시는 두 사람 간의 로맨틱한 관계를 설명합니다.

그래프의 의미론적 관계
그래프의 의미론적 관계

지식 그래프에서 의미론의 중요성을 이해했으니, 다음 코드 예제에서 사용할 데이터셋인 BloodHound 데이터셋을 소개하겠습니다. BloodHound는 Active Directory 환경 내의 관계 및 상호 작용을 분석하기 위해 설계된 특수 데이터셋입니다. 보안 감사, 공격 경로 분석 및 네트워크 구조의 잠재적 취약점에 대한 통찰력을 얻는 데 널리 사용됩니다.

BloodHound 데이터셋의 노드는 Active Directory 환경 내의 개체를 나타냅니다. 일반적으로 다음을 포함합니다:

  • 사용자: 도메인의 개별 사용자 계정을 나타냅니다.
  • 그룹: 권한 할당을 위해 사용자 또는 다른 그룹을 집계하는 보안 또는 배포 그룹을 나타냅니다.
  • 컴퓨터: 네트워크의 개별 장치(워크스테이션 또는 서버)를 나타냅니다.
  • 도메인: 사용자, 컴퓨터 및 그룹을 구성하고 관리하는 Active Directory 도메인을 나타냅니다.
  • 조직 단위(OU): 사용자 또는 그룹과 같은 개체를 구성하고 관리하는 데 사용되는 컨테이너를 나타냅니다.
  • GPO(그룹 정책 개체): 도메인 내의 사용자 및 컴퓨터에 적용되는 정책을 나타냅니다.

노드 개체에 대한 자세한 설명은 여기에서 확인할 수 있습니다. 그래프의 관계는 노드 간의 상호 작용, 멤버십 및 권한을 정의합니다. 엣지에 대한 전체 설명은 여기에서 확인할 수 있습니다.

BloodHound 데이터셋의 그래프 모델
BloodHound 데이터셋의 그래프 모델

전통적인 RAG 대신 GraphRAG를 선택하는 경우

표준 RAG에 비해 GraphRAG의 주요 이점은 검색 단계에서 정확한 일치를 수행할 수 있다는 것입니다. 이는 다운스트림 그래프 쿼리 언어로 자연어 쿼리의 의미론을 명시적으로 유지함으로써 부분적으로 가능해집니다. 코사인 유사성을 기반으로 하는 밀집 검색 기술은 쿼리가 정확히 일치하지 않더라도 관련 정보를 검색하고 모호한 의미론을 포착하는 데 뛰어나지만, 정밀도가 중요한 경우도 있습니다. 이는 규정 준수, 법률 또는 고도로 큐레이션된 데이터셋과 같이 모호성이 허용되지 않는 도메인에서 GraphRAG를 특히 유용하게 만듭니다.

그렇긴 하지만, 두 접근 방식은 상호 배타적이지 않으며 각자의 강점을 활용하기 위해 종종 결합됩니다. 밀집 검색은 의미론적 관련성을 위해 광범위한 검색을 수행할 수 있으며, 지식 그래프는 정확한 일치 또는 관계에 대한 추론을 통해 결과를 개선합니다. 

전통적인 RAG 대신 GraphRAG를 선택하는 경우 

GraphRAG는 고유한 이점을 가지고 있지만, 어려움도 따릅니다. 주요 장애물은 문제를 올바르게 정의하는 것입니다. 모든 데이터 또는 사용 사례가 지식 그래프에 적합한 것은 아닙니다. 작업이 고도로 비정형화된 텍스트를 포함하거나 명시적인 관계가 필요하지 않은 경우, 추가적인 복잡성이 가치가 없을 수 있으며 비효율성과 최적이 아닌 결과를 초래할 수 있습니다.

또 다른 과제는 지식 그래프를 구조화하고 유지 관리하는 것입니다. 효과적인 스키마를 설계하려면 세부 정보와 복잡성 간의 균형을 신중하게 계획해야 합니다. 잘못된 스키마 설계는 성능과 확장성에 영향을 미칠 수 있으며, 지속적인 유지 관리에는 리소스와 전문 지식이 필요합니다. 

실시간 성능은 또 다른 한계입니다. Neo4j와 같은 그래프 데이터베이스는 복잡한 순회 및 다중 홉 쿼리로 인해 대규모 또는 자주 업데이트되는 데이터셋에 대한 실시간 쿼리에서 어려움을 겪을 수 있으며, 이는 밀집 검색 시스템보다 느리게 만듭니다. 이러한 경우, 속도를 위해 밀집 검색을 사용하고 쿼리 후 분석을 위해 그래프를 개선하는 하이브리드 접근 방식이 더 실용적인 솔루션을 제공할 수 있습니다.

보고서

기업을 위한 에이전틱 AI 플레이북

GraphDB 및 임베딩

Neo4j와 같은 그래프 DB는 종종 HNSW 인덱스를 통해 벡터 검색 기능도 제공합니다. 여기서 차이점은 벡터 데이터베이스에 비해 더 나은 결과를 제공하기 위해 이 인덱스를 사용하는 방식입니다. 쿼리를 수행할 때 Neo4j는 HNSW 인덱스를 사용하여 코사인 유사성 또는 유클리드 거리와 같은 측정값을 기반으로 가장 가까운 일치하는 임베딩을 식별합니다. 이 단계는 벡터 검색에서 제공하는 암시적 의미론을 활용하여 쿼리와 의미론적으로 일치하는 데이터의 시작점을 찾는 데 중요합니다.

그래프 데이터베이스를 차별화하는 것은 이 초기 벡터 기반 검색을 강력한 순회 기능과 결합할 수 있다는 능력입니다. HNSW 인덱스를 사용하여 진입점을 찾은 후 Neo4j는 지식 그래프의 관계에 의해 정의된 명시적 의미론을 활용합니다. 이러한 관계를 통해 데이터베이스는 그래프를 순회하고 추가 컨텍스트를 수집하여 노드 간의 의미 있는 연결을 발견할 수 있습니다. 임베딩에서 오는 암시적 의미론과 그래프 관계에서 오는 명시적 의미론의 이러한 조합을 통해 그래프 데이터베이스는 어느 한 접근 방식만으로는 달성할 수 없는 더 정확하고 컨텍스트적으로 풍부한 답변을 제공할 수 있습니다.

Databricks의 엔드투엔드 GraphRAG

GraphRAG는 Compound AI 시스템의 좋은 예로, 여러 AI 구성 요소가 함께 작동하여 검색을 더 스마트하고 컨텍스트 인식적으로 만듭니다. 이 섹션에서는 모든 것이 어떻게 함께 작동하는지 개략적으로 살펴보겠습니다.

GraphRAG 아키텍처

아래는 분석가의 자연어 질문이 Neo4j 지식 그래프에서 정보를 검색하는 방법을 보여주는 아키텍처 다이어그램입니다.

Databricks의 GraphRAG 아키텍처
Databricks의 GraphRAG 아키텍처

GraphRAG 기반 위협 탐지를 위한 아키텍처는 Databricks와 Neo4j의 강점을 결합합니다:

  1. 보안 운영 센터(SOC) 분석가 인터페이스: 분석가는 Databricks를 통해 시스템과 상호 작용하며 쿼리를 시작하고 경고 권장 사항을 받습니다.
  2. Databricks 처리: Databricks는 데이터 처리, LLM 통합을 처리하고 솔루션의 중앙 허브 역할을 합니다.
  3. Neo4j 지식 그래프: Neo4j는 사이버 보안 지식 그래프를 저장하고 관리하여 복잡한 관계 쿼리를 가능하게 합니다.

구현 개요

이 블로그에서는 코드 세부 정보를 건너뜁니다. 전체 구현은 GitHub 리포지토리를 확인하세요. GraphRAG 에이전트를 구축하고 배포하는 주요 단계를 살펴보겠습니다.

  1. Delta 테이블에서 지식 그래프 빌드: 노트북에서 구조화된 데이터와 비구조화된 데이터에 대한 시나리오를 논의했습니다. Neo4j Spark Connector는 Unity Catalog의 데이터를 그래프 엔터티(노드/관계)로 변환하는 매우 간단한 방법을 제공합니다.
  2. Cypher 쿼리 및 QA용 LLM 배포: GraphRAG는 쿼리 생성 및 요약을 위해 LLM이 필요합니다. HuggingFace의 gpt-4o, llama-3.x, 미세 조정된 text2cypher 모델을 배포하고 프로비저닝된 처리량 엔드포인트를 사용하여 제공하는 방법을 시연했습니다.
  3. GraphRAG 체인 생성 및 테스트: GraphCypherQAChain을 사용하여 다른 LLM을 Cypher 및 QA LLM 및 프롬프트에 사용하는 방법을 시연했습니다. 이를 통해 MLflow Tracing을 사용하여 유리 상자 추적 결과로 추가로 조정할 수 있습니다.
  4. Mosaic AI Agent Framework로 에이전트 배포: Mosaic AI Agent Framework와 MLflow를 사용하여 에이전트를 배포합니다. 노트북에서는 모델 로깅, Unity Catalog에 등록, 서빙 엔드포인트에 배포, 채팅을 위한 리뷰 앱 실행 과정을 포함합니다.
A Chatbot example via Review App
A Chatbot example via Review App

결론

GraphRAG는 더 결정론적이고 맥락에 맞는 AI 출력을 제공하는 에이전트 구축을 위한 강력하면서도 매우 사용자 정의 가능한 접근 방식입니다. 그러나 그 설계는 특정 사례에 따라 다르므로 신중한 아키텍처와 문제별 조정이 필요합니다. 지식 그래프를 Databricks의 확장 가능한 인프라 및 도구와 통합하면 구조화된 데이터와 비구조화된 데이터를 원활하게 결합하여 더 깊은 맥락적 이해를 바탕으로 실행 가능한 통찰력을 생성하는 종단 간 Compound AI 시스템을 구축할 수 있습니다.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요