BigQuery AI 함수 비용 최적화: 토큰 과금을 늘리지 않는 설계
요약
BigQuery의 AI 함수(AI.GENERATE 등)는 토큰 단위로 과금되므로, 일반적인 바이트 스캔 방식과는 비용 관리 접근법이 다릅니다. 본 글은 AI 함수의 정확한 과금 구조를 분석하고, 불필요한 호출을 줄이는 3가지 설계 패턴과 비용 모니터링 방법을 제시합니다.
핵심 포인트
- AI 함수는 입력/출력 토큰 단위로 과금되므로 과금 구조 이해가 필수입니다.
- 전체 행에 AI 함수를 적용하는 대신 대상을 필터링하여 처리해야 합니다.
- 결과를 캐시 테이블에 저장하고, 경량 모델로 사전 스크리닝하여 비용을 최적화할 수 있습니다.
이 글에서 해결하는 문제
BigQuery의 AI 함수(AI.GENERATE, AI.CLASSIFY, AI.SCORE 등)를 사용해 보니 예상치 못한 청구가 발생했다는 사례가 증가하고 있습니다.
AI 함수는 토큰 단위로 과금되는 모델입니다. 일반적인 BigQuery 쿼리의 바이트 스캔 과금과는 구조가 다르기 때문에, 기존의 비용 관리 감각이 통하지 않습니다. 본 글에서는 AI 함수의 과금 구조를 정리하고, 비용을 늘리지 않는 설계 패턴을 설명합니다.
AI 함수 과금 구조 정확히 파악하기
AI 함수는 Vertex AI의 모델 API를 내부적으로 호출합니다. 따라서 과금은 다음 두 축으로 이루어집니다.
- 입력 토큰: 프롬프트 문자열 + 각 행의 데이터를 토큰화한 수 -
- 출력 토큰: 모델이 생성한 응답의 토큰 수
BigQuery 스캔 과금은 평소와 같이 발생하지만, AI 함수의 비용 대부분은 토큰 과금입니다.
모델별 단가 (2025년 기준 예상)
-- 사용 모델을 확인하는 쿼리 예시
SELECT
model,
...
Gemini 1.5 Flash는 저비용이지만, 출력 품질 면에서는 Gemini 1.5 Pro보다 떨어지는 경우가 있습니다. 태스크에 따라 모델을 선택하는 것이 비용 최적화의 첫걸음입니다.
비용을 늘리는 전형적인 실수
실수 1: 전체 행에 AI 함수를 실행하기
가장 흔한 실수는 필터링 없이 모든 행에 AI 함수를 적용하는 것입니다.
-- NG: 전체 처리 (비용 높음)
SELECT
product_id,
...
-- OK: 대상을 좁혀서 처리
SELECT
product_id,
...
실수 2: 프롬프트에 불필요한 정보 포함하기
입력 토큰은 전체 프롬프트로 계산됩니다. 여분의 정보를 포함하면 그것만으로도 비용이 증가합니다.
-- NG: 장황한 프롬프트
SELECT
AI.CLASSIFY(
...
-- OK: 간결한 프롬프트
SELECT
AI.CLASSIFY(
...
AI.CLASSIFY에는 분류 라벨을 배열로 전달할 수 있습니다. 자유 형식의 프롬프트보다 간결하게 작성할 수 있고, 출력도 안정적입니다.
실수 3: max_output_tokens를 설정하지 않기
출력 토큰은 상한을 지정하지 않으면 모델이 장문(長文)을 생성하여 비용이 급등할 수 있습니다.
-- OK: 출력 토큰에 상한 설정
SELECT
AI.GENERATE(
...
비용 최적화 설계 패턴
패턴 1: 배치 크기를 줄여 단계적으로 실행하기
한 번에 전체를 처리하는 것이 아니라, 매일의 차이분만으로 범위를 좁힙니다.
-- 전날 추가/수정된 레코드만 처리
SELECT
product_id,
...
패턴 2: 결과를 테이블에 캐시하기
동일한 입력에 대해 AI 함수를 반복적으로 호출하지 않도록, 결과를 테이블에 저장합니다.
-- AI 처리 결과를 전용 테이블에 저장
CREATE OR REPLACE TABLE `project.dataset.product_ai_cache`
AS
...
이후의 쿼리는 캐시 테이블을 참조합니다. AI 함수의 호출은 신규 레코드에만 한정됩니다.
패턴 3: 경량 모델로 사전 필터링하기
고정밀도가 필요한 처리를 하기 전에, 경량 모델로 사전에 스크리닝(screening)합니다.
-- Step1: Flash 모델로 대용량 데이터를 스크리닝
CREATE TEMP TABLE screened AS
SELECT *
...
비용 모니터링 시스템 구축하기
AI 함수의 비용은 INFORMATION_SCHEMA에서 모니터링할 수 있습니다.
-- AI 함수 비용/토큰 사용량을 일별 집계
SELECT
DATE(creation_time) AS execution_date,
...
스케줄 쿼리에 비용 상한 설정하기
스케줄 쿼리로 AI 함수를 주기적으로 실행하는 경우, 행 수의 상한을 명시적으로 설정합니다.
-- 일일 처리 행 수를 상한으로 설정
WITH target_rows AS (
SELECT
...
비용 감각의 기준
실무에서의 참고값으로, 다음과 같은 규모를 가정하여 설계해야 합니다.
처리 규모 | 예상 토큰 수 | 대략적인 비용 감각
|---|---|
| 상품 설명 1,000건 분류 | 입력 50만 / 출력 5만 토큰 | 수십~수백 엔 규모 |
...
처리 규모가 큰 경우에는 먼저 소규모로 테스트하고, 토큰 소비량을 실측한 후에 본 서비스 배포를 판단해 주십시오.
요약
BigQuery의 AI 함수 비용을 최적화하는 포인트는 다음과 같은 4가지입니다.
- 대상을 좁히기: WHERE 절로 필터링한 후 처리하기 -
- 프롬프트를 간결하게: 불필요한 문장을 줄이고, 전용 함수(AI.CLASSIFY 등)를 활용하기 -
- 출력을 제한하기: max_output_tokens를 설정하여 상한을 관리하기 -
- 결과를 캐시하기: 처리 완료 플래그를 관리하여 재실행 방지하기
AI 함수는 적절하게 설계하면 데이터 분석의 질을 크게 높일 수 있습니다. 비용을 파악한 후, 단계적으로 활용 범위를 넓혀 나가는 것을 권장합니다.
데이터 기반 인프라 설계, GA4 분석 자동화, AI 활용에 대한 상담은 아래에서 문의해 주십시오.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기