요즘은 데이터를 직접 조회하는 대신 자연어로 AI에게 질문하는 일이 점점 자연스러워지고 있습니다.
“지난달 매출 알려줘.”
“활성 고객 수가 얼마나 돼?”
“지난해보다 매출이 얼마나 늘었어?”
그런데 실제 업무에서 사용해보면 이야기가 조금 달라집니다. 간단한 질문에는 꽤 잘 답하는데, 정작 업무에서 필요한 질문을 하면 엉뚱한 답이 나오기도 합니다. 더 어려운 점은 그 답이 틀렸는지조차 알아채기 어려울 때가 있다는 것입니다.
왜 그럴까요? 상당수의 경우 문제는 AI가 아니라, AI가 데이터를 이해하는 데 필요한 정보가 충분히 제공되지 않았다는 데 있습니다.
1. AI가 데이터를 잘 이해하려면
흔히 이렇게 생각합니다. “데이터가 많으면 AI도 잘 작동하겠지.” 하지만 꼭 그렇지는 않습니다.
AI가 데이터를 잘 활용하려면 데이터의 양만큼이나 중요한 것이 있습니다. 그 데이터가 무엇을 의미하는지, 어떤 규칙으로 만들어졌는지, 어떻게 사용해야 하는지가 명확해야 합니다.
사람은 모르면 물어볼 수 있습니다. 새로 합류한 팀원도 시간이 지나면 자연스럽게 익히고, 모르는 것이 있으면 담당자에게 물어볼 수도 있습니다.
“여기서 매출은 취소 건을 제외한 금액이죠?”
AI는 그렇지 않습니다. 컬럼 이름, 테이블 설명, 코드값의 의미, 비즈니스 규칙 — 이런 것들이 명확하게 적혀 있지 않으면 AI는 추측할 수밖에 없습니다. 그리고 그 추측이 틀리면 에러도 없이 그냥 틀린 숫자가 나옵니다.
그래서 AI 시대에는 데이터 자체뿐만 아니라 데이터를 설명하는 정보도 중요해집니다.
2. 사람이 보면 쉬운데 AI에게는 어려운 것
몇 가지 예를 살펴보겠습니다.
이런 컬럼이 수백 개의 테이블에 퍼져 있다면, AI가 모든 걸 정확하게 추론하길 기대하기는 어렵습니다.
3. 그래서 ‘데이터를 설명하는 것’이 중요하다
AI가 데이터를 제대로 활용하게 하려면, 그동안 사람만 알고 있던 맥락을 데이터와 함께 남겨둬야 합니다. 이런 정보를 메타데이터라고 합니다.
읽기 쉬운 이름으로 짓기
컬럼 설명 달기
도구마다 방법이 조금씩 다릅니다. BigQuery는 OPTIONS(description=...), Snowflake는 COMMENT, dbt를 쓴다면 schema.yml에 description을 달 수 있습니다. 방법은 달라도 목적은 같습니다. AI가 읽을 수 있는 형태로 의미를 남겨두는 것입니다.
데이터 사전 만들기
| 지표명 | 정의 | 주의사항 |
|---|---|---|
| net_revenue_usd | 취소·환불 제외 후 확정 매출 (USD) | 세금 포함, 쿠폰 할인 반영 |
| is_active | 최근 90일 내 구매 이력 있는 고객 | 탈퇴·삭제 고객 제외 |
| order_status | 주문 처리 상태 | ‘cancelled’, ‘refunded’는 집계 제외 |
4. 비즈니스 규칙을 데이터 모델에 담기
문서에 비즈니스 규칙을 적어두는 것만으로 끝낼 수도 있지만, 반복해서 사용하는 규칙이라면 데이터 모델에 직접 반영하는 방법도 있습니다.
예를 들어 매출 정의가 “결제 완료된 주문 중 취소와 환불을 제외한 금액”이라면, 이 규칙을 매번 쿼리에 작성하는 대신 View로 만들어두는 방식입니다.
이렇게 하면 AI가 매번 비즈니스 규칙을 추측해야 하는 부담도 줄어듭니다.
5. Text-to-SQL — 자연어로 데이터를 조회한다
이제 처음의 질문으로 돌아가 보겠습니다. “지난달 매출 얼마야?” — 이 질문에 AI가 데이터베이스를 조회해서 답할 수 있을까요? 가능합니다. 그 대표적인 방법이 바로 Text-to-SQL입니다.
⚠️ 문법적으로 올바른 SQL ≠ 비즈니스적으로 올바른 SQL
SQL이 실행돼도 결과가 틀릴 수 있습니다. 취소 주문이 포함됐거나, 잘못된 컬럼을 골랐거나. 에러 없이 틀린 숫자가 나오는 게 데이터 조회의 가장 골치 아픈 문제입니다.