
Databricks AI/BI Genie의 Benchmark 기능 테스트 — Agent 모드 0% → 100%로의 개선 루프
요약
Databricks AI/BI Genie의 Benchmark 기능을 활용하여 Agent 모드의 SQL 생성 정밀도를 측정하고 개선하는 과정을 다룹니다. 테스트 질문 세트와 정답 SQL을 비교하여 정답률을 산출하며, 반복적인 개선 워크플로우를 통해 성능을 높이는 방법을 설명합니다.
핵심 포인트
- Benchmark 기능을 통해 자연어 질문에 대한 SQL 생성 정밀도를 정량적으로 평가 가능
- Chat 모드(싱글 턴)와 Agent 모드(멀티스텝 추론)의 평가 방식 차이 이해
- Agent 모드 개선을 위해 Instructions 및 Example SQL 최적화 필요
- 동일 의도의 다양한 질문 등록을 통한 모델 대응 능력 검증 권장
Databricks의 AI/BI Genie(구 Genie Space)에는 자연어로 된 질문의 응답 정밀도를 정량적으로 측정하는 Benchmark 기능이 내장되어 있습니다. 테스트 질문 세트를 작성하여 일괄 실행하고, Genie가 생성한 SQL 결과와 정답 SQL의 결과를 비교함으로써 스페이스 전체의 정밀도를 평가할 수 있습니다.
본 기사에서는 샘플 스페이스인 「Bakehouse Sales Starter Space」를 사용하여 Benchmark 기능을 실제로 구동해 보고, Agent 모드와 Chat 모드에서 정밀도가 어떻게 변하는지 검증했습니다.
결론부터 말씀드리면, 동일한 질문 세트에 대해 Agent 모드는 0%(0/4), Chat 모드는 100%(4/4)라는 결과가 나왔습니다. 하지만 Benchmark 기능에 내장된 개선 워크플로우를 사용함으로써, Agent 모드도 0% → 75% → 100%로 단계적으로 개선할 수 있었습니다. 이 차이가 왜 발생하는지, 그리고 어떻게 개선하는지를 기능의 메커니즘과 함께 해설합니다.
Genie의 Benchmark 기능은 다음과 같은 흐름으로 동작합니다.
- 테스트 질문과 정답 SQL (Ground truth SQL) 쌍을 등록한다 (1스페이스당 최대 500문항)
- 「Run all benchmarks」로 일괄 실행한다
- 각 질문에 대해 Genie가 SQL을 생성·실행하고, 정답 SQL의 결과 세트와 비교한다
- 정답률 (Accuracy)이 퍼센테이지로 표시된다
각 Benchmark 질문은 새로운 대화로서 실행됩니다. 과거 스레드의 컨텍스트는 이어받지 않으며, Agent에 설정된 Instructions·Example SQL·SQL Functions만을 사용하여 답변이 생성됩니다.
Benchmark에는 두 가지 실행 모드가 있으며, 평가 방법이 근본적으로 다릅니다.
| 관점 | Chat 모드 | Agent 모드 |
|---|---|---|
| 답변 생성 | SQL을 하나 생성하여 실행 (싱글 턴) | 멀티스텝 추론을 통해 여러 SQL 및 텍스트 리포트를 생성 |
| ... |
Chat 모드에서는 결과 세트의 일치 여부로 기계적으로 판정됩니다. 컬럼·행의 정렬 순서 차이는 허용되며, 수치는 유효숫자 4자리로 반올림하여 비교됩니다.
Agent 모드에서는 LLM이 텍스트 응답 내용을 평가하기 때문에, Ground truth SQL뿐만 아니라 Evaluation note (평가 가이드라인)의 기술 내용이 정밀도에 영향을 미칩니다.
이번에는 Databricks가 준비한 샘플 스페이스 「Bakehouse Sales Starter Space」를 사용했습니다. 가상의 베이커리 매출·재고 데이터에 대해 자연어로 질문할 수 있는 스페이스입니다.
Benchmark 탭을 열면 「Evaluations」와 「Questions」라는 두 개의 서브 탭이 있습니다. Evaluations 탭에는 벤치마크 실행 결과 목록이, Questions 탭에는 등록된 질문과 정답 SQL이 표시됩니다.
Questions 탭에는 이미 4개의 질문이 등록되어 있었습니다. 모두 「매출 1위 상품은 무엇인가?」라는 동일한 의도를 서로 다른 표현 방식으로 나타낸 것입니다.
| # | 질문문 | 정답 SQL 개요 |
|---|---|---|
| 1 | Which product generates the highest sales volume? | SUM(totalPrice) + ORDER BY DESC + LIMIT 1 |
| ... |
동일한 의도의 질문을 여러 개 등록하는 것은 공식 문서에서도 권장되는 프랙티스(Practice)입니다. 표현 방식의 차이에 대한 Genie의 대응 능력을 측정할 수 있습니다.
또한, Questions 탭 상단에는 「Suggested Benchmark Questions」로서 AI가 자동으로 생성한 질문 후보가 표시됩니다. 스페이스의 테이블 구조나 지금까지의 이용 패턴을 바탕으로 제안되는 기능으로, 질문 세트 구축의 출발점으로 활용할 수 있습니다.
먼저 Agent 모드로 「Run all benchmarks」를 실행했습니다. 4문항 모두 처리가 완료되자, 결과는 0% accurate (0/4)였습니다.
4문항 모두 실패 이유는 공통적이었으며, Assessment: Bad, Score reason은 「Extra Rows」, 「Incomplete Output」였습니다. Failure analysis의 Reasoning에는 다음과 같은 분석이 자동 생성되어 있었습니다.
"The Genie query is incorrect because it does not limit the output to the single product with the highest sales volume, as requested. Instead, it returns all products, which does not fully answer the user's question."
즉, Agent 모드의 Genie는 「매출 1위 상품」이 아니라 「전체 상품의 매출 목록」을 반환해 버렸다는 뜻입니다.
나란히 놓고 보면 차이가 명확합니다.
Model output (Genie가 생성한 SQL)은 SUM(totalPrice)에 더해 COUNT(*)나 SUM(quantity) 등 불필요한 컬럼을 포함하고 있으며, LIMIT 1이 없습니다. Agent 모드는 「데이터의 전체상을 보여준 뒤 분석한다」는 멀티스텝 (multi-step) 추론을 수행하기 때문에, 단일 행을 반환하는 SQL이 아니라 전체를 조망하는 쿼리를 생성하는 경향이 있습니다.
다음으로, Chat 모드 (싱글턴 (single-turn) SQL 생성)로 전환하여 동일한 벤치마크를 실행했습니다.
결과는 100% accurate (4/4)였습니다.
Evaluations 탭으로 돌아가면, 2번의 실행 결과가 목록으로 표시됩니다.
| 실행 일시 | 모드 | Accuracy |
|---|---|---|
| Jul 18, 2026, 21:24:49 | Chat | 100% (4/4) |
| Jul 18, 2026, 21:19:34 | Agent | 0% (0/4) |
이 차이는 「Genie의 버그」가 아니라, 두 모드의 설계 사상 차이에서 기인합니다.
Chat 모드는 「하나의 질문에 대해 하나의 SQL을 생성하는」 싱글턴 (single-turn) 동작입니다. 「매출 1위 상품은?」이라고 물으면, ORDER BY ... DESC LIMIT 1을 포함하는 SQL을 정직하게 생성합니다. 결과 세트가 정답 SQL과 일치하므로 Good으로 판정됩니다.
Agent 모드는 멀티스텝 (multi-step) 추론을 수행합니다. 질문에 대해 우선 전체상을 파악하기 위한 SQL을 실행하고, 그 결과를 바탕으로 텍스트 리포트를 생성하는 복합적인 답변을 수행합니다.
이번 케이스에서 Agent는 모든 상품의 매출 목록을 취득한 뒤, 「6개 상품 모두가 $10,758 ~ $11,595 범위 내에 있어 근접해 있다」라는 텍스트 분석을 반환했습니다. 비즈니스 사용자에게는 친절한 답변이지만, 벤치마크의 정답 SQL (상품 1개만 반환)과는 결과 세트가 일치하지 않기 때문에 Bad로 판정되었습니다.
이 결과는 다음과 같은 시사점을 포함합니다.
- Chat 모드용 질문은 명확한 정답 (특정 값·행)이 있는 질문에 적합합니다.
- Agent 모드용 질문은 Evaluation note (텍스트 기반의 평가 가이드라인)를 활용해야 합니다. Ground truth SQL만으로는 Agent의 추론 스타일을 올바르게 평가할 수 없습니다.
- 동일한 질문 세트를 두 모드 모두에서 실행하면, 모드별로 잘하는 것과 못하는 것이 보입니다.
Agent 모드가 0%인 상태로 끝나는 것이 아니라, Benchmark 기능에 통합된 개선 워크플로우를 사용하여 정밀도를 높여보겠습니다.
Agent 모드의 오답 화면에는 「Review proposed fixes」 링크가 표시되어 있습니다. 클릭하면 「Review knowledge snippets」 다이얼로그가 열리며, Genie가 벤치마크 실패 원인을 분석하여 SQL Expressions (MEASURE 정의)를 자동으로 제안해 줍니다.
이번에는 두 가지 MEASURE 정의가 제안되었습니다.
- 「total sales volume for each product」 means
SUM(samples.bakehouse.sales_transactions.totalPrice) - 「top-performing product sales」 means
SUM(samples.bakehouse.sales_transactions.totalPrice)
각 제안에는 Instructions(이 정의를 언제 사용할지, 대상 테이블, 오용 리스크)도 자동으로 생성됩니다. 두 가지 모두 승인하고 「Accept 2 snippets」를 클릭합니다.
지식을 보강한 상태에서, 다시 Agent 모드의 「Run all benchmarks」를 실행합니다.
재실행 결과는 75% accurate (3/4)였습니다.
4문제 중 3문제에서 Assessment: Good으로 개선되었습니다. Agent가 생성하는 텍스트 리포트도 「Golden Gate Ginger generates the highest sales volume with $11,595」와 같이 정답을 간결하게 서술하는 형태로 바뀌었습니다.
남은 1문제(「Which is our top performing product?」)는 여전히 Bad였습니다. 「top 10 products를 반환하고 추가 컬럼을 포함하고 있다」는 이유로 LIMIT 1이 적용되지 않았습니다.
남은 1문제의 실패 원인은 「top / best라고 물었을 때 여러 행을 반환해 버리는 것」이었습니다. 이에 대처하기 위해 Configure > Instructions에 다음 규칙을 추가했습니다.
When the user asks for the "top" or "best" product, return only the single #1 product, not a list of multiple products. Use LIMIT 1 or equivalent to restrict the result to one row.
이 Instruction을 저장한 후 다시 Agent 모드의 벤치마크를 실행한 결과, 100% accurate (4/4)를 달성했습니다.
Evaluations 탭에서 모든 실행 결과를 비교하면 개선 경과를 한눈에 확인할 수 있습니다.
| 실행 일시 | 모드 | Accuracy | 비고 |
|---|---|---|---|
| Jul 19, 2026, 02:05:42 | Agent | 100% (4/4) | General Instructions 추가 후 |
| ... |
개선 흐름을 정리하면 다음과 같습니다.
- Review proposed fixes에서 SQL Expressions (MEASURE 정의)를 추가 → 0% → 75%
- General Instructions에 「top/best는 LIMIT 1」 규칙을 추가 → 75% → 100%
공식 블로그에서도 0% → 54% → 77% → 100%로 반복적으로 정밀도를 높인 사례가 소개되어 있으며, 벤치마크는 「한 번에 100%를 목표로 하는 것」이 아니라 실패 원인을 분석하여 단계적으로 개선해 나가는 도구입니다.
검증 중에 확인된 기타 기능도 소개합니다.
오답 질문의 「Review proposed fixes」를 통해 SQL Expressions의 추가 제안을 받을 수 있습니다. 상세 내용과 실제 개선 결과는 앞서 언급한 「개선 루프의 실천」 섹션을 참조하십시오.
각 질문의 상세 화면에 「Update ground truth」 버튼이 있습니다. Genie의 답변이 더 적절한 경우, 정답 SQL을 Genie의 출력값으로 덮어쓸 수 있습니다.
스페이스의 테이블 구조나 이용 패턴에 기반하여 AI가 질문 후보를 자동으로 제안합니다. 「Reject」로 거절하거나, 「Review」로 정답 SQL을 설정한 후 채택할 수 있습니다. 질문 세트의 초기 구축을 효율화하는 보조 도구입니다.
공식 문서와 블로그를 바탕으로 벤치마크 설계의 포인트를 정리합니다.
- 동일한 의도의 질문을 2~4가지 표현 방식으로 작성하여, 프레이징 (Phrasing)에 대한 강건성 (Robustness)을 측정한다
- Benchmark의 정답 SQL은 Agent의 Example SQL과 분리한다 (순수한 평가를 위해)
- 구성 변경이 있을 때마다 벤치마크를 재실행하여 리그레션 (Regression)을 감지한다
- Agent 모드의 질문에는 반드시 Evaluation note를 설정한다
- 오답이 된 질문은 Failure analysis를 확인하고, Instructions나 메타데이터를 개선한다
- 공식 블로그에서는 0% → 54% → 77% → 100%로 반복적으로 정밀도를 높인 사례가 소개되어 있으며, 첫 점수가 낮더라도 개선 여지는 크다
Genie의 Benchmark 기능은 NL2SQL의 정밀도를 정량적으로 측정하고 개선 사이클을 돌리기 위한 도구입니다.
이번 검증에서는 Agent 모드 0% → Chat 모드 100%라는 초기 결과에 대해, 다음과 같은 2단계 과정을 통해 Agent 모드도 100%까지 개선할 수 있었습니다.
- Review proposed fixes에서 SQL Expressions 추가 (0% → 75%)
- General Instructions에 규칙 추가 (75% → 100%)
첫 스코어가 낮더라도, Benchmark 기능이 제공하는 개선 워크플로우(Failure analysis → Review proposed fixes → Instructions 조정)를 반복함으로써 단계적으로 정밀도를 높여갈 수 있습니다. 벤치마크의 정밀도 스코어는 'Genie의 똑똑함'이 아니라 '스페이스 설정의 적절성'을 반영하며, 반복적으로 개선해 나가는 것이 Genie 스페이스의 품질 향상을 위한 지름길입니다.
Evaluation note는 Agent 모드의 벤치마크 질문에 설정할 수 있는 임의의 텍스트 필드입니다. 벤치마크 실행 시 LLM judge에게 전달되어, '올바른 답변이란 어떤 내용인가'를 지시하는 가이드라인 역할을 합니다.
공식 문서에서는 다음과 같이 설명하고 있습니다.
(Agent mode only, optional) Evaluation note 필드에 정답 또는 기대되는 내용에 대한 가이드를 입력하십시오. Genie는 이 evaluation note를 LLM judge에게 전달합니다.
Chat 모드에서는 SQL 결과 세트(Result set)의 기계적인 비교로 정오를 판정하지만, Agent 모드는 텍스트 리포트 형식의 답변을 생성하기 때문에 SQL 일치 여부만으로는 평가할 수 없습니다. Evaluation note에 '답변에 포함되어야 할 내용'이나 '기대되는 분석 관점'을 기술함으로써, LLM judge가 적절하게 채점할 수 있게 됩니다.
| 항목 | Chat 모드 | Agent 모드 |
|---|---|---|
| 정답의 정의 | SQL Answer (정답 SQL 쿼리) | Evaluation note (자연어 가이드라인) |
| ... |
설정 위치는 Benchmark의 질문 작성 화면에서 모드 'Agent'를 선택했을 때 표시되는 'Evaluation note' 필드입니다.
이번 검증에서 Agent 모드가 0%가 된 한 가지 원인은, Evaluation note를 설정하지 않고 Ground truth SQL의 결과 세트 비교만으로 평가했기 때문입니다. Agent 모드의 질문에는 Evaluation note를 설정하여, 텍스트 리포트의 내용을 평가 기준으로 포함하는 것이 권장됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기