728x90

Databricks Genie(AI/BI Genie)로 Text-to-SQL을 “제품 기능”으로 끝내는 방법
왜 직접 구현(Text-to-SQL 파이프라인)이 힘들어지나
보통 DIY Text-to-SQL은 이런 구성으로 갑니다.
- 스키마 수집(테이블/컬럼/PK-FK/뷰/코멘트)
- 전처리(명칭 정규화, 용어 사전, PII 라벨링)
- 임베딩 + 벡터DB(RAG)
- 질문→관련 스키마/쿼리 후보 검색
- 프롬프트(“이 스키마를 참고해 SQL 만들어라”)
- LLM 생성 SQL 검증(실행/에러 수정/재시도)
- 권한/마스킹/행·열 보안 적용
- 성능/비용/품질 모니터링
여기서 “성능이 안 나오는” 대표 원인은
- 스키마 컨텍스트가 항상 불완전: 컬럼 의미/조인 규칙/비즈니스 정의가 빠짐
- 조인 추론이 어렵고 실수가 잦음
- 스키마 변경/신규 테이블 추가 시 운영비 폭증
- LLM 토큰 비용 + 재시도 비용이 누적
- 보안(권한/PII/감사로그) 내재화가 결국 가장 어렵습니다
Databricks Genie가 정확히 뭐냐
Microsoft Learn 기준으로 Genie는 자연어 질문을 SQL로 변환하고 결과(가능하면 시각화까지)로 답해주는 Azure Databricks 기능입니다. 특히 “주석(설명)이 달린 테이블/열 정보에서 관련 이름·설명을 선택해 자연어를 SQL로 바꾼다”고 명시돼 있어요.
300x250
핵심 포인트는 이겁니다.
- 분야 전문가(분석가)가 Genie Space를 큐레이션: 데이터셋 + 샘플 쿼리 + 텍스트 지침으로 “회사 용어/업무 정의”를 주입
- Genie는 공간에 넣은 데이터 자산 기반으로 workspace의 관련 ‘인기 쿼리’를 자동 제안하기도 합니다. (승인/거절 가능)
- 비즈니스 사용자는 채팅하듯 묻고, SQL/결과/차트를 얻습니다.
Genie Space(지니 공간) 구조를 “설계 관점”으로 이해하기
Genie가 잘 되는 공간은 결국 “지식 저장소(knowledge store)”를 잘 구성한 공간입니다.
Microsoft Learn의 API 예시에서 serialized_space 안에 무엇이 들어가는지가 굉장히 힌트가 됩니다.
공간 구성에 들어가는 대표 요소(실무적으로 중요)
- 데이터 소스: tables/views 목록(공간에 추가된 것만 사용)
- 샘플 질문(sample_questions)
- 텍스트 지침(text_instructions): 전역 규칙(반올림, 기간 기준 등)
- 예제 SQL(example_question_sqls): 복잡 질문은 “정답 SQL”을 예제로 주입
- 조인 규칙(join_specs): 조인 기준을 명시적으로 학습
- 표현식/측정치(measures)/필터(sql_snippets): 회사 표준 지표(매출, 활성고객 등) 정의
이게 왜 좋냐면, DIY에서 가장 힘든 “비즈니스 의미(semantic)”를 공간에 넣어 “제품 기능”으로 운영하게 만들어 주기 때문입니다.
기술 요구사항 / 한계(운영에 바로 영향)
Microsoft Learn에 명시된 Genie Space 요구사항/제한은 아래가 핵심입니다.
- Unity Catalog 필수
- Genie Space 데이터는 Unity Catalog에 등록돼 있어야 함
- 공간당 최대 30개 테이블/뷰 추가 가능
- SQL Warehouse 필요
- Pro 또는 Serverless SQL warehouse가 필요
- 공간 생성/구성 시 작성자는 해당 warehouse에 CAN USE 권한이 있어야 함
- 중요: “작성자의 compute credential이 공간에 embedded되어” 모든 사용자 쿼리 처리에 사용됨
- 처리량/용량 제한
- UI 접근: 워크스페이스 전체 기준 분당 20개 질문 처리(모든 공간 합산)
- Genie API 무료 티어(공개 미리보기): 워크스페이스 전체 기준 best effort 분당 5개 질문
- 공간당 최대 10,000 conversations, 대화당 10,000 messages
- 권한 요구(만들기/편집)
- Databricks SQL entitlement
- Warehouse CAN USE
- 데이터
SELECT권한 - Space ACL (CAN EDIT 이상)
“무료”의 정확한 의미
사용자 체감은 “LLM 토큰 과금이 없다/덜하다”에 가깝습니다.
하지만 문서 기준으로 Genie는 SQL Warehouse를 통해 실제 쿼리를 실행합니다.
즉,
- 질문 자체를 토큰 단위로 외부 LLM API에 직접 과금시키는 DIY 형태와는 다름
- 대신 Databricks/Azure Databricks 사용 비용(특히 SQL warehouse compute)은 발생할 수 있음(환경/플랜에 따라)
특히 “공간의 compute credential이 embed”되는 구조이므로, 비용/권한/남용 방지를 운영정책으로 잡아야 합니다.
성능을 끌어올리는 실전 설계(베스트 프랙티스 핵심)
Microsoft Learn의 권장사항 중 실무에서 바로 먹히는 포인트만 압축하면
- 지침은 “적고 명확하게”
- 지침이 많아지면 장문 대화에서 우선순위가 흐려져 품질 저하 가능
- 복잡한 질문은 “예제 SQL”이 답
- Genie는 검증된 SQL 예시로 학습/매칭하며 정확도를 끌어올림
- 표준 지표는 SQL expressions로 정의
- revenue, active_customers 같은 자주 쓰는 개념은 재사용 가능한 정의로 박아두기
- Prompt matching(값/철자 보정) 적극 활용
- 사용자의 표현을 실제 컬럼/값에 매칭해 정확도를 높이는 기능을 제공
- 테이블은 “작게, 목적별로”
- 공간당 30개 제한도 있고, 많아질수록 혼란이 커집니다.
👉 부서/업무 단위로 여러 공간으로 쪼개는 게 보통 더 잘 됩니다.
Genie 도입 시 반드시 잡아야 할 가이드
권한/접근통제(가장 중요)
- Unity Catalog에서 최소권한(Least Privilege)으로
SELECT부여 - Space ACL(CAN USE/CAN EDIT/CAN MANAGE) 정책을 명확히 분리
- Embedded compute credential 구조 이해
- 공간 작성자의 warehouse 권한이 공간에 embed됨
- 따라서 작성자는 “쿼리 실행 통로”를 제공하는 셈 → 작성자 계정/권한 통제가 중요
데이터 노출/프롬프트 인젝션 대비
- Genie에 넣는 지침/예제 SQL에 민감정보(토큰, 내부 URL, 개인식별정보, 운영자 계정정보) 절대 금지
- 사용자가 “권한 없는 데이터”를 물으면 빈 응답이 나오는 동작이 문서에 있습니다. (오탐 방지 포인트)
- 민감 컬럼은 마스킹/뷰 계층/행/열 보안 정책으로 통제(Genie 이전 계층에서 강제)
감사/추적(감사 대응)
- “누가 어떤 질문을 했고 어떤 결과가 나갔는지”는 보안감사에서 핵심 쟁점이 됩니다.
- Genie는 대화/공간 데이터를 API로도 가져올 수 있고(관리/분석 목적), 대화 메시지 조회/목록 조회 엔드포인트도 제공합니다.
👉 내부적으로는 SIEM 연계(감사로그 수집)까지 염두에 두시는 게 좋습니다.
비용/남용 방지
- 워크스페이스 전체 처리량 제한(UI 분당 20, API 분당 5 best effort)을 고려해 Rate limit / 사용자 가이드 필요
- 질문 템플릿/샘플 질문을 제공해 “큰 테이블 풀스캔 유도 질문”을 줄이기
- Warehouse 비용은 운영정책(업무시간/쿼터/모니터링)으로 통제
Genie API로 “사내 챗봇/에이전트”에 붙이는 방법(구체 예시)
Microsoft Learn에 Genie API 통합 방법이 꽤 구체적으로 나옵니다.
인증 방식
- 브라우저 기반 사용자: OAuth(U2M)
- 서버/백엔드: 서비스 주체(OAuth M2M) 권장
기본 호출 흐름(최소 구현)
- (선택) 공간 생성
POST /api/2.0/genie/spaces
Authorization: Bearer <token>
...
- 대화 시작(첫 질문)
POST /api/2.0/genie/spaces/{space_id}/start-conversation
Authorization: <token>
{
"content": "<your question>"
}
- 생성된 SQL/상태 조회(폴링)
conversation_id,message_id로 조회
- 쿼리 결과 가져오기
GET /api/2.0/genie/spaces/{space_id}/conversations/{conversation_id}/messages/{message_id}/query-result/{attachment_id}
Authorization: Bearer <token>
추가 운영 팁
- 1~5초 폴링, 보통 10분 내 타임아웃 권장
- API 결과는 최대 5,000행 제한
“이렇게 도입하면 실패 확률이 낮습니다” (추천 운영 모델)
- 파일럿(1개 부서, 1개 업무)
- 테이블 5~10개 수준으로 시작
- “자주 묻는 질문 Top 20” + “정답 SQL 예제”를 먼저 넣기
- 지식 저장소 강화
- 표준 지표(measure)/표현식/조인 규칙을 점진적으로 확장
- 지침은 짧고 강하게 유지
- 보안/권한 표준화
- UC 권한 템플릿, 공간 ACL 템플릿, 작성자(embedded credential) 정책 확정
- 운영/감사 체계
- 질문/사용량/비용/오답 패턴 모니터링
- API 기반 수집 또는 감사로그 연계(가능하면 SIEM)
Databricks Genie는 “Text-to-SQL 구현”이 아니라, ‘잘 큐레이션된 Genie Space를 운영’하는 문제로 바꿔줍니다.
그래서 성공의 관건은 데이터/용어/정답 SQL/권한/비용을 공간 운영 체계로 잡는 것입니다.
728x90
그리드형(광고전용)
댓글