02. AI 기반 토픽 분류 (LLM & Gemini)
1. 개요 및 시나리오
상황: “기타(Others)“로 분류된 티켓이 수천 장입니다. 상담원이 일일이 읽고 분류하기엔 너무 많습니다.
“이거 AI가 대신 읽고 분류해주면 안 되나요?”
과거에는 수만 장의 학습 데이터가 필요했지만, 이제는 **LLM(Large Language Model)**에게 “이거 읽고 분류해줘”라고 시키면 됩니다. Google Gemini를 BigQuery 안에서 바로 불러와서 사용해봅시다.
2. BigQuery ML + Gemini 연결
BigQuery에서 ML.GENERATE_TEXT 함수를 사용하면 Gemini 모델(gemini-pro)을 호출할 수 있습니다.
(참고: 별도의 Google Cloud Vertex AI 연결 설정이 필요할 수 있습니다.)
❓ 문제 1: Gemini 모델 생성 (DDL)
Q. BigQuery에서 gemini-pro를 기반으로 한 원격 모델(remote_model)을 생성하는 쿼리를 작성하세요.
(실습 환경에서는 이미 생성되어 있다고 가정하고 진행합니다.)
BigQuery (SQL)
Hint: CREATE MODEL 구문을 사용하며, REMOTE_SERVICE_TYPE을 지정해야 합니다.
정답 코드 보기
-- 모델 생성 예시 (관리자 권한 필요)
CREATE OR REPLACE MODEL `your-project-id.retail_analytics_us.gemini_pro_model`
REMOTE WITH CONNECTION `projects/your-project-id/locations/us/connections/vertex-ai`
OPTIONS(endpoint = 'gemini-pro');3. 프롬프트 엔지니어링 (Prompt Engineering)
AI에게 일을 잘 시키려면 **질문(Prompt)**을 잘 해야 합니다.
❓ 문제 2: 티켓 분류 프롬프트 작성
Q. 다음 카테고리 중 하나로 티켓을 분류하도록 프롬프트를 작성하고, ML.GENERATE_TEXT로 실행하세요.
- Categories:
Product Quality,Shipping,Payment,General Inquiry
BigQuery (SQL)
BigQuery에서는 CONCAT으로 프롬프트를 조립합니다.
정답 코드 보기
SELECT
ticket_id,
issue_type as original_label,
ml_generate_text_result['candidates'][0]['content']['parts'][0]['text'] AS ai_classification
FROM
ML.GENERATE_TEXT(
MODEL `your-project-id.retail_analytics_us.gemini_pro_model`,
(
SELECT
ticket_id,
issue_type,
CONCAT(
'You are a customer service manager. Classify the following ticket into one of these categories: ',
'[Product Quality, Shipping, Payment, General Inquiry]. ',
'Do not explain, just return the category name. ',
'Ticket comments: ', comment
) AS prompt
FROM `your-project-id.retail_analytics_us.cs_tickets_dummy`
WHERE status = 'open'
LIMIT 5
),
STRUCT(
0.0 AS temperature, -- 일관된 답변을 위해 0으로 설정
10 AS max_output_tokens
)
);4. 결과 검증 및 요약 생성
단순 분류뿐만 아니라, **“3줄 요약”**이나 **“답변 초안 작성”**도 가능합니다.
❓ 문제 3: 티켓 요약 및 답변 추천
Q. “티켓 내용을 3줄로 요약하고, 상담원이 보낼 답변 초안을 작성해줘”라는 프롬프트를 실행해보세요.
BigQuery (SQL)
정답 코드 보기
SELECT
ticket_id,
ml_generate_text_result['candidates'][0]['content']['parts'][0]['text'] AS ai_response
FROM
ML.GENERATE_TEXT(
MODEL `your-project-id.retail_analytics_us.gemini_pro_model`,
(
SELECT
ticket_id,
CONCAT(
'Summarize this ticket in 1 sentence and suggest a polite response draft. ',
'Ticket: ', comment
) AS prompt
FROM `your-project-id.retail_analytics_us.cs_tickets_dummy`
LIMIT 3
),
STRUCT(0.5 AS temperature, 200 AS max_output_tokens)
);💡 요약
- BigQuery ML: SQL만으로 최신 LLM을 대용량 데이터에 적용할 수 있습니다.
- Prompt Engineering: AI에게 역할을 부여하고(Role), 제약조건을 걸고(Constraints), 예시를 주면(Few-shot) 성능이 올라갑니다.
- 활용: 자동 분류, 요약, 감성 분석, 번역 등 무궁무진합니다.
다음 챕터에서는 **전통적인 머신러닝(Classification)**을 사용하여 LLM보다 더 빠르고 싸게 만족도를 예측해봅니다.