주요 컨텐츠로 이동
고객

데이터에서 대화로: S&P Global Energy가 Databricks Genie 에이전트 및 MCP를 통해 정형 데이터 자산을 대화형으로 구현한 방법

S&P Global Energy가 Databricks Genie 에이전트와 FastMCP를 사용하여 복잡한 구조화된 데이터를 대화형 AI 엔드포인트로 변환한 방법

작성자: Debaprasad Satapathy , Eric Henderson

• 도메인 전문가는 에이전트 코드를 작성하지 않고도 데이터 세트 그룹별로 특화된 Genie 에이전트를 큐레이션하여 거버넌스가 적용된 시맨틱 레이어를 구축합니다.
• Genie 에이전트는 관리형 MCP 서버 역할을 하며, FastMCP 프록시를 통해 복합 엔드포인트로 구성되어 교차 도메인 쿼리를 처리합니다.
• 이 아키텍처는 Unity Catalog 거버넌스를 유지하면서 대화형 데이터 제품의 시장 출시 기간을 크게 단축했습니다.

S&P Global의 목표는 고객이 당사의 데이터 및 리서치 제품 전반에서 인사이트를 발견하고 소비하는 방식을 근본적으로 개선하는 것이었습니다. AI 기반 검색 및 요약도 중요하지만, 신뢰할 수 있는 데이터에 대한 자연어 액세스, 더 풍부한 교차 상품 분석, 그리고 기존에는 서로 다른 사업 부문에 분산되어 있던 인사이트를 연결하는 기능을 통해 더 빠른 의사 결정을 지원하는 데서 더 큰 비즈니스 가치가 창출됩니다. AI 에이전트는 고객이 관계를 발견하고, 리서치를 더 효율적으로 생성하며, 이전보다 더 광범위한 정보에서 실행 가능한 인텔리전스를 도출할 수 있도록 지원합니다.   —Priyanka John, S&P Global Energy 부사장

크고 복잡한 정형 데이터 자산을 AI 에이전트 및 어시스턴트가 사용할 수 있도록 만들려고 시도해 본 적이 있다면, 여러분도 저희와 같은 장벽에 부딪혔을 것입니다. 에이전트의 성능은 에이전트가 액세스할 수 있는 컨텍스트의 수준에 따라 결정되지만, 기업 데이터가 깔끔하게 정리되고 문서화되어 한곳에 모여 있는 경우는 거의 없기 때문입니다.

S&P Global Energy에서 당사의 데이터는 화학 물질, 원유, 정제 제품, 가스 및 전력, 액화천연가스(LNG) 등을 아우르며, 각 상품은 그 자체로 풍부한 데이터 세트 제품군을 구성하고 있습니다. LNG만 하더라도 설비 사양, 화물, 정전/중단(outages), 수급 기본 요소(fundamentals), 넷백(netbacks), 과거 및 예측 가격, 계약 등을 포함합니다. 화학 물질은 생산 능력, 생산량, 가동률, 무역, 최종 용도 및 유도체별 수요, 재고 변동, 국가 및 지역 수준의 수급 균형을 포괄합니다. 다른 상품들도 비슷한 패턴을 따릅니다. 이 데이터는 Databricks 및 여러 비 Databricks 소스에 걸쳐 존재합니다.

저희의 목표는 야심 차지만 명확했습니다. 바로 Model Context Protocol(MCP)을 통해 전체 정형 데이터 자산을 AI 에이전트가 외부에서 사용할 수 있도록 제공하는 것 — 이를 통해 당사뿐만 아니라 고객의 에이전트와 어시스턴트도 자연어로 질문하고 신뢰할 수 있으며 거버넌스가 적용된 답변을 얻을 수 있도록 하고자 했습니다.

저희는 여러 접근 방식을 평가했습니다. 그중 저희에게 압도적으로 가장 효과적이었던 것은 Databricks Genie Agents였으며, 이는 관리형 MCP 서버로 노출되고 MCP 프록시 레이어를 통해 도메인별 번들로 구성되었습니다.

이 게시물에서는 다음 내용을 배우게 됩니다:

  • 당사의 분야별 전문가(SME)들이 에이전트 코드를 한 줄도 작성하지 않고 각 상품 내 데이터 세트 그룹당 하나씩 집중된 Genie 에이전트(Genie Agents)를 큐레이션하는 방법.
  • 각 Genie 에이전트가 어떻게 자동으로 거버넌스가 적용된 MCP 서버가 되어 모든 MCP 호환 클라이언트나 에이전트에 즉시 연결할 수 있게 되는지.
  • FastMCP 기반 프록시를 사용하여 여러 Genie MCP 서버를 교차 도메인 질문을 위한 복합 엔드포인트로 구성하는 방법.
  • 이 아키텍처가 AI 기반 데이터 제품의 시장 출시 기간(time to market)을 획기적으로 단축한 이유.
Genie 에이전트 덕분에 당사의 도메인 전문가들이 데이터에 대한 지식을 직접 제품화할 수 있게 되었습니다. 이전에는 전체 개발 주기가 필요했던 작업이 이제는 며칠 만에 완료되며, 모든 답변은 당사의 거버넌스 경계 내에 유지됩니다. —Priyanka John, S&P Global Energy 부사장

과제: 정형 데이터는 저장하기는 쉽지만 대화하기는 어렵습니다

대규모 언어 모델(LLM)은 대화와 추론에 매우 뛰어나지만, 데이터로 연결되는 다리를 놓지 않으면 데이터에 대한 질문에 답할 수 없습니다. 정형 기업 데이터의 경우, 역사적으로 그 다리는 다음과 같은 방법 중 하나를 의미했습니다:

  1. 수작업으로 구축한 text-to-SQL 파이프라인 — 강력하지만 취약합니다. 모든 스키마 변경, 모호한 열 이름, 도메인별 지표 정의('무엇을 정전/중단 일수로 계산할 것인가?')가 엔지니어링 작업이 됩니다.
  2. 사용 사례별 맞춤형 API — 새로운 질문 패턴이 생길 때마다 새로운 엔드포인트, 새로운 스프린트, 새로운 릴리스가 필요합니다.
  3. 외부 AI 도구로 데이터 내보내기 — 데이터를 복제하고, 최신성을 저해하며, 거버넌스 경계를 벗어나게 만듭니다.

이러한 각 접근 방식은 동일한 문제를 공유합니다. 데이터를 가장 잘 이해하는 사람들(당사의 SME 및 분석가)이 액세스 레이어를 구축하는 사람들이 아니라는 점입니다. 모든 인사이트는 엔지니어링 백로그를 거쳐야 했습니다. 새로운 대화형 데이터 경험을 시장에 선보이기까지 수개월이 걸렸습니다.

저희에게는 도메인 전문가가 데이터에 대한 대화형 액세스를 직접 큐레이션하고 게시할 수 있고, 엔지니어링 부서는 에이전트 연결 방식을 표준화하며, 거버넌스는 중앙 집중식으로 유지되는 접근 방식이 필요했습니다. Genie 에이전트와 MCP의 결합이 바로 이를 가능하게 해주었습니다.

아키텍처: 시맨틱 레이어로서의 Genie 에이전트, 계약으로서의 MCP

 참조 아키텍처

당사의 아키텍처는 세 개의 레이어로 구성되어 있으며, 각 레이어는 이에 가장 적합한 인력이 담당합니다. 위의 다이어그램은 S&P Global Energy 네트워크 내부에 있는 요소와 외부 클라이언트 환경에 있는 요소를 포함하여 엔드투엔드 흐름을 보여줍니다.

레이어 1: SME가 데이터 세트 그룹당 하나의 Genie 에이전트 큐레이션

여기서부터 마법이 시작되며, 특히 코드가 전혀 필요하지 않습니다.

당사의 SME는 비즈니스 도메인과 관련된 테이블을 선택하는 것부터 시작합니다:

  • 테이블이 이미 Databricks에 있는 경우, Unity Catalog를 통해 직접 사용합니다.
  • 데이터가 비 Databricks 소스에 있는 경우, Lakehouse Federation 커넥터를 통해 가져옵니다. 데이터 이동이나 중복 파이프라인이 필요하지 않습니다. 페더레이션된 테이블은 네이티브 테이블과 함께 표시되며 동일한 거버넌스를 상속받습니다.

그런 다음 관련 테이블을 그룹화하고 상품당 하나의 거대한 에이전트가 아니라 데이터 세트 그룹당 하나의 Genie 에이전트를 생성합니다. 상품의 각 하위 카테고리는 고유한 집중형 Genie 에이전트가 됩니다. 예를 들어 LNG 내에서는 다음과 같습니다:

  • LNG 자산 및 계약 Genie 에이전트 — 자산, 운영사, 용량 예측 및 장기 계약
  • LNG 화물 Genie 에이전트 — 화물 추적, 고정 거래(fixtures), 출발지/목적지 및 상업적 조건
  • LNG 입찰 Genie 에이전트  — 발행사, 물량 및 인도 기간별 입찰
  • LNG 정전/중단 Genie 에이전트 — 용량에 영향을 미치는 정전/중단 및 유지보수 이벤트
  • LNG 수급 Genie 에이전트 — 지역별 세분화 및 시나리오 이력이 포함된 기본 요소
  • LNG 넷백 Genie 에이전트 — 허브 가격, 운임, 증발 가스(boil-off) 및 손실에 따른 넷백
  • LNG 가격 Genie 에이전트 — 과거 및 예측 가격 곡선

다른 모든 상품도 고유한 하위 카테고리를 통해 동일한 패턴을 따릅니다. 예를 들어, 화학 물질은 생산 능력, 생산량, 가동률, 무역, 최종 용도 및 유도체별 수요, 재고 변동, 국가 및 지역 수준의 수급 균형을 위한 그룹 수준의 Genie 에이전트를 보유하고 있으며, 원유, 정제 제품, 가스 및 전력도 유사하게 구성되어 있습니다. 그 결과, 무분별하게 분산된 소수의 AI 도구 대신 작고 명확한 범위를 가진 여러 Genie 에이전트 제품군이 구축되었습니다.

각 에이전트 내부에서 SME는 실제 환경에서 text-to-SQL이 실제로 작동하도록 만드는 컨텍스트를 추가합니다. 여기에는 테이블 및 열 설명, 예시 쿼리, 중요 지표에 대해 신뢰할 수 있는 자산, 비즈니스 정의(예: "해상 저장장치(floating storage)는 임계 속도 미만으로 운항하는 선박에서 3일 이상 대기 중인 화물로 정의됨") 등이 포함됩니다. 이는 일반적인 text-to-SQL 솔루션이 생략하는 단계이며, 사용자가 답변을 신뢰할 수 있는지 여부를 결정하는 핵심 단계입니다.

조직 차원의 핵심 인사이트는 다음과 같습니다. 큐레이션이 엔지니어링 활동이 아닌 도메인 활동이 되었다는 점입니다. LNG 맥락에서 "부유식 저장 시설(floating storage)"이 무엇을 의미하는지 아는 사람이 Genie에게 그 의미를 가르치는 사람이 됩니다.

레이어 2: 모든 Genie 에이전트는 자동으로 MCP 서버가 됩니다

이 부분에서 Databricks가 까다로운 작업을 대신 해결해 주었습니다. 각 Genie 에이전트는 별도의 설정 없이 다음과 같은 형식의 엔드포인트에서 Databricks 관리형 MCP 서버로 즉시 제공됩니다:

https://<workspace-hostname>/api/2.0/mcp/genie/{genie_space_id}

배포하거나 호스팅할 필요가 전혀 없습니다. 각 서버는 작고 깔끔한 도구 인터페이스를 제공하며, 기본적으로 에이전트당 두 개의 도구로 구성됩니다:

  1. 쿼리 도구(genie_query_space) — 에이전트가 에이전트에 자연어 질문을 제출합니다.
  2. 응답 도구(genie_poll_response) — 에이전트가 동일한 대화 및 메시지 ID로 폴링하여 생성된 SQL 및 결과 세트를 포함한 전체 응답이 준비되면 이를 가져옵니다.


이 두 가지 도구를 사용하는 '질문 후 폴링(ask-then-poll)' 패턴은 에이전트 기반(agentic) 워크로드에 매우 적합한 것으로 나타났습니다. 질문은 SQL 웨어하우스에 대해 비동기적으로 실행되며, 에이전트는 응답이 준비될 때까지 쿼리 도구가 반환한 대화 및 메시지 ID로 폴링을 수행합니다.

그만큼 중요한 점은 이러한 관리형 서버가 Unity Catalog에 의해 제어된다는 것입니다. Genie 에이전트(또는 이를 사용하는 사용자)는 볼 수 있는 권한이 있는 에이전트 및 기본 테이블에만 액세스할 수 있습니다. 인증은 플랫폼에서 처리합니다. AI 액세스를 위한 보안 레이어를 별도로 구축할 필요가 없었으며, 기존 보안 레이어를 그대로 이어받아 사용할 수 있었습니다.

레이어 3: FastMCP 프록시를 사용하여 그룹 Genie 에이전트를 상품(commodity) 번들로 구성하기

데이터 세트 그룹당 하나의 Genie 에이전트를 두면 각 에이전트가 집중도와 정확도를 유지할 수 있습니다. 하지만 실제 비즈니스 질문은 대개 여러 그룹에 걸쳐 발생합니다. 예를 들어, "최근 Sabine Pass의 가동 중단이 아시아 지역의 화물 프리미엄에 어떤 영향을 미쳤는가?"라는 질문은 Outages 및 Cargo Genie 에이전트 모두에 걸쳐 있으며, "납사(naphtha) 가격이 화학 제품 생산 마진에 어떤 영향을 미치고 있는가?"와 같은 교차 상품 질문은 Refined Products 및 Chemicals Genie 에이전트 모두에 걸쳐 있습니다.

하나의 거대한 에이전트를 구축하여 답변 품질을 떨어뜨리거나 모든 클라이언트가 수십 개의 개별 서버를 구성하도록 강제하는 대신, FastMCP의 프록시 및 구성 기능을 사용하여 복합 MCP 엔드포인트를 생성했습니다. 일반적으로 상품당 하나씩 생성하며, 해당 상품의 그룹 수준 Genie MCP 서버를 네임스페이스가 지정된 도구가 있는 단일 서버 뒤에 마운트합니다. 더 높은 수준의 복합 엔드포인트도 동일한 방식으로 여러 상품을 번들로 묶을 수 있습니다:

from fastmcp import FastMCP

# Each group-level Genie Agent is a managed MCP server on Databricks 
cargo = FastMCP.as_proxy(genie_mcp_config(“lng_cargo_agent_id”), name=“cargo”) 
outages = FastMCP.as_proxy(genie_mcp_config(“lng_outages_agent_id”), name=“outages”) 
netbacks = FastMCP.as_proxy(genie_mcp_config(“lng_netbacks_agent_id”), name=“netbacks”) 

# Compose the group Genies into one commodity bundle 
lng = FastMCP(name=“lng-composite”) 
lng.mount(cargo, prefix=“cargo”)
lng.mount(outages, prefix=“outages”)
lng.mount(netbacks, prefix=“netbacks”) 

# The same pattern repeats for Chemicals, Crude Oil, Refined Products, Coal …

(예시 코드 조각 — 사용 중인 FastMCP 버전 및 인증 설정에 맞게 조정하세요.)

그 결과, 에이전트는 상품당 하나의 복합 엔드포인트에 연결하여 큐레이션된 그룹 도구 세트(cargo_genie_query_agent, outages_genie_query_agent, netbacks_genie_query_agent 등, 각각 이에 대응하는 genie_poll_response와 쌍을 이룸)를 볼 수 있습니다. 에이전트의 LLM은 질문을 어떤 그룹 Genie로 라우팅할지 결정하거나, 여러 그룹에 걸친 질문을 여러 에이전트로 분산(fan out)시킨 다음 결과를 종합합니다.

이를 통해 두 가지 장점을 모두 얻을 수 있었습니다: 하부에는 범위가 좁고 정확도가 높은 그룹 수준의 Genie 에이전트를 두고, 상부에는 광범위한 상품 및 자산 전반의 대화형 액세스를 제공하는 것입니다.

비즈니스 측면에서 변화된 점

비즈니스 이해관계자들에게 위의 기술적 세부 사항은 몇 가지 매우 실질적인 결과로 이어집니다.

시장 출시 기간(Time to market)이 획기적으로 단축되었습니다. 이전에는 새로운 대화형 데이터 환경을 구축하려면 요구사항 정의, API 설계, text-to-SQL 엔지니어링, 테스트, 배포에 이르는 전체 개발 주기가 필요했습니다. 하지만 이 아키텍처를 사용하면 새로운 데이터 세트 그룹 또는 전체 상품을 출시할 때 SME가 해당 Genie 에이전트를 생성하고 큐레이션하기만 하면 됩니다. 에이전트가 생성되는 즉시 MCP 엔드포인트가 활성화됩니다.

SME는 요청자가 아닌 게시자가 되었습니다. LNG 화물이나 화학 제품의 수급 균형을 이해하는 도메인 전문가들은 더 이상 데이터를 노출하기 위해 지원 티켓을 제출할 필요가 없습니다. 이들이 Genie 에이전트를 큐레이션하면 즉시 서비스에 반영됩니다. 엔지니어링 리소스는 맞춤형 액세스 레이어를 구축하는 작업에서 얇고 재사용 가능한 단일 프록시 레이어를 유지 관리하는 작업으로 전환되었습니다.

거버넌스가 기본으로 내장되어 제공됩니다. 에이전트가 던지는 모든 질문은 완전한 감사 기능을 갖춘 거버넌스 대상 테이블(네이티브 또는 페더레이션)에서 Unity Catalog 권한을 거쳐 실행됩니다. AI가 데이터를 사용할 수 있도록 한다고 해서 우리의 통제 범위를 벗어나게 된다는 의미는 아닙니다.

하나의 통합 패턴으로 사내외의 수많은 소비자를 지원합니다. MCP는 개방형 표준이므로 동일한 복합 엔드포인트를 통해 내부 에이전트, 고객 대상 AI 서비스, 그리고 무엇보다 외부 고객까지 지원할 수 있습니다. 외부 고객은 자체 MCP 호환 에이전트 및 어시스턴트를 거버넌스가 적용된 S&P Global Energy 데이터에 직접 연결할 수 있습니다. 다리를 한 번만 건설하면 내부든 외부든 모든 MCP 클라이언트가 이를 이용할 수 있습니다.

답변 품질을 측정할 수 있으며 그 상태가 유지됩니다. 가격 책정, 공급, 계약 데이터가 실제 의사 결정을 주도하는 도메인에서는 사용자가 모든 응답과 계산을 신뢰할 수 있어야 합니다. Genie 에이전트 벤치마크는 SME가 사용자의 실제 질문 방식(동일한 질문의 다양한 표현 방식 포함)을 반영하는 테스트 질문을 정의하고, 검증된 답변을 기준으로 에이전트의 정확도를 자동으로 채점할 수 있는 내장된 방법을 제공합니다. 마찬가지로 중요한 점은 지침, 데이터 또는 비즈니스 로직을 개선한 후 벤치마크를 다시 실행할 수 있으므로 시간이 지나도 정확도가 유지된다는 것입니다. 그 결과, 데이터와 고객의 질문이 진화함에 따라 에이전트가 정확성을 유지할 수 있도록 '큐레이션, 벤치마크, 개선, 재벤치마크'로 이어지는 효율적인 지속적 품질 루프가 구축됩니다.

교훈 및 모범 사례

유사한 경로를 고려 중인 팀을 위해 저희의 여정에서 얻은 몇 가지 실질적인 시사점을 공유합니다:

  1. Genie 에이전트의 범위를 좁히고 잘 큐레이션된 상태로 유지하세요. 에이전트가 명확한 지침과 예시 쿼리를 사용하여 하나의 특정 데이터 도메인을 다룰 때 답변 품질이 가장 높습니다. 상품당 하나의 에이전트를 만들거나, 더 나아가 모든 것을 제어하는 하나의 거대한 에이전트를 만들고 싶은 유혹을 뿌리치세요. 대신 MCP 레이어에서 여러 데이터 도메인을 결합하세요.
  2. 파이프라인을 구축하기 전에 Lakehouse Federation을 사용하세요. Databricks가 아닌 소스의 경우, 페더레이션을 통해 단 하나의 새로운 ETL 작업 없이도 "대화형" 환경을 구축할 수 있었습니다. 자주 사용되는 경로(hot path)는 나중에 언제든지 구체화할 수 있습니다.
  3. 시맨틱 레이어에 투자하세요. 열 설명, 비즈니스 정의, 신뢰할 수 있는 예시 쿼리는 단순한 데모와 실제 제품을 구분 짓는 요소입니다. 이는 SME가 시간을 투자할 만한 가치가 충분한 작업입니다.
  4. 복합 도구의 네임스페이스를 명확하게 지정하세요. 에이전트가 여러 그룹 Genie의 도구를 볼 때, cargo_ 및 outages_와 같은 접두사는 LLM이 질문을 올바르게 라우팅하는 데 도움이 됩니다.
  5. 대기 시간(latency)뿐만 아니라 신뢰도를 측정하세요. 저희는 큐레이션 중에 SME가 Genie가 생성한 SQL에 얼마나 동의하는지 추적했습니다. 이는 비즈니스 사용자가 이 환경을 도입할지 여부를 예측할 수 있는 가장 좋은 선행 지표입니다.

결론

저희의 목표는 LNG, 화학, 원유, 정제 제품, 가스 및 전력 등을 아우르는 전체 정형 데이터 자산을 AI 에이전트가 안전하고 정확하며 신속하게 사용할 수 있도록 하는 것이었습니다. SME가 큐레이션한 시맨틱 레이어로서의 Databricks Genie 에이전트, 배포가 필요 없는 통합 계약으로서의 관리형 MCP 서버, 그리고 크로스 도메인 구성을 위한 FastMCP 프록시를 통해 바로 그 목표를 달성했습니다:

  • 속도: 새로운 대화형 데이터 도메인이 개발 주기를 거치지 않고 며칠 만에 라이브로 전환되어 시장 출시 기간을 획기적으로 단축합니다.
  • 정확성: 도메인 범위 내에서 SME(분야별 전문가)가 큐레이션한 에이전트가 비즈니스 사용자가 실제로 신뢰할 수 있는 답변을 제공합니다.
  • 거버넌스: Unity Catalog는 유지 관리해야 할 병렬 보안 스택 없이 네이티브 데이터와 페더레이션된 데이터 모두에서 모든 질문을 안전하게 보호합니다.
  • 개방성: 하나의 MCP 표준 브리지가 내부 및 외부의 모든 현재와 미래 에이전트를 지원합니다.

하지만 더 근본적인 변화는 조직적인 부분에 있습니다. 이제 데이터를 이해하는 사람들이 데이터에 대한 액세스 권한을 게시하게 되었습니다. 개별 기술보다 바로 이러한 변화 덕분에 정형 데이터가 사용자가 쿼리하는 대상에서 단순히 대화할 수 있는 대상으로 거듭날 수 있었습니다.

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

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.