NVIDIA가 Text-to-SQL의 가장 큰 문제를 해결했습니다!
이 발표된 기능은 Auto Ontology라고 불리며, 에이전트가 회사 데이터베이스에 대해 유효한 SQL을 작성할 수 있음에도 불구하고 여전히 잘못된 숫자를 반환하는 이유를 해결하는 것을 목표로 합니다.
데이터베이스는 컬럼들을 저장하고 있으며, 에이전트는 이 컬럼들이 무엇을 의미하는지 추측해야 합니다. 'extendedprice'라는 컬럼은 매출(revenue)을 담고 있을 수 있지만, 같은 회사 내의 두 시스템에서 매출을 다르게 정의할 수 있습니다.
Auto Ontology는 쿼리가 작성되기 전에 에이전트에게 온톨로지(ontology)를 제공합니다. 이는 비즈니스 개념을 해당 개념을 저장하는 컬럼에 매핑하고 그들 간의 관계를 정의하는 스키마입니다. 이 시스템은 사용자가 직접 작성할 필요 없이 데이터베이스 메타데이터로부터 이 스키마 초안을 작성하며, 이후 사람이 이를 인증하게 됩니다.
이 온톨로지는 세 가지 요소를 포함합니다:
→ 용어(terms): 고객(customer), 주문(order), 또는 매출(revenue)과 같은 비즈니스 개념에 대한 설명 및 동의어를 담고 있으며, 이들이 저장되는 정확한 컬럼에 매핑됩니다.
→ SQL 속성(SQL attributes): 마진이나 이동 평균 합계(rolling total)와 같은 검토된 표현식으로, 모든 측정 항목이 항상 동일한 방식으로 계산되도록 재사용됩니다.
→ 관계(relationships): 키와 데이터 자체에서 추론하여 브릿지 테이블을 포함하여 테이블들이 어떻게 조인되는지를 정의합니다.
이러한 요소들을 초안 작성하기 위해 시스템은 컬럼에 대한 프로파일링(profiling)을 수행하고, 값 샘플링(sampling)을 하며, 테이블별로 용어를 추출하고, 과거 쿼리 이력을 마이닝하여 SQL 속성을 확보합니다. 모든 데이터는 Postgres에 저장되며, 임베딩(embeddings)은 pgvector를 사용합니다.
쿼리 시점에는 에이전트가 질문을 인증된 용어에 매핑하고, 관계를 따라 조인(join)을 찾으며, SQL을 작성합니다. 또한 필터 값들을 실제 데이터와 비교하고, 검사에 실패하면 쿼리를 복구하며, 답변과 함께 사용된 SQL 및 단계를 반환합니다.
만약 데이터가 질문을 지원할 수 없는 경우, 에이전트는 그렇게 알려줍니다. NVIDIA의 데모에서 광고 지출 대비 수익률(return on ad spend)에 대한 질문이 들어왔지만 광고 데이터가 없는 판매 데이터베이스의 경우, 시스템은 꾸며낸 숫자를 제공하는 대신 매출액을 제시하며 명확히 설명하는 답변을 제공했습니다.
따라서 이 온톨로지는 에이전트에게 답을 어떻게 계산해야 하는지 알려줄 뿐만 아니라, 아예 답변 자체가 가능한 질문인지 여부까지 알려줍니다.
이미지에서 보여주듯이, 인제스션 서비스(ingestion service)는 사용자의 소스 데이터베이스로부터 온톨로지(ontology)를 컴파일하며, 모든 에이전트 하네스(agent harness)는 MCP, CLI 또는 REST API를 통해 여기에 접근할 수 있습니다. 이 서비스는 Postgres, Snowflake, Databricks, DuckDB를 포함한 10개 엔진을 지원하며, 기본적으로 Nemotron에서 실행되거나 모든 OpenAI 호환 엔드포인트에서 실행 가능하고 Apache 2.0 라이선스입니다.
GitHub에서 확인해 보세요: https://t.co/rHJRxI8LMp
모델이 무언가를 추출하기 전에 스키마(schema)를 정의하는 동일한 원칙은 에이전트 메모리(agent memory)가 작동할지 여부도 결정합니다. 저는 이 내용을 아래 인용된 기사에서 작성했습니다.
https://t.co/VW9EyOiy4Z