왜 SQL에 AI 함수가 필요한가요?
전통적으로 텍스트 분류, 감정 분석, 정보 추출 같은 작업을 하려면 Python 코드를 작성하고, ML 모델을 별도로 호출해야 했습니다. Databricks의 AI 함수 를 사용하면 이 모든 것을 SQL 쿼리 한 줄 로 수행할 수 있습니다.💡 AI 함수는 내부적으로 Model Serving 엔드포인트 를 호출합니다. Foundation Model API에서 제공하는 LLM(Llama, DBRX 등)이나 외부 모델(OpenAI, Anthropic) 엔드포인트를 사용할 수 있습니다. SQL Warehouse(Pro 또는 Serverless)에서 실행해야 합니다.
ai_query() — 범용 LLM 호출
가장 유연한 AI 함수로, 자유 형식의 프롬프트를 LLM에 전달하고 응답을 받습니다.기본 문법
사용 예시
사용 가능한 엔드포인트
| 엔드포인트 이름 | 모델 | 설명 |
|---|---|---|
databricks-meta-llama-3-3-70b-instruct | Llama 3.3 70B | Meta의 최신 오픈소스 LLM입니다 |
databricks-dbrx-instruct | DBRX | Databricks가 만든 오픈소스 LLM입니다 |
databricks-gte-large-en | GTE Large | 영어 텍스트 임베딩 모델입니다 |
databricks-bge-large-en | BGE Large | 영어 텍스트 임베딩 모델입니다 |
| 사용자 지정 | 커스텀 모델 | Model Serving에 배포한 사용자 모델입니다 |
| 사용자 지정 | 외부 모델 | OpenAI, Anthropic 등의 프록시 엔드포인트입니다 |
💡 Pay-per-token 엔드포인트: databricks- 접두사가 붙은 내장 엔드포인트는 별도 설정 없이 바로 사용할 수 있으며, 사용한 토큰 수에 따라 과금됩니다.
ai_classify() — 텍스트 분류
텍스트를 미리 정의한 카테고리 중 하나로 분류합니다. 별도의 학습 데이터 없이 LLM의 이해력만으로 분류를 수행합니다.문법
예시
ai_extract() — 정보 추출
텍스트에서 특정 정보를 추출합니다. 정규 표현식으로는 어려운 비정형 텍스트에서도 LLM의 이해력으로 정확하게 추출할 수 있습니다.문법
예시
ai_gen() — 텍스트 생성
주어진 컨텍스트를 기반으로 새로운 텍스트를 생성합니다.예시
ai_parse_document() — 문서 파싱
PDF, DOCX, PPTX, 이미지 등의 비정형 문서에서 텍스트를 추출합니다.문법
예시
지원 파일 형식
| 형식 | 확장자 | 설명 |
|---|---|---|
.pdf | 텍스트 기반 및 스캔된 PDF 모두 지원합니다 | |
| Word | .docx | Microsoft Word 문서입니다 |
| PowerPoint | .pptx | Microsoft PowerPoint 프레젠테이션입니다 |
| 이미지 | .png, .jpg, .tiff | OCR로 텍스트를 추출합니다 |
| HTML | .html | 웹 페이지 내용을 추출합니다 |
ai_similarity() — 텍스트 유사도
두 텍스트 간의 의미적 유사도를 0~1 사이의 점수로 반환합니다.ai_forecast() 및 ai_anomaly_detection() — 시계열 분석
SQL만으로 시계열 예측과 이상 감지를 수행할 수 있습니다.성능과 비용 최적화
권장 사항
| 항목 | 권장 사항 |
|---|---|
| 배치 크기 | 한 번에 수천 행을 처리하면 오버헤드가 줄어듭니다. LIMIT으로 테스트 후 전체 실행을 권장합니다 |
| 모델 선택 | 간단한 분류는 작은 모델, 복잡한 생성은 큰 모델을 사용합니다 |
| 캐싱 | 동일한 입력에 대한 반복 호출은 결과를 테이블에 저장하여 재사용합니다 |
| failOnError | 대량 처리 시 failOnError => false로 설정하여 일부 실패가 전체를 중단하지 않도록 합니다 |
| 프롬프트 최적화 | 프롬프트를 짧고 명확하게 작성하면 토큰 비용이 절약됩니다 |
| Provisioned Throughput | 대량/정기적 사용 시 Pay-per-token보다 비용 효율적입니다 |
비용 구조
💡 토큰(Token)이란? LLM이 텍스트를 처리하는 기본 단위입니다. 영어 기준 대략 1단어 ≈ 11.5 토큰이며, 한국어는 1글자 ≈ 13 토큰으로 다소 많이 소모됩니다. 프롬프트(입력)와 응답(출력) 모두 토큰 수로 과금됩니다.
실무 활용 시나리오
시나리오 1: 고객 서비스 자동 분류 + 우선순위 파이프라인
시나리오 2: 비정형 문서 → 구조화 데이터 파이프라인
정리
| AI 함수 | 용도 | 반환 타입 |
|---|---|---|
| ai_query() | 범용 LLM 호출 (요약, 생성, 번역, 분석) | STRING 또는 지정 STRUCT |
| ai_classify() | 텍스트를 사전 정의 카테고리로 분류 | STRING |
| ai_extract() | 텍스트에서 특정 정보 추출 | STRUCT |
| ai_gen() | 컨텍스트 기반 텍스트 생성 | STRING |
| ai_parse_document() | PDF, 이미지 등에서 텍스트 추출 | STRING |
| ai_similarity() | 두 텍스트 간 의미적 유사도 측정 | DOUBLE |
| ai_forecast() | 시계열 예측 | TABLE |
| ai_anomaly_detection() | 시계열 이상 감지 | TABLE |