FactStack

BigQuery AI.AGG란, SQL 한 줄로 대량 텍스트 의미 집계

데이터 인프라

한마디로

수백만 건의 로그나 상담 내용을 SQL 하나로 읽고 핵심 주제를 요약해 주는 BigQuery 집계 함수예요

한눈에

AI.AGG는 BigQuery GoogleSQL에 내장된 의미 기반 집계 함수이고, 현재 프리뷰 상태예요. 행을 배치로 나눠 병렬로 Gemini에 보내고 중간 요약을 같은 지시문으로 다시 합치는 방식이라, 외부 map-reduce 파이프라인이나 Python 스크립트 없이 대량 비정형 텍스트를 SQL 안에서 요약할 수 있습니다. 고객 상담 전사본 같은 비정형 텍스트를 다루는 데이터 팀의 분석 흐름이 단순해질 수 있어요.

실무 맥락: 왜 지금까지 어려웠나

BigQuery는 합계, 활성 사용자 수, 평균 같은 정형 데이터 집계에는 오래전부터 강했습니다. 반면 수백만 행의 텍스트에서 전체 주제를 뽑아내는 일은 SQL 엔진이 직접 하지 못했어요. AI.GENERATE나 AI.CLASSIFY 같은 행 단위 AI 함수가 나왔어도, 데이터 전체를 한 번에 보려면 LLM 컨텍스트 윈도우라는 벽에 부딪힙니다. 수백만 행을 프롬프트 하나에 넣으면 잘리거나 실행이 실패해요. 그래서 데이터 엔지니어링 팀이 외부에서 map-reduce 파이프라인을 짜고 rate limit 백오프를 관리하며 청크 요약을 이어 붙여야 했습니다.

AI.AGG는 어떻게 동작하나

AI.AGG는 이 과정을 BigQuery 엔진 안에서 처리합니다. 단계는 이래요.

  • 행 검증: 한 행이 최대 한도(10 MiB)를 넘으면 해당 행을 버리거나 오류를 반환합니다.
  • 배치 구성: 선택한 Gemini 엔드포인트의 토큰 한도에 맞게 행을 묶어요.
  • 병렬 추론: 같은 자연어 지시문을 각 배치에 병렬로 적용해 Vertex AI에서 중간 요약을 만듭니다.
  • 재귀 합성: 중간 결과를 다시 묶어 같은 지시문으로 LLM에 보내고, SQL GROUP BY 그룹당 문자열 하나가 나올 때까지 반복해요.

단계마다 풀 사이즈 LLM을 쓰기 때문에 경량 프록시 모델을 쓸 수 있는 AI.CLASSIFY 같은 행 단위 함수와는 다릅니다. 텍스트 외에 Object Tables와 OBJ.GET_ACCESS_URL로 Cloud Storage의 이미지도 입력으로 쓸 수 있어요.

활용 패턴: 요약에서 자동 라벨링까지

원문이 소개한 활용은 크게 두 가지예요.

  • 로그 진단 요약: 시스템 컴포넌트별로 로그를 GROUP BY해서 사람이 읽을 수 있는 진단 요약을 만듭니다. 이상 징후를 찾기 전에 해당 컴포넌트의 정상 동작을 먼저 설명하게 지시하면 정상 로그에서 오류를 지어내는 경향을 줄일 수 있어요.
  • 지원 티켓 자동 분류: 카테고리가 정리되지 않은 티켓 텍스트를 AI.AGG로 읽혀 카테고리 목록을 JSON 배열로 출력하게 합니다. 이 배열을 JSON_VALUE_ARRAY로 풀어 AI.CLASSIFY의 라벨로 넘기면 라벨링 파이프라인 전체를 SQL 안에서 구성할 수 있습니다.

프롬프트는 대화체가 아니라 API 계약처럼 쓰라는 권고가 눈에 띄어요. 예를 들어 '유효한 JSON 배열 하나만 반환하고 마크다운 코드 블록이나 설명 문장은 넣지 마라'처럼 출력 형식을 명시하고, 필드 앞에 '- Description: ' 같은 라벨을 붙여 필드가 섞이지 않게 합니다. 정보가 없으면 추측하지 말고 null을 돌려주게 하고, 기대하는 구조의 예시를 프롬프트에 직접 넣는 것도 방법이에요.

실무 적용 체크리스트

  • STRUCT로 여러 컬럼을 넘길 때 필드 하나라도 NULL이면 그 행 전체가 조용히 버려집니다. IFNULL()로 nullable 필드를 감싸세요.
  • 재귀 배치 구조상 Gemini로 가는 총 토큰은 원본 데이터 토큰보다 많아요. WHERE와 LIMIT으로 먼저 줄이고, AI.COUNT_TOKENS로 실행 전에 비용을 추정하세요.
  • 크고 정적인 데이터셋을 반복 참조하는 워크플로라면 Gemini Context Caching으로 입력 토큰 비용과 지연을 줄일 수 있습니다.
  • 프리뷰 제한은 그룹당 출력 10,000 토큰, 행당 10 MiB예요. 멀티모달 배열은 행당 이미지를 10개 미만으로 두지 않으면 조용히 건너뛸 수 있습니다.
  • 안정성을 위해 쿼리당 최대 2천만 행, 최대 1,000개 그룹까지만 처리하길 권장해요.
  • VPC Service Controls를 지원하고, 배치 처리 중 일시 오류가 나면 쿼리 전체가 아니라 거부된 행만 건너뛰고 계속 진행합니다.

자주 묻는 질문

AI.AGG란 무엇인가요?

BigQuery GoogleSQL에 내장된 의미 기반 집계 함수로, 현재 프리뷰 상태예요. 자연어 지시문을 수백만 행 데이터에 적용해 GROUP BY 그룹별 요약 문자열을 만들어 줍니다.

컨텍스트 윈도우보다 큰 데이터는 어떻게 처리하나요?

행을 토큰 한도에 맞는 배치로 나눠 병렬로 Gemini에 보내 중간 요약을 만든 뒤, 그 요약을 같은 지시문으로 다시 합치는 과정을 반복합니다. 그룹당 최종 결과 하나가 나올 때까지 재귀적으로 이어져요.

비용은 어떻게 관리하나요?

재귀 배치 때문에 소스 데이터보다 더 많은 토큰이 쓰입니다. WHERE와 LIMIT 사전 필터링, AI.COUNT_TOKENS 비용 추정, Gemini Context Caching 활용이 권장돼요.

에디터 노트

VoC 요약처럼 반복 수요가 큰 비정형 텍스트 분석을 SQL만으로 끝낼 수 있다는 점이 실무 가치예요. 다만 재귀 배치로 토큰이 소스보다 늘어나고 프리뷰 제한(그룹당 출력 10,000 토큰, 쿼리당 2천만 행 권장)이 있어서, 전체 데이터에 바로 돌리기보다 필터링과 토큰 추정부터 거치는 편이 안전합니다.

참고 출처 | 원문 보기

태그

용어 풀이
BigQuery
구글 클라우드의 서버리스 데이터 웨어하우스
AI.AGG
BigQuery 의미 기반 집계 함수(프리뷰)
VoC 분석
고객 상담이나 리뷰 같은 고객의 소리 텍스트 분석
Gemini
구글의 거대 언어 모델 제품군
공유

관련 마테크