작성자: Andrea Santurbano, Chandhana Padmanabhan, Jiayi Wu , 댄 페치
다른 구조화된 데이터 표현 대신 지식 그래프(KG)를 사용하는 이유를 이해하려면, 비즈니스, 사람, 기계 또는 고객과 같은 개체와 해당 속성 또는 기능 간의 명시적인 관계에 초점을 맞추고 있다는 점을 인식하는 것이 중요합니다. 고차원 공간에서의 유사성을 우선시하는 임베딩 또는 벡터 검색과 달리, 지식 그래프는 데이터 포인트 간의 의미론적 연결 및 컨텍스트를 나타내는 데 탁월합니다. 지식 그래프의 기본 단위는 사실입니다. 사실은 다음 중 하나의 방식으로 삼중항으로 표현될 수 있습니다:
두 가지 간단한 KG 예시는 아래와 같습니다. 사실의 왼쪽 예시는 <Andrea, loves, Irene>일 수 있습니다. KG는 이러한 여러 사실의 모음일 뿐임을 알 수 있습니다. 하지만 그래프에는 의미론이 있다는 점을 알 수 있습니다. 왼쪽 예시는 두 사람 간의 로맨틱한 관계를 설명하지 않는 반면, 오른쪽 예시는 두 사람 간의 로맨틱한 관계를 설명합니다.
지식 그래프에서 의미론의 중요성을 이해했으니, 다음 코드 예제에서 사용할 데이터셋인 BloodHound 데이터셋을 소개하겠습니다. BloodHound는 Active Directory 환경 내의 관계 및 상호 작용을 분석하기 위해 설계된 특수 데이터셋입니다. 보안 감사, 공격 경로 분석 및 네트워크 구조의 잠재적 취약점에 대한 통찰력을 얻는 데 널리 사용됩니다.
BloodHound 데이터셋의 노드는 Active Directory 환경 내의 개체를 나타냅니다. 일반적으로 다음을 포함합니다:
노드 개체에 대한 자세한 설명은 여기에서 확인할 수 있습니다. 그래프의 관계는 노드 간의 상호 작용, 멤버십 및 권한을 정의합니다. 엣지에 대한 전체 설명은 여기에서 확인할 수 있습니다.
표준 RAG에 비해 GraphRAG의 주요 이점은 검색 단계에서 정확한 일치를 수행할 수 있다는 것입니다. 이는 다운스트림 그래프 쿼리 언어로 자연어 쿼리의 의미론을 명시적으로 유지함으로써 부분적으로 가능해집니다. 코사인 유사성을 기반으로 하는 밀집 검색 기술은 쿼리가 정확히 일치하지 않더라도 관련 정보를 검색하고 모호한 의미론을 포착하는 데 뛰어나지만, 정밀도가 중요한 경 우도 있습니다. 이는 규정 준수, 법률 또는 고도로 큐레이션된 데이터셋과 같이 모호성이 허용되지 않는 도메인에서 GraphRAG를 특히 유용하게 만듭니다.
그렇긴 하지만, 두 접근 방식은 상호 배타적이지 않으며 각자의 강점을 활용하기 위해 종종 결합됩니다. 밀집 검색은 의미론적 관련성을 위해 광범위한 검색을 수행할 수 있으며, 지식 그래프는 정확한 일치 또는 관계에 대한 추론을 통해 결과를 개선합니다.
전통적인 RAG 대신 GraphRAG를 선택하는 경우
GraphRAG는 고유한 이점을 가지고 있지만, 어려움도 따릅니다. 주요 장애물은 문제를 올바르게 정의하는 것입니다. 모든 데이터 또는 사용 사례가 지식 그래프에 적합한 것은 아닙니다. 작업이 고도로 비정형화된 텍스트를 포함하거나 명시적인 관계가 필요하지 않은 경우, 추가적인 복잡성이 가치가 없을 수 있으며 비효율성과 최적이 아닌 결과를 초래할 수 있습니다.
또 다른 과제는 지식 그래프를 구조화하고 유지 관리하는 것입니다. 효과적인 스키마를 설계하려면 세부 정보와 복잡성 간의 균형을 신중하게 계획해야 합니다. 잘못된 스키마 설계는 성능과 확장성에 영향을 미칠 수 있으며, 지속적인 유지 관리에는 리소스와 전문 지식이 필요합니다.
실시간 성능은 또 다른 한계입니다. Neo4j와 같은 그래프 데이터베이스는 복잡한 순회 및 다중 홉 쿼리로 인해 대규모 또는 자주 업데이트되는 데이터셋에 대한 실시간 쿼리에서 어려움을 겪을 수 있으며, 이는 밀집 검색 시스템보다 느리게 만듭니다. 이러한 경우, 속도를 위해 밀집 검색을 사용하고 쿼리 후 분석을 위해 그래프를 개선하는 하이브리드 접근 방식이 더 실 용적인 솔루션을 제공할 수 있습니다.
Neo4j와 같은 그래프 DB는 종종 HNSW 인덱스를 통해 벡터 검색 기능도 제공합니다. 여기서 차이점은 벡터 데이터베이스에 비해 더 나은 결과를 제공하기 위해 이 인덱스를 사용하는 방식입니다. 쿼리를 수행할 때 Neo4j는 HNSW 인덱스를 사용하여 코사인 유사성 또는 유클리드 거리와 같은 측정값을 기반으로 가장 가까운 일치하는 임베딩을 식별합니다. 이 단계는 벡터 검색에서 제공하는 암시적 의미론을 활용하여 쿼리와 의미론적으로 일치하는 데이터의 시작점을 찾는 데 중요합니다.
그래프 데이터베이스를 차별화하는 것은 이 초기 벡터 기반 검색을 강력한 순회 기능과 결합할 수 있다는 능력입니다. HNSW 인덱스를 사용하여 진입점을 찾은 후 Neo4j는 지식 그래프의 관계에 의해 정의된 명시적 의미론을 활용합니다. 이러한 관계를 통해 데이터베이스는 그래프를 순회하고 추가 컨텍스트를 수집하여 노드 간의 의미 있는 연결을 발견할 수 있습니다. 임베딩에서 오는 암시적 의미론과 그래프 관계에서 오는 명시적 의미론의 이러한 조합을 통해 그래프 데이터베이스는 어느 한 접근 방식만으로는 달성할 수 없는 더 정확하고 컨텍스트적으로 풍부한 답변을 제공할 수 있습니다.
GraphRAG는 Compound AI 시스템의 좋은 예로, 여러 AI 구성 요소가 함께 작동하여 검색을 더 스마트하고 컨텍스트 인식적으로 만듭니다. 이 섹션에서는 모든 것이 어떻게 함께 작동하는지 개략적으로 살펴보겠습니다.
아래는 분석가의 자연어 질문이 Neo4j 지식 그래프에서 정보를 검색하는 방법을 보여주는 아키텍처 다이어그램입니다.
GraphRAG 기반 위협 탐지를 위한 아키텍처는 Databricks와 Neo4j의 강점을 결합합니다:
이 블로그에서는 코드 세부 정보를 건너뜁니다. 전체 구현은 GitHub 리포지토리를 확인하세요. GraphRAG 에이전트를 구축하고 배포하는 주요 단계를 살펴보겠습니다.
GraphRAG는 더 결정론적이고 맥락에 맞는 AI 출력을 제공하는 에이전트 구축을 위한 강력하면서도 매우 사용자 정의 가능한 접근 방식입니다. 그러나 그 설계는 특정 사례에 따라 다르므로 신중한 아키텍처와 문제별 조정이 필요합니다. 지식 그래프를 Databricks의 확장 가능한 인프라 및 도구와 통합하면 구조화된 데이터와 비구조화된 데이터를 원활하게 결합하여 더 깊은 맥락적 이해를 바탕으로 실행 가능한 통찰력을 생성하는 종단 간 Compound AI 시스템을 구축할 수 있습니다.
(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)
블로그를 구독하고 최신 게시물을 이메일로 받아보세요.