피드로 돌아가기
컬리 기술블로그Backend
원문 읽기
BigQuery와 Gemini로 리뷰 분석 업무 자동화하기
Kurly가 BigQuery에서 Gemini Pro를 ML.GENERATE_TEXT 함수로 호출해 리뷰 요약·감정 분석·홍보 문구 생성 자동화
AI 요약
Context
리뷰 분석, 키워드 추출, 카테고리 분류, 감정 분석 같은 텍스트 처리 업무를 수행하려면 별도의 딥러닝 모델을 구축해야 했고, PM과 엔지니어가 모델 구현에 소요되는 시간이 증가했습니다.
Technical Solution
- BigQuery에서 Gemini Pro 호출: Vertex AI 연결(Connection) 생성 및 데이터셋에 Gemini 모델 추가 후 ML.GENERATE_TEXT 함수로 SQL 쿼리 내에서 직접 호출
- 프롬프트에 테이블 데이터 결합: CONCAT 함수로 리뷰 텍스트와 사용자 지시를 합쳐 서브쿼리의 prompt 컬럼으로 전달
- JSON 응답 형식 지정: 할루시네이션(hallucination) 방지를 위해 STRUCT의 flatten_json_output 파라미터와 함께 JSON 형식 응답 요청
- 배치 처리 기법 도입: 리뷰 100개씩 JSON 배열로 묶어 batch_id로 관리하는 중간 테이블 생성 후 Gemini 처리로 동시 처리량 증대
- RAI 기능으로 결과 검증: ml_generate_text_rai_result로 안전 속성 위반 여부 확인, finish_status로 종료 상태(완료/토큰 초과/안전 필터) 파악
Impact
아티클에 정량적 수치가 명시되지 않음
Key Takeaway
BigQuery 내에서 LLM을 직접 호출할 수 있으면 별도 모델 개발 없이 SQL만으로 다양한 NLP 작업을 수행 가능하며, JSON 응답 형식 지정과 배치 처리를 조합하면 대량 데이터 처리 시 정확성과 처리량을 동시에 확보할 수 있습니다.
실천 포인트
BigQuery를 사용하는 데이터 분석 팀에서 고객 리뷰나 피드백 같은 텍스트 데이터를 처리할 때, CONCAT으로 프롬프트를 구성해 ML.GENERATE_TEXT 함수를 호출하고 응답 형식을 JSON으로 지정하면 할루시네이션을 줄이고 결과를 파싱 가능한 형태로 얻을 수 있습니다. 리뷰를 100개 단위로 배치 JSON 배열로 묶으면 API 호출 횟수를 줄이면서 동시에 더 많은 데이터를 처리할 수 있습니다.